All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 0/4] fs/ext2: misc enhancements (branch yem/fs-vol-id)
@ 2014-09-01 13:44 Yann E. MORIN
  2014-09-01 13:44 ` [Buildroot] [PATCH 1/4] fs/ext2: enhance option parsing in our genext2fs wrapper Yann E. MORIN
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Yann E. MORIN @ 2014-09-01 13:44 UTC (permalink / raw)
  To: buildroot

Hello All!

This series enhances the fs/ext2 generation.
Not much to say beside the individual commit logs... ;-)

Regards,
Yann E. MORIN.


The following changes since commit fcd720dfcf702d796fbc625b9abc4c06cb848d84:

  Update for 2014.08 (2014-09-01 13:20:56 +0200)

are available in the git repository at:

  git://ymorin.is-a-geek.org/buildroot yem/fs-vol-id

for you to fetch changes up to aef27eee3aa358ec0d07fd0e2a437a0f16a3b4b2:

  fs/ext2: add support for specifying UUID (2014-09-01 14:28:12 +0200)

----------------------------------------------------------------
Yann E. MORIN (4):
      fs/ext2: enhance option parsing in our genext2fs wrapper
      fs/ext2: pass the ext GEN and REV as options
      fs/ext2: add option to specify a filesystem label
      fs/ext2: add support for specifying UUID

 fs/ext2/Config.in    |  3 +++
 fs/ext2/ext2.mk      | 11 ++++++-----
 fs/ext2/genext2fs.sh | 43 +++++++++++++++++++++++++++++++++++++------
 3 files changed, 46 insertions(+), 11 deletions(-)

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH 1/4] fs/ext2: enhance option parsing in our genext2fs wrapper
  2014-09-01 13:44 [Buildroot] [PATCH 0/4] fs/ext2: misc enhancements (branch yem/fs-vol-id) Yann E. MORIN
@ 2014-09-01 13:44 ` Yann E. MORIN
  2014-09-01 13:44 ` [Buildroot] [PATCH 2/4] fs/ext2: pass the ext GEN and REV as options Yann E. MORIN
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Yann E. MORIN @ 2014-09-01 13:44 UTC (permalink / raw)
  To: buildroot

In the following changesets, we are going to introduce new options to
our genext2fs wrapper, but which are unknown to the real genext2fs.
Thus, we need to filter those incompatible options out, so as not to
confuse genext2fs.

We currently only skim over the existing options, and only add our own
ontop of the existing ones.

Change this behaviour by regenerating a valid set of options, and get
rid of the previous set passed to the wrapper. Also, do not carry the
image filename in that new set of options, and pass it explicitly in the
actual call to genext2fs.

This complexifies a bit the code, and is a no-op for now, but it will be
used by the following changes.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 fs/ext2/genext2fs.sh | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/fs/ext2/genext2fs.sh b/fs/ext2/genext2fs.sh
index 6f7b075..db80383 100755
--- a/fs/ext2/genext2fs.sh
+++ b/fs/ext2/genext2fs.sh
@@ -9,16 +9,32 @@ CALC_INODES=1
 EXT_OPTS=
 EXT_OPTS_O=
 
+# Tell getopts to stop after all existing options,
+# and not parse the ones we add
+set -- "${@}" --
 while getopts x:d:D:b:i:N:m:g:e:zfqUPhVv f
 do
     case $f in
-	b) CALC_BLOCKS=0 ;;
-	N) CALC_INODES=0; INODES=$OPTARG ;;
-	d) TARGET_DIR=$OPTARG ;;
+        # The following options are specific to our wrapper,
+        # so do not pass them to the real genext2fs.
+        # (none for now)
+        # Any other option is recognised by the real genext2fs,
+        # so we want to keep them.
+        b) CALC_BLOCKS=0 ;;
+        N) CALC_INODES=0; INODES=$OPTARG ;;
+        d) TARGET_DIR=$OPTARG ;;
     esac
+    # Append the option, and its arg if there's one
+    set -- "${@}" "-${f}"
+    if [ "${OPTARG+set}" = "set" ]; then
+        set -- "${@}" "${OPTARG}"
+    fi
 done
 eval IMG="\"\${${OPTIND}}\""
 
+# Get rid of all old options, up to and including our '--' marker
+while [ "${1}" != "--" ]; do shift; done; shift
+
 # calculate needed inodes
 if [ $CALC_INODES -eq 1 ];
 then
@@ -117,5 +133,5 @@ if [ -n "${EXT_OPTS_O}" ]; then
 fi
 
 # Generate and upgrade the filesystem
-genext2fs "$@"
+genext2fs "$@" "${IMG}"
 e2tunefsck ${EXT_OPTS}
-- 
1.9.1

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

* [Buildroot] [PATCH 2/4] fs/ext2: pass the ext GEN and REV as options
  2014-09-01 13:44 [Buildroot] [PATCH 0/4] fs/ext2: misc enhancements (branch yem/fs-vol-id) Yann E. MORIN
  2014-09-01 13:44 ` [Buildroot] [PATCH 1/4] fs/ext2: enhance option parsing in our genext2fs wrapper Yann E. MORIN
