All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size
@ 2017-03-24 16:20 Sébastien Szymanski
  2017-03-24 16:20 ` [Buildroot] [PATCH 2/4] package/mke2img: use mkfs to generate rootfs image Sébastien Szymanski
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Sébastien Szymanski @ 2017-03-24 16:20 UTC (permalink / raw)
  To: buildroot

Auto-calculation of the rootfs size cannot be done in a reliable way as
it depends on the host filesystem and is broken on non ext4 host. [1] [2]
So let the user specify the size he wants for his rootfs.

[1] https://bugs.busybox.net/show_bug.cgi?id=8831
[2] https://bugs.busybox.net/show_bug.cgi?id=9496

Signed-off-by: S?bastien Szymanski <sebastien.szymanski@armadeus.com>
---
 Config.in.legacy        | 14 ++++++++++++++
 fs/ext2/Config.in       | 12 ++----------
 fs/ext2/ext2.mk         |  1 -
 package/mke2img/mke2img | 20 +-------------------
 4 files changed, 17 insertions(+), 30 deletions(-)

diff --git a/Config.in.legacy b/Config.in.legacy
index 4e14a98..dfd4d67 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -145,6 +145,20 @@ endif
 ###############################################################################
 comment "Legacy options removed in 2017.05"
 
+config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS
+	int "extra size in blocks has been removed"
+	default 0
+	help
+	  Since the support for auto calculation of the filesystem size has been
+	  removed, this option is now useless and must be 0.
+	  You may want to check that BR2_TARGET_ROOTFS_EXT2_BLOCKS matchs
+	  your needs.
+
+config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS_WRAP
+	bool
+	default y if BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS != 0
+	select BR2_LEGACY
+
 config BR2_PACKAGE_SYSTEMD_KDBUS
 	bool "systemd-kdbus has been removed"
 	select BR2_LEGACY
diff --git a/fs/ext2/Config.in b/fs/ext2/Config.in
index b8eeed2..2f22762 100644
--- a/fs/ext2/Config.in
+++ b/fs/ext2/Config.in
@@ -45,21 +45,13 @@ config BR2_TARGET_ROOTFS_EXT2_LABEL
 	string "filesystem label"
 
 config BR2_TARGET_ROOTFS_EXT2_BLOCKS
-	int "exact size in blocks (leave at 0 for auto calculation)"
-	default 0
+	int "exact size in blocks"
+	default 65536
 
 config BR2_TARGET_ROOTFS_EXT2_INODES
 	int "exact number of inodes (leave at 0 for auto calculation)"
 	default 0
 
-config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS
-	int "extra size in blocks" if BR2_TARGET_ROOTFS_EXT2_BLOCKS = 0
-	default 0
-	help
-	  Enter here the number of extra blocks of free space you
-	  want on your filesystem. By default, Buildroot will not
-	  leave much space free.
-
 config BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES
 	int "extra inodes" if BR2_TARGET_ROOTFS_EXT2_INODES = 0
 	default 0
diff --git a/fs/ext2/ext2.mk b/fs/ext2/ext2.mk
index cfb34c4..30f1d17 100644
--- a/fs/ext2/ext2.mk
+++ b/fs/ext2/ext2.mk
@@ -9,7 +9,6 @@ EXT2_OPTS = -G $(BR2_TARGET_ROOTFS_EXT2_GEN) -R $(BR2_TARGET_ROOTFS_EXT2_REV)
 ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)),0)
 EXT2_OPTS += -b $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)
 endif
-EXT2_OPTS += -B $(BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS)
 
 ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_INODES)),0)
 EXT2_OPTS += -i $(BR2_TARGET_ROOTFS_EXT2_INODES)
diff --git a/package/mke2img/mke2img b/package/mke2img/mke2img
index c2e0d02..b773aa9 100755
--- a/package/mke2img/mke2img
+++ b/package/mke2img/mke2img
@@ -17,14 +17,12 @@ main() {
     # Default values
     gen=2
     rev=1
-    nb_extra_blocks=0
     nb_extra_inodes=0
 
-    while getopts :hb:B:i:I:r:d:o:G:R:l:u: OPT; do
+    while getopts :hb:i:I:r:d:o:G:R:l:u: OPT; do
         case "${OPT}" in
         h)  help; exit 0;;
         b)  nb_blocks=${OPTARG};;
-        B)  nb_extra_blocks=${OPTARG};;
         i)  nb_inodes=${OPTARG};;
         I)  nb_extra_inodes=${OPTARG};;
         r)  nb_res_blocks=${OPTARG};;
@@ -64,22 +62,6 @@ main() {
     fi
     nb_inodes=$((nb_inodes+nb_extra_inodes))
 
-    # calculate needed blocks
-    if [ -z "${nb_blocks}" ]; then
-        # size ~= superblock, block+inode bitmaps, inodes (8 per block),
-        # blocks; we scale inodes / blocks with 10% to compensate for
-        # bitmaps size + slack
-        nb_blocks=$(du -s -k "${root_dir}" |sed -r -e 's/[[:space:]]+.*$//')
-        nb_blocks=$((500+(nb_blocks+nb_inodes/8)*11/10))
-        if [ ${gen} -ge 3 ]; then
-            # we add 1300 blocks (a bit more than 1 MiB, assuming 1KiB blocks)
-            # for the journal
-            # Note: I came to 1300 blocks after trial-and-error checks. YMMV.
-            nb_blocks=$((nb_blocks+1300))
-        fi
-    fi
-    nb_blocks=$((nb_blocks+nb_extra_blocks))
-
     # Upgrade to rev1 if needed
     if [ ${rev} -ge 1 ]; then
         tune2fs_O_opts+=",filetype,sparse_super"
-- 
2.7.3

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 2/4] package/mke2img: use mkfs to generate rootfs image
  2017-03-24 16:20 [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size Sébastien Szymanski
@ 2017-03-24 16:20 ` Sébastien Szymanski
  2017-03-24 21:58   ` Arnout Vandecappelle
  2017-03-24 16:20 ` [Buildroot] [PATCH 3/4] package/mke2img: remove unused package Sébastien Szymanski
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Sébastien Szymanski @ 2017-03-24 16:20 UTC (permalink / raw)
  To: buildroot

mkfs is now capable of generating rootfs images. Use mkfs intead of
genext2fs. Use the default mkfs' options but disable 64bit flag as it's
incompatible with older version of U-Boot.

Signed-off-by: S?bastien Szymanski <sebastien.szymanski@armadeus.com>
---
 fs/ext2/Config.in              |  2 +-
 package/mke2img/Config.in.host |  1 -
 package/mke2img/mke2img        | 80 +++++++++---------------------------------
 package/mke2img/mke2img.mk     |  2 +-
 4 files changed, 18 insertions(+), 67 deletions(-)

diff --git a/fs/ext2/Config.in b/fs/ext2/Config.in
index 2f22762..aa6ee05 100644
--- a/fs/ext2/Config.in
+++ b/fs/ext2/Config.in
@@ -45,7 +45,7 @@ config BR2_TARGET_ROOTFS_EXT2_LABEL
 	string "filesystem label"
 
 config BR2_TARGET_ROOTFS_EXT2_BLOCKS
-	int "exact size in blocks"
+	int "exact size in KB"
 	default 65536
 
 config BR2_TARGET_ROOTFS_EXT2_INODES
diff --git a/package/mke2img/Config.in.host b/package/mke2img/Config.in.host
index b5bcb84..f252715 100644
--- a/package/mke2img/Config.in.host
+++ b/package/mke2img/Config.in.host
@@ -1,7 +1,6 @@
 config BR2_PACKAGE_HOST_MKE2IMG
 	bool "host mke2img"
 	select BR2_PACKAGE_HOST_E2FSPROGS
-	select BR2_PACKAGE_HOST_GENEXT2FS
 	help
 	  Easily create filesystems of the extend familly: ext2/3/4.
 