@ 2014-09-01 13:44 ` Yann E. MORIN
  2014-09-01 13:44 ` [Buildroot] [PATCH 3/4] fs/ext2: add option to specify a filesystem label Yann E. MORIN
  2014-09-01 13:44 ` [Buildroot] [PATCH 4/4] fs/ext2: add support for specifying UUID Yann E. MORIN
  3 siblings, 0 replies; 5+ messages in thread
From: Yann E. MORIN @ 2014-09-01 13:44 UTC (permalink / raw)
  To: buildroot

Now that we do have a way to pass options to the wrapper, that are not
options to the real genext2fs, use that mechanism to pass the generation
and revision of ext filesystem to generate.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 fs/ext2/ext2.mk      |  7 ++-----
 fs/ext2/genext2fs.sh | 10 ++++++++--
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/fs/ext2/ext2.mk b/fs/ext2/ext2.mk
index 1bc49da..b474e43 100644
--- a/fs/ext2/ext2.mk
+++ b/fs/ext2/ext2.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-EXT2_OPTS :=
+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)
@@ -20,11 +20,8 @@ endif
 
 ROOTFS_EXT2_DEPENDENCIES = host-genext2fs host-e2fsprogs
 
-EXT2_ENV  = GEN=$(BR2_TARGET_ROOTFS_EXT2_GEN)
-EXT2_ENV += REV=$(BR2_TARGET_ROOTFS_EXT2_REV)
-
 define ROOTFS_EXT2_CMD
-	PATH=$(BR_PATH) $(EXT2_ENV) fs/ext2/genext2fs.sh -d $(TARGET_DIR) $(EXT2_OPTS) $@
+	PATH=$(BR_PATH) fs/ext2/genext2fs.sh -d $(TARGET_DIR) $(EXT2_OPTS) $@
 endef
 
 rootfs-ext2-symlink:
diff --git a/fs/ext2/genext2fs.sh b/fs/ext2/genext2fs.sh
index db80383..f682b24 100755
--- a/fs/ext2/genext2fs.sh
+++ b/fs/ext2/genext2fs.sh
@@ -9,15 +9,21 @@ CALC_INODES=1
 EXT_OPTS=
 EXT_OPTS_O=
 
+# Backward compatibility
+if [ -n "${GEN}" -o -n "${REV}" ]; then
+    printf "GEN and REV are now to be specified with the -G and -R options\n" >&2
+fi
+
 # Tell getopts to stop after all existing options,
 # and not parse the ones we add
 set -- "${@}" --
-while getopts x:d:D:b:i:N:m:g:e:zfqUPhVv f
+while getopts x:d:D:b:i:N:m:g:e:zfqUPhVvG:R: f
 do
     case $f in
         # The following options are specific to our wrapper,
         # so do not pass them to the real genext2fs.
-        # (none for now)
+        G) GEN=$OPTARG; continue ;;
+        R) REV=$OPTARG; continue ;;
         # Any other option is recognised by the real genext2fs,
         # so we want to keep them.
         b) CALC_BLOCKS=0 ;;
-- 
1.9.1

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

* [Buildroot] [PATCH 3/4] fs/ext2: add option to specify a filesystem label
  2014-09-01 13:44 [Buildroot] [PATCH 0/4] fs/ext2: misc enhancements (branch yem/fs-vol-id) Yann E. MORIN
  2014-09-01 13:44 ` [Buildroot] [PATCH 1/4] fs/ext2: enhance option parsing in our genext2fs wrapper Yann E. MORIN
  2014-09-01 13:44 ` [Buildroot] [PATCH 2/4] fs/ext2: pass the ext GEN and REV as options Yann E. MORIN
@ 2014-09-01 13:44 ` Yann E. MORIN
  2014-09-01 13:44 ` [Buildroot] [PATCH 4/4] fs/ext2: add support for specifying UUID Yann E. MORIN
  3 siblings, 0 replies; 5+ messages in thread
From: Yann E. MORIN @ 2014-09-01 13:44 UTC (permalink / raw)
  To: buildroot

Filesystems of the ext familly can carry a filesystem label.
Add an option for the user to specify such a label.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 fs/ext2/Config.in    | 3 +++
 fs/ext2/ext2.mk      | 4 ++++
 fs/ext2/genext2fs.sh | 9 ++++++++-
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/fs/ext2/Config.in b/fs/ext2/Config.in
index adba6f3..65828f2 100644
--- a/fs/ext2/Config.in
+++ b/fs/ext2/Config.in
@@ -42,6 +42,9 @@ config BR2_TARGET_ROOTFS_EXT2_REV
 	default 0   if BR2_TARGET_ROOTFS_EXT2_2r0
 	default 1   if !BR2_TARGET_ROOTFS_EXT2_2r0
 
+config BR2_TARGET_ROOTFS_EXT2_LABEL
+	string "filesystem label"
+
 config BR2_TARGET_ROOTFS_EXT2_BLOCKS
 	int "size in blocks (leave at 0 for auto calculation)"
 	default 0
diff --git a/fs/ext2/ext2.mk b/fs/ext2/ext2.mk
index b474e43..b0eb25f 100644
--- a/fs/ext2/ext2.mk
+++ b/fs/ext2/ext2.mk
@@ -18,6 +18,10 @@ ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)),0)
 EXT2_OPTS += -m $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)
 endif
 
+ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_LABEL)),0)
+EXT2_OPTS += -L $(call qstrip,$(BR2_TARGET_ROOTFS_EXT2_LABEL))
+endif
+
 ROOTFS_EXT2_DEPENDENCIES = host-genext2fs host-e2fsprogs
 
 define ROOTFS_EXT2_CMD
diff --git a/fs/ext2/genext2fs.sh b/fs/ext2/genext2fs.sh
index f682b24..598aee2 100755
--- a/fs/ext2/genext2fs.sh
+++ b/fs/ext2/genext2fs.sh
@@ -8,6 +8,7 @@ CALC_BLOCKS=1
 CALC_INODES=1
 EXT_OPTS=
 EXT_OPTS_O=
+LABEL=
 
 # Backward compatibility
 if [ -n "${GEN}" -o -n "${REV}" ]; then
@@ -17,13 +18,14 @@ fi
 # Tell getopts to stop after all existing options,
 # and not parse the ones we add
 set -- "${@}" --
-while getopts x:d:D:b:i:N:m:g:e:zfqUPhVvG:R: f
+while getopts x:d:D:b:i:N:m:g:e:zfqUPhVvG:R:L: f
 do
     case $f in
         # The following options are specific to our wrapper,
         # so do not pass them to the real genext2fs.
         G) GEN=$OPTARG; continue ;;
         R) REV=$OPTARG; continue ;;
+        L) LABEL=$OPTARG; continue ;;
         # Any other option is recognised by the real genext2fs,
         # so we want to keep them.
         b) CALC_BLOCKS=0 ;;
@@ -133,6 +135,11 @@ if [ ${GEN} -ge 4 ]; then
     EXT_OPTS_O="${EXT_OPTS_O},extents,uninit_bg,dir_index"
 fi
 
+# Set a label if specified
+if [ -n "${LABEL}" ]; then
+    EXT_OPTS="${EXT_OPTS} -L ${LABEL}"
+fi
+
 # Add our -O options (there will be at most one leading comma, remove it)
 if [ -n "${EXT_OPTS_O}" ]; then
     EXT_OPTS="${EXT_OPTS} -O ${EXT_OPTS_O#,}"
-- 
1.9.1

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

* [Buildroot] [PATCH 4/4] fs/ext2: add support for specifying UUID
  2014-09-01 13:44 [Buildroot] [PATCH 0/4] fs/ext2: misc enhancements (branch yem/fs-vol-id) Yann E. MORIN
                   ` (2 preceding siblings ...)
  2014-09-01 13:44 ` [Buildroot] [PATCH 3/4] fs/ext2: add option to specify a filesystem label Yann E. MORIN
@ 2014-09-01 13:44 ` Yann E. MORIN
  3 siblings, 0 replies; 5+ messages in thread
From: Yann E. MORIN @ 2014-09-01 13:44 UTC (permalink / raw)
  To: buildroot

Some post-image script might want to call our own genext2fs wrapper,
instead of re-inventing their own wrapper. Also, such scripts may want
to set a specific UUID to the newly generated filesystem.

Given how tricky the ext2/3/4 handling can be (remember our past bad
experiences with it?), and given that we already have a proven, stable
solution for generating ext2/3/4 filesystems, add a new option that
allows external callers to specify the UUID, instead of letting tune2fs
compute a random one, which is kept as the default behaviour if no UUID
is specified.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 fs/ext2/genext2fs.sh | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/fs/ext2/genext2fs.sh b/fs/ext2/genext2fs.sh
index 598aee2..a3150d5 100755
--- a/fs/ext2/genext2fs.sh
+++ b/fs/ext2/genext2fs.sh
@@ -9,6 +9,7 @@ CALC_INODES=1
 EXT_OPTS=
 EXT_OPTS_O=
 LABEL=
+UUID=random
 
 # Backward compatibility
 if [ -n "${GEN}" -o -n "${REV}" ]; then
@@ -18,7 +19,7 @@ fi
 # Tell getopts to stop after all existing options,
 # and not parse the ones we add
 set -- "${@}" --
-while getopts x:d:D:b:i:N:m:g:e:zfqUPhVvG:R:L: f
+while getopts x:d:D:b:i:N:m:g:e:zfqUPhVvG:R:L:u: f
 do
     case $f in
         # The following options are specific to our wrapper,