diff --git a/package/mke2img/mke2img b/package/mke2img/mke2img
index b773aa9..01f04fc 100755
--- a/package/mke2img/mke2img
+++ b/package/mke2img/mke2img
@@ -10,9 +10,8 @@ set -e
 main() {
     local OPT OPTARG
     local nb_blocks nb_inodes nb_res_blocks root_dir image gen rev label uuid
-    local -a genext2fs_opts
-    local -a tune2fs_opts
-    local tune2fs_O_opts
+    local -a mkfs_opts
+    local mkfs_O_opts
 
     # Default values
     gen=2
@@ -62,80 +61,33 @@ main() {
     fi
     nb_inodes=$((nb_inodes+nb_extra_inodes))
 
-    # Upgrade to rev1 if needed
-    if [ ${rev} -ge 1 ]; then
-        tune2fs_O_opts+=",filetype,sparse_super"
-    fi
-
-    # Add a journal for ext3 and above
-    if [ ${gen} -ge 3 ]; then
-        tune2fs_opts+=( -j -J size=1 )
-    fi
-
-    # Add ext4 specific features
-    if [ ${gen} -ge 4 ]; then
-        tune2fs_O_opts+=",extents,uninit_bg,dir_index"
-    fi
+    # Disable 64bit flag as it's incompatible with older U-Boot versions
+    mkfs_O_opts+=",^64bit"
 
     # Add our -O options (there will be at most one leading comma, remove it)
-    if [ -n "${tune2fs_O_opts}" ]; then
-        tune2fs_opts+=( -O "${tune2fs_O_opts#,}" )
+    if [ -n "${mkfs_O_opts}" ]; then
+        mkfs_opts+=( -O "${mkfs_O_opts#,}" )
     fi
 
     # Add the label if specified
     if [ -n "${label}" ]; then
-        tune2fs_opts+=( -L "${label}" )
+        mkfs_opts+=( -L "${label}" )
     fi
 
-    # Generate the filesystem
-    genext2fs_opts=( -z -b ${nb_blocks} -N ${nb_inodes} -d "${root_dir}" )
-    if [ -n "${nb_res_blocks}" ]; then
-        genext2fs_opts+=( -m ${nb_res_blocks} )
-    fi
-    genext2fs "${genext2fs_opts[@]}" "${image}"
-
-    # genext2fs does not generate a UUID, but fsck will whine if one
-    # is missing, so we need to add a UUID.
-    # Of course, this has to happen _before_ we run fsck.
-    # Also, some ext4 metadata are based on the UUID, so we must
-    # set it before we can convert the filesystem to ext4.
-    # If the user did not specify a UUID, we generate a random one.
+    # If the user did not specify a UUID, mkfs will generate a random one.
     # Although a random UUID may seem bad for reproducibility, there
     # already are so many things that are not reproducible in a
     # filesystem: file dates, file ordering, content of the files...
-    tune2fs -U "${uuid:-random}" "${image}"
-
-    # Upgrade the filesystem
-    if [ ${#tune2fs_opts[@]} -ne 0 ]; then
-        tune2fs "${tune2fs_opts[@]}" "${image}"
+    if [ -n "${UUID}" ]; then
+        mkfs_opts+=( -U "${UUID}" )
     fi
 
-    # After changing filesystem options, running fsck is required
-    # (see: man tune2fs). Running e2fsck in other cases will ensure
-    # coherency of the filesystem, although it is not required.
-    # 'e2fsck -pDf' means:
-    #  - automatically repair
-    #  - optimise and check for duplicate entries
-    #  - force checking
-    # Sending output to oblivion, as e2fsck can be *very* verbose,
-    # especially with filesystems generated by genext2fs.
-    # Exit codes 1 & 2 are OK, it means fs errors were successfully
-    # corrected, hence our little trick with $ret.
-    ret=0
-    e2fsck -pDf "${image}" >/dev/null || ret=$?
-    case ${ret} in
-       0|1|2) ;;
-       *)   errorN ${ret} "failed to run e2fsck on '%s' (ext%d)\n" \
-                   "${image}" ${gen}
-    esac
-    printf "\n"
-    trace "e2fsck was successfully run on '%s' (ext%d)\n" "${image}" ${gen}
-    printf "\n"
-
-    # Remove count- and time-based checks, they are not welcome
-    # on embedded devices, where they can cause serious boot-time
-    # issues by tremendously slowing down the boot.
-    tune2fs -c 0 -i 0 "${image}"
+    # Generate the filesystem
+    mkfs_opts+=( -d "${root_dir}" -N ${nb_inodes} -T small -F )
+    if [ -n "${nb_res_blocks}" ]; then
+        mkfs_opts+=( -m ${nb_res_blocks} )
+    fi
+    mkfs.ext${gen} "${mkfs_opts[@]}" "${image}" "${nb_blocks}"
 }
 
 help() {
diff --git a/package/mke2img/mke2img.mk b/package/mke2img/mke2img.mk
index 9de387a..ead9d70 100644
--- a/package/mke2img/mke2img.mk
+++ b/package/mke2img/mke2img.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HOST_MKE2IMG_DEPENDENCIES = host-genext2fs host-e2fsprogs
+HOST_MKE2IMG_DEPENDENCIES = host-e2fsprogs
 
 define HOST_MKE2IMG_INSTALL_CMDS
 	$(INSTALL) -D -m 0755 package/mke2img/mke2img $(HOST_DIR)/usr/bin/mke2img
-- 
2.7.3

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 3/4] package/mke2img: remove unused package
  2017-03-24 16:20 [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size Sébastien Szymanski
  2017-03-24 16:20 ` [Buildroot] [PATCH 2/4] package/mke2img: use mkfs to generate rootfs image Sébastien Szymanski
@ 2017-03-24 16:20 ` Sébastien Szymanski
  2017-03-30 20:27   ` Arnout Vandecappelle
  2017-03-24 16:20 ` [Buildroot] [PATCH 4/4] fs/ext2: Make filesystem size a string Sébastien Szymanski
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Sébastien Szymanski @ 2017-03-24 16:20 UTC (permalink / raw)
  To: buildroot

Now that we use mkfs to generate ext filesystem image, call mkfs
directly from fs/ext2/ext2.mk and remove mke2img package.

Signed-off-by: S?bastien Szymanski <sebastien.szymanski@armadeus.com>
---
 Config.in.legacy               |   6 ++
 DEVELOPERS                     |   1 -
 fs/ext2/Config.in              |   2 +-
 fs/ext2/ext2.mk                |  25 +++----
 package/Config.in.host         |   1 -
 package/mke2img/Config.in.host |  10 ---
 package/mke2img/mke2img        | 148 -----------------------------------------
 package/mke2img/mke2img.mk     |  13 ----
 8 files changed, 20 insertions(+), 186 deletions(-)
 delete mode 100644 package/mke2img/Config.in.host
 delete mode 100755 package/mke2img/mke2img
 delete mode 100644 package/mke2img/mke2img.mk

diff --git a/Config.in.legacy b/Config.in.legacy
index dfd4d67..b5a68aa 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -145,6 +145,12 @@ endif
 ###############################################################################
 comment "Legacy options removed in 2017.05"
 
+config BR2_PACKAGE_HOST_MKE2IMG
+	bool "host mke2img has been removed"
+	select BR2_LEGACY
+	help
+	  We now call mkfs directly to generate ext filesystem image.
+
 config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS
 	int "extra size in blocks has been removed"
 	default 0
diff --git a/DEVELOPERS b/DEVELOPERS
index 186f48f..fa3ce41 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1665,7 +1665,6 @@ F:	package/libiscsi/
 F:	package/libseccomp/
 F:	package/linux-tools/
 F:	package/mesa3d-headers/
-F:	package/mke2img/
 F:	package/nbd/
 F:	package/nut/
 F:	package/nvidia-driver/
diff --git a/fs/ext2/Config.in b/fs/ext2/Config.in
index aa6ee05..dfc3b0a 100644
--- a/fs/ext2/Config.in
+++ b/fs/ext2/Config.in
@@ -1,6 +1,6 @@
 config BR2_TARGET_ROOTFS_EXT2
 	bool "ext2/3/4 root filesystem"
-	select BR2_PACKAGE_HOST_MKE2IMG
+	select BR2_PACKAGE_HOST_E2FSPROGS
 	help
 	  Build an ext2/3/4 root filesystem
 
diff --git a/fs/ext2/ext2.mk b/fs/ext2/ext2.mk
index 30f1d17..3872e52 100644
--- a/fs/ext2/ext2.mk
+++ b/fs/ext2/ext2.mk
@@ -4,32 +4,33 @@
 #
 ################################################################################
 
-EXT2_OPTS = -G $(BR2_TARGET_ROOTFS_EXT2_GEN) -R $(BR2_TARGET_ROOTFS_EXT2_REV)
+EXT2_OPTS = -d $(TARGET_DIR)
+EXT2_OPTS += -r $(BR2_TARGET_ROOTFS_EXT2_REV)
 
-ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)),0)
-EXT2_OPTS += -b $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)
+NB_INODES := $(strip $(BR2_TARGET_ROOTFS_EXT2_INODES))
+ifeq ($(NB_INODES),0)
+NB_INODES = $(shell echo $$(($$(find $(TARGET_DIR) | wc -l) + 400)))
 endif
-
-ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_INODES)),0)
-EXT2_OPTS += -i $(BR2_TARGET_ROOTFS_EXT2_INODES)
-endif
-EXT2_OPTS += -I $(BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES)
+EXT2_OPTS += -N $(shell echo $$(($(NB_INODES) + $(BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES))))
 
 ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)),0)
-EXT2_OPTS += -r $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)
+EXT2_OPTS += -m $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)
 endif
 
+EXT2_OPTS += -O ^64bit
+EXT2_OPTS += -T small -F
+
 # qstrip results in stripping consecutive spaces into a single one. So the
 # variable is not qstrip-ed to preserve the integrity of the string value.
 EXT2_LABEL := $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_LABEL))
 ifneq ($(EXT2_LABEL),)
-EXT2_OPTS += -l "$(EXT2_LABEL)"
+EXT2_OPTS += -L "$(EXT2_LABEL)"
 endif
 
-ROOTFS_EXT2_DEPENDENCIES = host-mke2img
+ROOTFS_EXT2_DEPENDENCIES = host-e2fsprogs
 
 define ROOTFS_EXT2_CMD
-	PATH=$(BR_PATH) mke2img -d $(TARGET_DIR) $(EXT2_OPTS) -o $@
+	PATH=$(BR_PATH) mkfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN) $(EXT2_OPTS) $@ $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)
 endef
 
 rootfs-ext2-symlink:
diff --git a/package/Config.in.host b/package/Config.in.host
index bb91671..4385ac3 100644
--- a/package/Config.in.host
+++ b/package/Config.in.host
@@ -24,7 +24,6 @@ menu "Host utilities"
 	source "package/lpc3250loader/Config.in.host"
 	source "package/lttng-babeltrace/Config.in.host"
 	source "package/mfgtools/Config.in.host"
-	source "package/mke2img/Config.in.host"
 	source "package/mkpasswd/Config.in.host"
 	source "package/mtd/Config.in.host"
 	source "package/mtools/Config.in.host"
diff --git a/package/mke2img/Config.in.host b/package/mke2img/Config.in.host
deleted file mode 100644
index f252715..0000000
--- a/package/mke2img/Config.in.host
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_HOST_MKE2IMG
-	bool "host mke2img"
-	select BR2_PACKAGE_HOST_E2FSPROGS
-	help
-	  Easily create filesystems of the extend familly: ext2/3/4.
-
-	  This tool is bundled by, and specific to Buildroot. However, it can
-	  be used from post-images scripts is needed.
-
-	  https://code.google.com/p/mke2img/
diff --git a/package/mke2img/mke2img b/package/mke2img/mke2img
deleted file mode 100755
index 01f04fc..0000000
--- a/package/mke2img/mke2img
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/usr/bin/env bash
-
-# Buildroot wrapper to the collection of ext2/3/4 filesystem tools:
-# - genext2fs, to generate ext2 filesystem images
-# - tune2fs, to modify an ext2/3/4 filesystem (possibly in an image file)
-# - e2fsck, to check and fix an ext2/3/4 filesystem (possibly in an image file)
-
-set -e
-
-main() {
-    local OPT OPTARG
-    local nb_blocks nb_inodes nb_res_blocks root_dir image gen rev label uuid
-    local -a mkfs_opts
-    local mkfs_O_opts
-
-    # Default values
-    gen=2
-    rev=1
-    nb_extra_inodes=0
-
-    while getopts :hb:i:I:r:d:o:G:R:l:u: OPT; do
-        case "${OPT}" in
-        h)  help; exit 0;;
-        b)  nb_blocks=${OPTARG};;
-        i)  nb_inodes=${OPTARG};;
-        I)  nb_extra_inodes=${OPTARG};;
-        r)  nb_res_blocks=${OPTARG};;
-        d)  root_dir="${OPTARG}";;
-        o)  image="${OPTARG}";;
-        G)  gen=${OPTARG};;
-        R)  rev=${OPTARG};;
-        l)  label="${OPTARG}";;
-        u)  uuid="${OPTARG}";;
-        :)  error "option '%s' expects a mandatory argument\n" "${OPTARG}";;
-        \?) error "unknown option '%s'\n" "${OPTARG}";;
-        esac
-    done
-
-    # Sanity checks
-    if [ -z "${root_dir}" ]; then
-        error "you must specify a root directory with '-d'\n"
-    fi
-    if [ -z "${image}" ]; then
-        error "you must specify an output image file with '-o'\n"
-    fi
-    case "${gen}:${rev}" in
-    2:0|2:1|3:1|4:1)
-        ;;
-    3:0|4:0)
-        error "revision 0 is invalid for ext3 and ext4\n"
-        ;;
-    *)  error "unknown ext generation '%s' and/or revision '%s'\n" \
-               "${gen}" "${rev}"
-        ;;
-    esac
-
-    # calculate needed inodes
-    if [ -z "${nb_inodes}" ]; then
-        nb_inodes=$(find "${root_dir}" | wc -l)
-        nb_inodes=$((nb_inodes+400))
-    fi
-    nb_inodes=$((nb_inodes+nb_extra_inodes))
-
-    # Disable 64bit flag as it's incompatible with older U-Boot versions
-    mkfs_O_opts+=",^64bit"
-
-    # Add our -O options (there will be at most one leading comma, remove it)
-    if [ -n "${mkfs_O_opts}" ]; then
-        mkfs_opts+=( -O "${mkfs_O_opts#,}" )
-    fi
-
-    # Add the label if specified
-    if [ -n "${label}" ]; then
-        mkfs_opts+=( -L "${label}" )
-    fi
-
-    # If the user did not specify a UUID, mkfs will generate a random one.
-    # Although a random UUID may seem bad for reproducibility, there
-    # already are so many things that are not reproducible in a
-    # filesystem: file dates, file ordering, content of the files...
-    if [ -n "${UUID}" ]; then
-        mkfs_opts+=( -U "${UUID}" )
-    fi
-
-    # Generate the filesystem
-    mkfs_opts+=( -d "${root_dir}" -N ${nb_inodes} -T small -F )
-    if [ -n "${nb_res_blocks}" ]; then
-        mkfs_opts+=( -m ${nb_res_blocks} )
-    fi
-    mkfs.ext${gen} "${mkfs_opts[@]}" "${image}" "${nb_blocks}"
-}
-
-help() {
-    cat <<_EOF_
-NAME
-    ${my_name} - Create an ext2/3/4 filesystem image
-
-SYNOPSIS
-    ${my_name} [OPTION]...
-
-DESCRIPTION
-    Create ext2/3/4 filesystem image from the content of a directory.
-
-    -b BLOCKS
-        Create a filesystem of BLOCKS 1024-byte blocs. The default is to
-        compute the required number of blocks.
-
-    -i INODES
-        Create a filesystem with INODES inodes. The default is to compute
-        the required number of inodes.
-
-    -r RES_BLOCKS
-        Create a filesystem with RES_BLOCKS reserved blocks. The default
-        is to reserve 0 block.
-
-    -d ROOT_DIR
-        Create a filesystem, using the content of ROOT_DIR as the content
-        of the root of the filesystem. Mandatory.
-
-    -o FILE
-        Create the filesystem in FILE. Madatory.
-
-    -G GEN -R REV
-        Create a filesystem of generation GEN (2, 3 or 4), and revision
-        REV (0 or 1). The default is to generate an ext2 revision 1
-        filesystem; revision 0 is invalid for ext3 and ext4.
-
-    -l LABEL
-        Create a filesystem with label LABEL. The default is to not set
-        a label.
-
-    -u UUID
-        Create filesystem with uuid UUID. The default is to set a random
-        UUID.
-
-  Exit status:
-    0   if OK
-    !0  in case of error
-_EOF_
-}
-
-trace()  { local msg="${1}"; shift; printf "%s: ${msg}" "${my_name}" "${@}"; }
-warn()   { trace "${@}" >&2; }
-errorN() { local ret="${1}"; shift; warn "${@}"; exit ${ret}; }
-error()  { errorN 1 "${@}"; }
-
-my_name="${0##*/}"
-main "$@"
diff --git a/package/mke2img/mke2img.mk b/package/mke2img/mke2img.mk
deleted file mode 100644
index ead9d70..0000000
--- a/package/mke2img/mke2img.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-################################################################################
-#
-# mke2img
-#
-################################################################################
-
-HOST_MKE2IMG_DEPENDENCIES = host-e2fsprogs
-
-define HOST_MKE2IMG_INSTALL_CMDS
-	$(INSTALL) -D -m 0755 package/mke2img/mke2img $(HOST_DIR)/usr/bin/mke2img
-endef
-
-$(eval $(host-generic-package))
-- 
2.7.3

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 4/4] fs/ext2: Make filesystem size a string
  2017-03-24 16:20 [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size Sébastien Szymanski
  2017-03-24 16:20 ` [Buildroot] [PATCH 2/4] package/mke2img: use mkfs to generate rootfs image Sébastien Szymanski
  2017-03-24 16:20 ` [Buildroot] [PATCH 3/4] package/mke2img: remove unused package Sébastien Szymanski
@ 2017-03-24 16:20 ` Sébastien Szymanski
  2017-03-30 20:47   ` Arnout Vandecappelle
  2017-03-24 21:35 ` [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size Arnout Vandecappelle
  2017-03-25 13:43 ` Thomas Petazzoni
  4 siblings, 1 reply; 12+ messages in thread
From: Sébastien Szymanski @ 2017-03-24 16:20 UTC (permalink / raw)
  To: buildroot

It allows the user to enter a size with 'k', 'm', 'g', or 't' suffix.
Also drop BR2_TARGET_ROOTFS_EXT2_BLOCKS and use
BR2_TARGET_ROOTFS_EXT2_SIZE instead.

Signed-off-by: S?bastien Szymanski <sebastien.szymanski@armadeus.com>
---
 Config.in.legacy  | 13 +++++++++++++
 fs/ext2/Config.in | 11 ++++++++---
 fs/ext2/ext2.mk   |  2 +-
 3 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/Config.in.legacy b/Config.in.legacy
index b5a68aa..04fd247 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -145,6 +145,19 @@ endif
 ###############################################################################
 comment "Legacy options removed in 2017.05"
 
+config BR2_TARGET_ROOTFS_EXT2_BLOCKS
+	int "exact size in KB has been removed"
+	default 65536
+	help
+	  This option has been removed in favor of BR2_TARGET_ROOTFS_EXT2_SIZE.
+	  Set this option to 65536 and set BR2_TARGET_ROOTFS_EXT2_SIZE to your
+	  needs.
+
+config BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP
+	bool
+	default y if BR2_TARGET_ROOTFS_EXT2_BLOCKS != 65536
+	select BR2_LEGACY
+
 config BR2_PACKAGE_HOST_MKE2IMG
 	bool "host mke2img has been removed"
 	select BR2_LEGACY
diff --git a/fs/ext2/Config.in b/fs/ext2/Config.in
index dfc3b0a..8486a1e 100644
--- a/fs/ext2/Config.in
+++ b/fs/ext2/Config.in
@@ -44,9 +44,14 @@ config BR2_TARGET_ROOTFS_EXT2_REV
 config BR2_TARGET_ROOTFS_EXT2_LABEL
 	string "filesystem label"
 
-config BR2_TARGET_ROOTFS_EXT2_BLOCKS
-	int "exact size in KB"
-	default 65536
+config BR2_TARGET_ROOTFS_EXT2_SIZE
+	string "exact size"
+	default "64M"
+	help
+	  The size of the filesystem image. If it does not have a suffix, it is
+	  interpreted as power-of-two kilobytes. If it is suffixed by 'k', 'm',
+	  'g', 't' (either upper-case or lower-case), then it is interpreted in
+	  power-of-two kilobytes, megabytes, gigabytes, terabytes, etc.
 
 config BR2_TARGET_ROOTFS_EXT2_INODES
 	int "exact number of inodes (leave at 0 for auto calculation)"
diff --git a/fs/ext2/ext2.mk b/fs/ext2/ext2.mk
index 3872e52..7b64c42 100644
--- a/fs/ext2/ext2.mk
+++ b/fs/ext2/ext2.mk
@@ -30,7 +30,7 @@ endif
 ROOTFS_EXT2_DEPENDENCIES = host-e2fsprogs
 
 define ROOTFS_EXT2_CMD
-	PATH=$(BR_PATH) mkfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN) $(EXT2_OPTS) $@ $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)
+	PATH=$(BR_PATH) mkfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN) $(EXT2_OPTS) $@ $(strip $(BR2_TARGET_ROOTFS_EXT2_SIZE))
 endef
 
 rootfs-ext2-symlink:
-- 
2.7.3

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size
  2017-03-24 16:20 [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size Sébastien Szymanski
                   ` (2 preceding siblings ...)
  2017-03-24 16:20 ` [Buildroot] [PATCH 4/4] fs/ext2: Make filesystem size a string Sébastien Szymanski
@ 2017-03-24 21:35 ` Arnout Vandecappelle
  2017-03-25 13:43 ` Thomas Petazzoni
  4 siblings, 0 replies; 12+ messages in thread
From: Arnout Vandecappelle @ 2017-03-24 21:35 UTC (permalink / raw)
  To: buildroot



On 24-03-17 17:20, S?bastien Szymanski wrote:
> Auto-calculation of the rootfs size cannot be done in a reliable way as
> it depends on the host filesystem and is broken on non ext4 host. [1] [2]
> So let the user specify the size he wants for his rootfs.
> 
> [1] https://bugs.busybox.net/show_bug.cgi?id=8831
> [2] https://bugs.busybox.net/show_bug.cgi?id=9496
> 
> Signed-off-by: S?bastien Szymanski <sebastien.szymanski@armadeus.com>

 Small comments below, but

Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

> ---
>  Config.in.legacy        | 14 ++++++++++++++
>  fs/ext2/Config.in       | 12 ++----------
>  fs/ext2/ext2.mk         |  1 -
>  package/mke2img/mke2img | 20 +-------------------
>  4 files changed, 17 insertions(+), 30 deletions(-)
> 
> diff --git a/Config.in.legacy b/Config.in.legacy
> index 4e14a98..dfd4d67 100644
> --- a/Config.in.legacy
> +++ b/Config.in.legacy
> @@ -145,6 +145,20 @@ endif
>  ###############################################################################
>  comment "Legacy options removed in 2017.05"
>  
> +config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS
> +	int "extra size in blocks has been removed"
> +	default 0
> +	help
> +	  Since the support for auto calculation of the filesystem size has been

 Line too long, wrap at 72 columns (where tab counts for 8).

> +	  removed, this option is now useless and must be 0.
> +	  You may want to check that BR2_TARGET_ROOTFS_EXT2_BLOCKS matchs
                                                                   matches

> +	  your needs.
> +
> +config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS_WRAP
> +	bool
> +	default y if BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS != 0
> +	select BR2_LEGACY

 Great solution!

> +
>  config BR2_PACKAGE_SYSTEMD_KDBUS
>  	bool "systemd-kdbus has been removed"
>  	select BR2_LEGACY
> diff --git a/fs/ext2/Config.in b/fs/ext2/Config.in
> index b8eeed2..2f22762 100644
> --- a/fs/ext2/Config.in
> +++ b/fs/ext2/Config.in
> @@ -45,21 +45,13 @@ config BR2_TARGET_ROOTFS_EXT2_LABEL
>  	string "filesystem label"
>  
>  config BR2_TARGET_ROOTFS_EXT2_BLOCKS
> -	int "exact size in blocks (leave at 0 for auto calculation)"
> -	default 0
> +	int "exact size in blocks"
> +	default 65536

 I think this default is quite useless: it is too large for a 64M card, and
wastes a lot of space on a 128M card. So setting it to 60M or 120M would be more
appropriate.

 Regards,
 Arnout

>  
>  config BR2_TARGET_ROOTFS_EXT2_INODES
>  	int "exact number of inodes (leave at 0 for auto calculation)"
>  	default 0
>  
> -config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS
> -	int "extra size in blocks" if BR2_TARGET_ROOTFS_EXT2_BLOCKS = 0
> -	default 0
> -	help
> -	  Enter here the number of extra blocks of free space you
> -	  want on your filesystem. By default, Buildroot will not
> -	  leave much space free.
> -
>  config BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES
>  	int "extra inodes" if BR2_TARGET_ROOTFS_EXT2_INODES = 0
>  	default 0
> diff --git a/fs/ext2/ext2.mk b/fs/ext2/ext2.mk
> index cfb34c4..30f1d17 100644
> --- a/fs/ext2/ext2.mk
> +++ b/fs/ext2/ext2.mk
> @@ -9,7 +9,6 @@ EXT2_OPTS = -G $(BR2_TARGET_ROOTFS_EXT2_GEN) -R $(BR2_TARGET_ROOTFS_EXT2_REV)
>  ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)),0)
>  EXT2_OPTS += -b $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)
>  endif
> -EXT2_OPTS += -B $(BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS)
>  
>  ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_INODES)),0)
>  EXT2_OPTS += -i $(BR2_TARGET_ROOTFS_EXT2_INODES)
> diff --git a/package/mke2img/mke2img b/package/mke2img/mke2img
> index c2e0d02..b773aa9 100755
> --- a/package/mke2img/mke2img
> +++ b/package/mke2img/mke2img
> @@ -17,14 +17,12 @@ main() {
>      # Default values
>      gen=2
>      rev=1
> -    nb_extra_blocks=0
>      nb_extra_inodes=0
>  
> -    while getopts :hb:B:i:I:r:d:o:G:R:l:u: OPT; do
> +    while getopts :hb:i:I:r:d:o:G:R:l:u: OPT; do
>          case "${OPT}" in
>          h)  help; exit 0;;
>          b)  nb_blocks=${OPTARG};;
> -        B)  nb_extra_blocks=${OPTARG};;
>          i)  nb_inodes=${OPTARG};;
>          I)  nb_extra_inodes=${OPTARG};;
>          r)  nb_res_blocks=${OPTARG};;
> @@ -64,22 +62,6 @@ main() {
>      fi
>      nb_inodes=$((nb_inodes+nb_extra_inodes))
>  
> -    # calculate needed blocks
> -    if [ -z "${nb_blocks}" ]; then
> -        # size ~= superblock, block+inode bitmaps, inodes (8 per block),
> -        # blocks; we scale inodes / blocks with 10% to compensate for
> -        # bitmaps size + slack
> -        nb_blocks=$(du -s -k "${root_dir}" |sed -r -e 's/[[:space:]]+.*$//')
> -        nb_blocks=$((500+(nb_blocks+nb_inodes/8)*11/10))
> -        if [ ${gen} -ge 3 ]; then
> -            # we add 1300 blocks (a bit more than 1 MiB, assuming 1KiB blocks)
> -            # for the journal
> -            # Note: I came to 1300 blocks after trial-and-error checks. YMMV.
> -            nb_blocks=$((nb_blocks+1300))
> -        fi
> -    fi
> -    nb_blocks=$((nb_blocks+nb_extra_blocks))
> -
>      # Upgrade to rev1 if needed
>      if [ ${rev} -ge 1 ]; then
>          tune2fs_O_opts+=",filetype,sparse_super"
> 

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 2/4] package/mke2img: use mkfs to generate rootfs image
  2017-03-24 16:20 ` [Buildroot] [PATCH 2/4] package/mke2img: use mkfs to generate rootfs image Sébastien Szymanski
@ 2017-03-24 21:58   ` Arnout Vandecappelle
  2017-03-24 22:04     ` Thomas Petazzoni
  2017-03-30  7:54     ` Sébastien Szymanski
  0 siblings, 2 replies; 12+ messages in thread