@@ -26,6 +27,7 @@ do
         G) GEN=$OPTARG; continue ;;
         R) REV=$OPTARG; continue ;;
         L) LABEL=$OPTARG; continue ;;
+        u) UUID=$OPTARG; continue ;;
         # Any other option is recognised by the real genext2fs,
         # so we want to keep them.
         b) CALC_BLOCKS=0 ;;
@@ -76,7 +78,7 @@ e2tunefsck() {
     # 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 random "${IMG}"
+    tune2fs -U "${UUID}" "${IMG}"
 
     # Upgrade the filesystem
     if [ $# -ne 0 ]; then
-- 
1.9.1

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

end of thread, other threads:[~2014-09-01 13:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-01 13:44 [Buildroot] [PATCH 0/4] fs/ext2: misc enhancements (branch yem/fs-vol-id) Yann E. MORIN
2014-09-01 13:44 ` [Buildroot] [PATCH 1/4] fs/ext2: enhance option parsing in our genext2fs wrapper Yann E. MORIN
2014-09-01 13:44 ` [Buildroot] [PATCH 2/4] fs/ext2: pass the ext GEN and REV as options Yann E. MORIN
2014-09-01 13:44 ` [Buildroot] [PATCH 3/4] fs/ext2: add option to specify a filesystem label Yann E. MORIN
2014-09-01 13:44 ` [Buildroot] [PATCH 4/4] fs/ext2: add support for specifying UUID Yann E. MORIN

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.