From: Arnout Vandecappelle @ 2017-03-24 21:58 UTC (permalink / raw)
  To: buildroot



On 24-03-17 17:20, S?bastien Szymanski wrote:
> mkfs is now capable of generating rootfs images. Use mkfs intead of
> genext2fs. Use the default mkfs' options but disable 64bit flag as it's
> incompatible with older version of U-Boot.
> 
> Signed-off-by: S?bastien Szymanski <sebastien.szymanski@armadeus.com>
> ---
[snip]
> diff --git a/package/mke2img/mke2img b/package/mke2img/mke2img
> index b773aa9..01f04fc 100755
> --- a/package/mke2img/mke2img
> +++ b/package/mke2img/mke2img
> @@ -10,9 +10,8 @@ set -e
>  main() {
>      local OPT OPTARG
>      local nb_blocks nb_inodes nb_res_blocks root_dir image gen rev label uuid
> -    local -a genext2fs_opts
> -    local -a tune2fs_opts
> -    local tune2fs_O_opts
> +    local -a mkfs_opts
> +    local mkfs_O_opts
>  
>      # Default values
>      gen=2
> @@ -62,80 +61,33 @@ main() {
>      fi
>      nb_inodes=$((nb_inodes+nb_extra_inodes))
>  
> -    # Upgrade to rev1 if needed
> -    if [ ${rev} -ge 1 ]; then
> -        tune2fs_O_opts+=",filetype,sparse_super"
> -    fi
> -
> -    # Add a journal for ext3 and above
> -    if [ ${gen} -ge 3 ]; then
> -        tune2fs_opts+=( -j -J size=1 )
> -    fi
> -
> -    # Add ext4 specific features
> -    if [ ${gen} -ge 4 ]; then
> -        tune2fs_O_opts+=",extents,uninit_bg,dir_index"
> -    fi
> +    # Disable 64bit flag as it's incompatible with older U-Boot versions
> +    mkfs_O_opts+=",^64bit"

 This is a bit unfortunate. Actually, reading the man page, it shouldn't even be
needed: if the filesystem is less than 4TB, then mke2fs will not use 64bit. And
if it's larger than 4TB, you just can't create it without the 64bit option...

>  
>      # Add our -O options (there will be at most one leading comma, remove it)
> -    if [ -n "${tune2fs_O_opts}" ]; then
> -        tune2fs_opts+=( -O "${tune2fs_O_opts#,}" )
> +    if [ -n "${mkfs_O_opts}" ]; then
> +        mkfs_opts+=( -O "${mkfs_O_opts#,}" )

 Since now the ^64bit is the only -O option, and it's always there, you can just
use an unconditional

    mkfs_opts+=( -O ^64bit )

>      fi
>  
>      # Add the label if specified
>      if [ -n "${label}" ]; then
> -        tune2fs_opts+=( -L "${label}" )
> +        mkfs_opts+=( -L "${label}" )
>      fi
>  
> -    # Generate the filesystem
> -    genext2fs_opts=( -z -b ${nb_blocks} -N ${nb_inodes} -d "${root_dir}" )
> -    if [ -n "${nb_res_blocks}" ]; then
> -        genext2fs_opts+=( -m ${nb_res_blocks} )
> -    fi
> -    genext2fs "${genext2fs_opts[@]}" "${image}"
> -
> -    # genext2fs does not generate a UUID, but fsck will whine if one
> -    # is missing, so we need to add a UUID.
> -    # Of course, this has to happen _before_ we run fsck.
> -    # Also, some ext4 metadata are based on the UUID, so we must
> -    # set it before we can convert the filesystem to ext4.
> -    # If the user did not specify a UUID, we generate a random one.
> +    # If the user did not specify a UUID, mkfs will generate a random one.
>      # Although a random UUID may seem bad for reproducibility, there
>      # already are so many things that are not reproducible in a
>      # filesystem: file dates, file ordering, content of the files...

 Hm, this becomes less and less true... With BR2_REPRODUCIBLE, the file dates
and content should be fixed. So if only we can also fix the ordering, then the
ext2 could also be reproducible... But that's not for this patch of course.

> -    tune2fs -U "${uuid:-random}" "${image}"
> -
> -    # Upgrade the filesystem
> -    if [ ${#tune2fs_opts[@]} -ne 0 ]; then
> -        tune2fs "${tune2fs_opts[@]}" "${image}"
> +    if [ -n "${UUID}" ]; then
> +        mkfs_opts+=( -U "${UUID}" )
>      fi
>  
> -    # After changing filesystem options, running fsck is required
> -    # (see: man tune2fs). Running e2fsck in other cases will ensure
> -    # coherency of the filesystem, although it is not required.
> -    # 'e2fsck -pDf' means:
> -    #  - automatically repair
> -    #  - optimise and check for duplicate entries
> -    #  - force checking
> -    # Sending output to oblivion, as e2fsck can be *very* verbose,
> -    # especially with filesystems generated by genext2fs.
> -    # Exit codes 1 & 2 are OK, it means fs errors were successfully
> -    # corrected, hence our little trick with $ret.
> -    ret=0
> -    e2fsck -pDf "${image}" >/dev/null || ret=$?
> -    case ${ret} in
> -       0|1|2) ;;
> -       *)   errorN ${ret} "failed to run e2fsck on '%s' (ext%d)\n" \
> -                   "${image}" ${gen}
> -    esac
> -    printf "\n"
> -    trace "e2fsck was successfully run on '%s' (ext%d)\n" "${image}" ${gen}
> -    printf "\n"
> -
> -    # Remove count- and time-based checks, they are not welcome
> -    # on embedded devices, where they can cause serious boot-time
> -    # issues by tremendously slowing down the boot.
> -    tune2fs -c 0 -i 0 "${image}"
> +    # Generate the filesystem
> +    mkfs_opts+=( -d "${root_dir}" -N ${nb_inodes} -T small -F )

 I have a small preference to specify the options explicitly instead of -T small
(i.e. -b 1024 -I 128).

 Regards,
 Arnout

> +    if [ -n "${nb_res_blocks}" ]; then
> +        mkfs_opts+=( -m ${nb_res_blocks} )
> +    fi
> +    mkfs.ext${gen} "${mkfs_opts[@]}" "${image}" "${nb_blocks}"
>  }
>  
>  help() {
> diff --git a/package/mke2img/mke2img.mk b/package/mke2img/mke2img.mk
> index 9de387a..ead9d70 100644
> --- a/package/mke2img/mke2img.mk
> +++ b/package/mke2img/mke2img.mk
> @@ -4,7 +4,7 @@
>  #
>  ################################################################################
>  
> -HOST_MKE2IMG_DEPENDENCIES = host-genext2fs host-e2fsprogs
> +HOST_MKE2IMG_DEPENDENCIES = host-e2fsprogs
>  
>  define HOST_MKE2IMG_INSTALL_CMDS
>  	$(INSTALL) -D -m 0755 package/mke2img/mke2img $(HOST_DIR)/usr/bin/mke2img
> 

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 2/4] package/mke2img: use mkfs to generate rootfs image
  2017-03-24 21:58   ` Arnout Vandecappelle
@ 2017-03-24 22:04     ` Thomas Petazzoni
  2017-03-30  7:54     ` Sébastien Szymanski
  1 sibling, 0 replies; 12+ messages in thread
From: Thomas Petazzoni @ 2017-03-24 22:04 UTC (permalink / raw)
  To: buildroot

Hello,

On Fri, 24 Mar 2017 22:58:11 +0100, Arnout Vandecappelle wrote:

> > -    # Remove count- and time-based checks, they are not welcome
> > -    # on embedded devices, where they can cause serious boot-time
> > -    # issues by tremendously slowing down the boot.
> > -    tune2fs -c 0 -i 0 "${image}"
> > +    # Generate the filesystem
> > +    mkfs_opts+=( -d "${root_dir}" -N ${nb_inodes} -T small -F )  
> 
>  I have a small preference to specify the options explicitly instead of -T small
> (i.e. -b 1024 -I 128).

What do we force a block size of 1 KB ? 1 KB is really a terrible
choice for most filesystem sizes in nowadays storage devices, and 4 KB
is often much more appropriate.

mkfs.ext234 is capable of selecting a good block size automatically, so
why should we force a block size here?

See:

      -b block-size
              Specify  the  size  of blocks in bytes.  Valid block-size values
              are 1024, 2048 and 4096 bytes per block.  If omitted, block-size
              is  heuristically  determined  by  the  filesystem  size and the
              expected usage of the filesystem (see the -T option).

So I would not set -T small, and I would not pass any -b or -I option.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size
  2017-03-24 16:20 [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size Sébastien Szymanski
                   ` (3 preceding siblings ...)
  2017-03-24 21:35 ` [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size Arnout Vandecappelle
@ 2017-03-25 13:43 ` Thomas Petazzoni
  4 siblings, 0 replies; 12+ messages in thread
From: Thomas Petazzoni @ 2017-03-25 13:43 UTC (permalink / raw)
  To: buildroot

Hello,

On Fri, 24 Mar 2017 17:20:29 +0100, S?bastien Szymanski wrote:
> Auto-calculation of the rootfs size cannot be done in a reliable way as
> it depends on the host filesystem and is broken on non ext4 host. [1] [2]
> So let the user specify the size he wants for his rootfs.
> 
> [1] https://bugs.busybox.net/show_bug.cgi?id=8831
> [2] https://bugs.busybox.net/show_bug.cgi?id=9496
> 
> Signed-off-by: S?bastien Szymanski <sebastien.szymanski@armadeus.com>
> ---
>  Config.in.legacy        | 14 ++++++++++++++
>  fs/ext2/Config.in       | 12 ++----------
>  fs/ext2/ext2.mk         |  1 -
>  package/mke2img/mke2img | 20 +-------------------
>  4 files changed, 17 insertions(+), 30 deletions(-)

Applied to master after taking into account the suggestion of Arnout to
use a 60MB size by default.

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 2/4] package/mke2img: use mkfs to generate rootfs image
  2017-03-24 21:58   ` Arnout Vandecappelle
  2017-03-24 22:04     ` Thomas Petazzoni
@ 2017-03-30  7:54     ` Sébastien Szymanski
  2017-03-30 16:47       ` Arnout Vandecappelle
  1 sibling, 1 reply; 12+ messages in thread
From: Sébastien Szymanski @ 2017-03-30  7:54 UTC (permalink / raw)
  To: buildroot

Hello,

On 03/24/2017 10:58 PM, Arnout Vandecappelle wrote:
> 
> 
> On 24-03-17 17:20, S?bastien Szymanski wrote:
>>
>> Signed-off-by: S?bastien Szymanski <sebastien.szymanski@armadeus.com>
>> ---
> [snip]
>> diff --git a/package/mke2img/mke2img b/package/mke2img/mke2img
>> index b773aa9..01f04fc 100755
>> --- a/package/mke2img/mke2img
>> +++ b/package/mke2img/mke2img
>> @@ -10,9 +10,8 @@ set -e
>>  main() {
>>      local OPT OPTARG
>>      local nb_blocks nb_inodes nb_res_blocks root_dir image gen rev label uuid
>> -    local -a genext2fs_opts
>> -    local -a tune2fs_opts
>> -    local tune2fs_O_opts
>> +    local -a mkfs_opts
>> +    local mkfs_O_opts
>>  
>>      # Default values
>>      gen=2
>> @@ -62,80 +61,33 @@ main() {
>>      fi
>>      nb_inodes=$((nb_inodes+nb_extra_inodes))
>>  
>> -    # Upgrade to rev1 if needed
>> -    if [ ${rev} -ge 1 ]; then
>> -        tune2fs_O_opts+=",filetype,sparse_super"
>> -    fi
>> -
>> -    # Add a journal for ext3 and above
>> -    if [ ${gen} -ge 3 ]; then
>> -        tune2fs_opts+=( -j -J size=1 )
>> -    fi
>> -
>> -    # Add ext4 specific features
>> -    if [ ${gen} -ge 4 ]; then
>> -        tune2fs_O_opts+=",extents,uninit_bg,dir_index"
>> -    fi
>> +    # Disable 64bit flag as it's incompatible with older U-Boot versions
>> +    mkfs_O_opts+=",^64bit"
> 
>  This is a bit unfortunate. Actually, reading the man page, it shouldn't even be
> needed: if the filesystem is less than 4TB, then mke2fs will not use 64bit. And
> if it's larger than 4TB, you just can't create it without the 64bit option...

Yes, but the 64bit flag is enabled by default since e2fsprogs 1.43 for
ext4 filesystem. However, as I use -T small, the flag is not set. Also,
I agree with Thomas about not using -T small option.

I think the user should be able to select the flags he wants. Should I
add a string symbol (i.e, BR2_TARGET_ROOTFS_EXT2_OPTIONS) that is passed
directly to mkfs or a bool symbol just for the 64bit flag (i.e,
BR2_TARGET_ROOTFS_EXT2_O_64BIT) ?

Regards,

> 
>>  
>>      # Add our -O options (there will be at most one leading comma, remove it)
>> -    if [ -n "${tune2fs_O_opts}" ]; then
>> -        tune2fs_opts+=( -O "${tune2fs_O_opts#,}" )
>> +    if [ -n "${mkfs_O_opts}" ]; then
>> +        mkfs_opts+=( -O "${mkfs_O_opts#,}" )
> 
>  Since now the ^64bit is the only -O option, and it's always there, you can just
> use an unconditional
> 
>     mkfs_opts+=( -O ^64bit )
> 
>>      fi
>>  
>>      # Add the label if specified
>>      if [ -n "${label}" ]; then
>> -        tune2fs_opts+=( -L "${label}" )
>> +        mkfs_opts+=( -L "${label}" )
>>      fi
>>  
>> -    # Generate the filesystem
>> -    genext2fs_opts=( -z -b ${nb_blocks} -N ${nb_inodes} -d "${root_dir}" )
>> -    if [ -n "${nb_res_blocks}" ]; then
>> -        genext2fs_opts+=( -m ${nb_res_blocks} )
>> -    fi
>> -    genext2fs "${genext2fs_opts[@]}" "${image}"
>> -
>> -    # genext2fs does not generate a UUID, but fsck will whine if one
>> -    # is missing, so we need to add a UUID.
>> -    # Of course, this has to happen _before_ we run fsck.
>> -    # Also, some ext4 metadata are based on the UUID, so we must
>> -    # set it before we can convert the filesystem to ext4.
>> -    # If the user did not specify a UUID, we generate a random one.
>> +    # If the user did not specify a UUID, mkfs will generate a random one.
>>      # Although a random UUID may seem bad for reproducibility, there
>>      # already are so many things that are not reproducible in a
>>      # filesystem: file dates, file ordering, content of the files...
> 
>  Hm, this becomes less and less true... With BR2_REPRODUCIBLE, the file dates
> and content should be fixed. So if only we can also fix the ordering, then the
> ext2 could also be reproducible... But that's not for this patch of course.
> 
>> -    tune2fs -U "${uuid:-random}" "${image}"
>> -
>> -    # Upgrade the filesystem
>> -    if [ ${#tune2fs_opts[@]} -ne 0 ]; then
>> -        tune2fs "${tune2fs_opts[@]}" "${image}"
>> +    if [ -n "${UUID}" ]; then
>> +        mkfs_opts+=( -U "${UUID}" )
>>      fi
>>  
>> -    # After changing filesystem options, running fsck is required
>> -    # (see: man tune2fs). Running e2fsck in other cases will ensure
>> -    # coherency of the filesystem, although it is not required.
>> -    # 'e2fsck -pDf' means:
>> -    #  - automatically repair
>> -    #  - optimise and check for duplicate entries
>> -    #  - force checking
>> -    # Sending output to oblivion, as e2fsck can be *very* verbose,
>> -    # especially with filesystems generated by genext2fs.
>> -    # Exit codes 1 & 2 are OK, it means fs errors were successfully
>> -    # corrected, hence our little trick with $ret.
>> -    ret=0
>> -    e2fsck -pDf "${image}" >/dev/null || ret=$?
>> -    case ${ret} in
>> -       0|1|2) ;;
>> -       *)   errorN ${ret} "failed to run e2fsck on '%s' (ext%d)\n" \
>> -                   "${image}" ${gen}
>> -    esac
>> -    printf "\n"
>> -    trace "e2fsck was successfully run on '%s' (ext%d)\n" "${image}" ${gen}
>> -    printf "\n"
>> -
>> -    # Remove count- and time-based checks, they are not welcome
>> -    # on embedded devices, where they can cause serious boot-time
>> -    # issues by tremendously slowing down the boot.
>> -    tune2fs -c 0 -i 0 "${image}"
>> +    # Generate the filesystem
>> +    mkfs_opts+=( -d "${root_dir}" -N ${nb_inodes} -T small -F )
> 
>  I have a small preference to specify the options explicitly instead of -T small
> (i.e. -b 1024 -I 128).
> 
>  Regards,
>  Arnout
> 
>> +    if [ -n "${nb_res_blocks}" ]; then
>> +        mkfs_opts+=( -m ${nb_res_blocks} )
>> +    fi
>> +    mkfs.ext${gen} "${mkfs_opts[@]}" "${image}" "${nb_blocks}"
>>  }
>>  
>>  help() {
>> diff --git a/package/mke2img/mke2img.mk b/package/mke2img/mke2img.mk
>> index 9de387a..ead9d70 100644
>> --- a/package/mke2img/mke2img.mk
>> +++ b/package/mke2img/mke2img.mk
>> @@ -4,7 +4,7 @@
>>  #
>>  ################################################################################
>>  
>> -HOST_MKE2IMG_DEPENDENCIES = host-genext2fs host-e2fsprogs
>> +HOST_MKE2IMG_DEPENDENCIES = host-e2fsprogs
>>  
>>  define HOST_MKE2IMG_INSTALL_CMDS
>>  	$(INSTALL) -D -m 0755 package/mke2img/mke2img $(HOST_DIR)/usr/bin/mke2img
>>
> 


-- 
S?bastien Szymanski
Software Engineer, Armadeus Systems
sebastien.szymanski at armadeus.com
Tel: +33 (0)9 72 29 41 44
Fax: +33 (0)9 72 28 79 26

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 2/4] package/mke2img: use mkfs to generate rootfs image
  2017-03-30  7:54     ` Sébastien Szymanski
@ 2017-03-30 16:47       ` Arnout Vandecappelle
  0 siblings, 0 replies; 12+ messages in thread
From: Arnout Vandecappelle @ 2017-03-30 16:47 UTC (permalink / raw)
  To: buildroot



On 30-03-17 09:54, S?bastien Szymanski wrote:
> I think the user should be able to select the flags he wants. Should I
> add a string symbol (i.e, BR2_TARGET_ROOTFS_EXT2_OPTIONS) that is passed
> directly to mkfs or a bool symbol just for the 64bit flag (i.e,
> BR2_TARGET_ROOTFS_EXT2_O_64BIT) ?

 bool option doesn't make much sense IMO. String option is better, and for me
it's OK to default it to ^64bit.

 I would then take this patch without the ^64bit, and add the
BR2_TARGET_ROOTFS_EXT2_FEATURES option in a later patch. (Note that it should be
called _FEATURES, since the man page refers to it as features.) It may be a good
idea BTW to include a reference to the man page in the help text:

	  For more information about the features which can be set, see
	  the manual page ext4(5).

(taken from the mke2fs man page).

 Regards,
 Arnout

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 3/4] package/mke2img: remove unused package
  2017-03-24 16:20 ` [Buildroot] [PATCH 3/4] package/mke2img: remove unused package Sébastien Szymanski
@ 2017-03-30 20:27   ` Arnout Vandecappelle
  0 siblings, 0 replies; 12+ messages in thread
From: Arnout Vandecappelle @ 2017-03-30 20:27 UTC (permalink / raw)
  To: buildroot



On 24-03-17 17:20, S?bastien Szymanski wrote:
> Now that we use mkfs to generate ext filesystem image, call mkfs
> directly from fs/ext2/ext2.mk and remove mke2img package.

 "and" in the commit log is a flag that something is up: you're doing two
things, so it should be two patches. First let fs/ext2 use the new script, then
remove mke2img.

 But when you look at it that way, patch 2 becomes pretty useless. Since patch 2
anyway largely rewrites the script entirely, I would just drop it and
immediately call mke2fs directly from the .mk file.

[snip]
> diff --git a/fs/ext2/ext2.mk b/fs/ext2/ext2.mk
> index 30f1d17..3872e52 100644
> --- a/fs/ext2/ext2.mk
> +++ b/fs/ext2/ext2.mk
> @@ -4,32 +4,33 @@
>  #
>  ################################################################################
>  
> -EXT2_OPTS = -G $(BR2_TARGET_ROOTFS_EXT2_GEN) -R $(BR2_TARGET_ROOTFS_EXT2_REV)
> +EXT2_OPTS = -d $(TARGET_DIR)
> +EXT2_OPTS += -r $(BR2_TARGET_ROOTFS_EXT2_REV)
>  
> -ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)),0)

 This should have been removed in patch 1. Without the auto-calculation, if no
size is given, genext2fs will fail I think. Well, with size 0 it will also fail,
but probably with a more obvious error message.


> -EXT2_OPTS += -b $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)
> +NB_INODES := $(strip $(BR2_TARGET_ROOTFS_EXT2_INODES))

 Why do you need := here?

> +ifeq ($(NB_INODES),0)
> +NB_INODES = $(shell echo $$(($$(find $(TARGET_DIR) | wc -l) + 400)))

 Not sure, but perhaps also drop this autocalculation of number of inodes?
mke2fs will use a number of inodes depending on the filesystem size, which is
possibly more useful than this autocalculation... Anyway, can be done in a later
patch.

 If you do keep NB_INODES, it's not needed to go through $(shell...), you can
just do

NB_INODES = $$(( $(BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES) + \
	`find $(TARGET_DIR) | wc -l` + 400 ))

(Note that we prefer `` over $() to reduce the double-dollaring.)

 Also, the variable name should be prefixed with EXT2_.


>  endif
> -
> -ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_INODES)),0)
> -EXT2_OPTS += -i $(BR2_TARGET_ROOTFS_EXT2_INODES)
> -endif
> -EXT2_OPTS += -I $(BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES)
> +EXT2_OPTS += -N $(shell echo $$(($(NB_INODES) + $(BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES))))

 Easier to include this calculation above, so just -N $(NB_INODES) here.

>  
>  ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)),0)
> -EXT2_OPTS += -r $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)
> +EXT2_OPTS += -m $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)
>  endif
>  
> +EXT2_OPTS += -O ^64bit
> +EXT2_OPTS += -T small -F
> +
>  # qstrip results in stripping consecutive spaces into a single one. So the
>  # variable is not qstrip-ed to preserve the integrity of the string value.
>  EXT2_LABEL := $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_LABEL))
>  ifneq ($(EXT2_LABEL),)
> -EXT2_OPTS += -l "$(EXT2_LABEL)"
> +EXT2_OPTS += -L "$(EXT2_LABEL)"
>  endif
>  
> -ROOTFS_EXT2_DEPENDENCIES = host-mke2img
> +ROOTFS_EXT2_DEPENDENCIES = host-e2fsprogs
>  
>  define ROOTFS_EXT2_CMD
> -	PATH=$(BR_PATH) mke2img -d $(TARGET_DIR) $(EXT2_OPTS) -o $@
> +	PATH=$(BR_PATH) mkfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN) $(EXT2_OPTS) $@ $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)

 I have a slight preference to use mke2fs -t extX rather than mkfs.extX (which
allows adding the GEN option to EXT2_OPTS), but that's just personal preference.


 Regards,
 Arnout

>  endef
>  
>  rootfs-ext2-symlink:

[snip]

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH 4/4] fs/ext2: Make filesystem size a string
  2017-03-24 16:20 ` [Buildroot] [PATCH 4/4] fs/ext2: Make filesystem size a string Sébastien Szymanski
@ 2017-03-30 20:47   ` Arnout Vandecappelle
  0 siblings, 0 replies; 12+ messages in thread
From: Arnout Vandecappelle @ 2017-03-30 20:47 UTC (permalink / raw)
  To: buildroot



On 24-03-17 17:20, S?bastien Szymanski wrote:
> It allows the user to enter a size with 'k', 'm', 'g', or 't' suffix.
> Also drop BR2_TARGET_ROOTFS_EXT2_BLOCKS and use
> BR2_TARGET_ROOTFS_EXT2_SIZE instead.
> 
> Signed-off-by: S?bastien Szymanski <sebastien.szymanski@armadeus.com>
> ---
>  Config.in.legacy  | 13 +++++++++++++
>  fs/ext2/Config.in | 11 ++++++++---
>  fs/ext2/ext2.mk   |  2 +-
>  3 files changed, 22 insertions(+), 4 deletions(-)
> 
> diff --git a/Config.in.legacy b/Config.in.legacy
> index b5a68aa..04fd247 100644
> --- a/Config.in.legacy
> +++ b/Config.in.legacy
> @@ -145,6 +145,19 @@ endif
>  ###############################################################################
>  comment "Legacy options removed in 2017.05"
>  
> +config BR2_TARGET_ROOTFS_EXT2_BLOCKS
> +	int "exact size in KB has been removed"
> +	default 65536

 This should be "default 0" (and 0 everywhere else as well). The legacy handling
always compares to the previous Buildroot release, and in 2017.02 the default was 0.

 If this doesn't make it into 2017.05, that's something else entirely. But I'm
sure we'll get it for 2017.05...

> +	help
> +	  This option has been removed in favor of BR2_TARGET_ROOTFS_EXT2_SIZE.
> +	  Set this option to 65536 and set BR2_TARGET_ROOTFS_EXT2_SIZE to your
> +	  needs.

 See below, BR2_TARGET_ROOTFS_EXT2_SIZE can be set automatically.

> +
> +config BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP
> +	bool
> +	default y if BR2_TARGET_ROOTFS_EXT2_BLOCKS != 65536
> +	select BR2_LEGACY
> +
>  config BR2_PACKAGE_HOST_MKE2IMG
>  	bool "host mke2img has been removed"
>  	select BR2_LEGACY
> diff --git a/fs/ext2/Config.in b/fs/ext2/Config.in
> index dfc3b0a..8486a1e 100644
> --- a/fs/ext2/Config.in
> +++ b/fs/ext2/Config.in
> @@ -44,9 +44,14 @@ config BR2_TARGET_ROOTFS_EXT2_REV
>  config BR2_TARGET_ROOTFS_EXT2_LABEL
>  	string "filesystem label"
>  
> -config BR2_TARGET_ROOTFS_EXT2_BLOCKS
> -	int "exact size in KB"
> -	default 65536
> +config BR2_TARGET_ROOTFS_EXT2_SIZE
> +	string "exact size"
> +	default "64M"

 Default should be 60M, of course.

 We can do a little bit better for legacy handling, because we can actually use
the old int value as the string default:

 	default BR2_TARGET_ROOTFS_EXT2_BLOCKS if BR2_TARGET_ROOTFS_EXT2_BLOCKS != 0 #
legacy 2017.05



> +	help
> +	  The size of the filesystem image. If it does not have a suffix, it is
> +	  interpreted as power-of-two kilobytes. If it is suffixed by 'k', 'm',
> +	  'g', 't' (either upper-case or lower-case), then it is interpreted in
> +	  power-of-two kilobytes, megabytes, gigabytes, terabytes, etc.
>  
>  config BR2_TARGET_ROOTFS_EXT2_INODES
>  	int "exact number of inodes (leave at 0 for auto calculation)"
> diff --git a/fs/ext2/ext2.mk b/fs/ext2/ext2.mk
> index 3872e52..7b64c42 100644
> --- a/fs/ext2/ext2.mk
> +++ b/fs/ext2/ext2.mk
> @@ -30,7 +30,7 @@ endif
>  ROOTFS_EXT2_DEPENDENCIES = host-e2fsprogs
>  
>  define ROOTFS_EXT2_CMD
> -	PATH=$(BR_PATH) mkfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN) $(EXT2_OPTS) $@ $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)
> +	PATH=$(BR_PATH) mkfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN) $(EXT2_OPTS) $@ $(strip $(BR2_TARGET_ROOTFS_EXT2_SIZE))

 This should be qstrip, not strip. Strip is useless, there are no quotes around it.

 Oh, forgot to mention in my previous mail: this line is too long.

 Regards,
 Arnout

>  endef
>  
>  rootfs-ext2-symlink:
> 

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2017-03-30 20:47 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-24 16:20 [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size Sébastien Szymanski
2017-03-24 16:20 ` [Buildroot] [PATCH 2/4] package/mke2img: use mkfs to generate rootfs image Sébastien Szymanski
2017-03-24 21:58   ` Arnout Vandecappelle
2017-03-24 22:04     ` Thomas Petazzoni
2017-03-30  7:54     ` Sébastien Szymanski
2017-03-30 16:47       ` Arnout Vandecappelle
2017-03-24 16:20 ` [Buildroot] [PATCH 3/4] package/mke2img: remove unused package Sébastien Szymanski
2017-03-30 20:27   ` Arnout Vandecappelle
2017-03-24 16:20 ` [Buildroot] [PATCH 4/4] fs/ext2: Make filesystem size a string Sébastien Szymanski
2017-03-30 20:47   ` Arnout Vandecappelle
2017-03-24 21:35 ` [Buildroot] [PATCH 1/4] fs/ext2: Remove support for auto-calculation of rootfs size Arnout Vandecappelle
2017-03-25 13:43 ` Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.