From: Arnout Vandecappelle <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 4/4] fs/ext: add support for ext2 rev0 and rev1
Date: Tue, 19 Feb 2013 08:55:29 +0100 [thread overview]
Message-ID: <51232FF1.2080306@mind.be> (raw)
In-Reply-To: <2f41f484f574512df6919967f641cf2152049a22.1361142401.git.yann.morin.1998@free.fr>
On 18/02/13 00:10, Yann E. MORIN wrote:
> Some bootloaders have a buggy ext2 support, and require ext2 rev1
> instead of the traditional ext2 rev0 that genext2fs produces.
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> ---
> fs/ext/Config.in | 19 ++++++++++++-------
> fs/ext/genextfs.sh | 38 +++++++++++++++++++++++++++-----------
> 2 files changed, 39 insertions(+), 18 deletions(-)
>
> diff --git a/fs/ext/Config.in b/fs/ext/Config.in
> index 1a7a315..be0ed9c 100644
> --- a/fs/ext/Config.in
> +++ b/fs/ext/Config.in
> @@ -7,10 +7,14 @@ if BR2_TARGET_ROOTFS_EXT
>
> choice
> bool "ext generation"
> - default BR2_TARGET_ROOTFS_EXT_EXT2
> + default BR2_TARGET_ROOTFS_EXT_EXT2r0
>
> -config BR2_TARGET_ROOTFS_EXT_EXT2
> - bool "ext2"
> +config BR2_TARGET_ROOTFS_EXT_EXT2r0
> + bool "ext2 (rev0)"
> +
> +config BR2_TARGET_ROOTFS_EXT_EXT2r1
> + bool "ext2 (rev1)"
> + select BR2_PACKAGE_HOST_E2FSPROGS
>
> config BR2_TARGET_ROOTFS_EXT_EXT3
> bool "ext3"
> @@ -23,10 +27,11 @@ config BR2_TARGET_ROOTFS_EXT_EXT4
> endchoice
>
> config BR2_TARGET_ROOTFS_EXT_GEN
> - int
> - default 2 if BR2_TARGET_ROOTFS_EXT_EXT2
> - default 3 if BR2_TARGET_ROOTFS_EXT_EXT3
> - default 4 if BR2_TARGET_ROOTFS_EXT_EXT4
> + string
> + default 2.0 if BR2_TARGET_ROOTFS_EXT_EXT2r0
> + default 2.1 if BR2_TARGET_ROOTFS_EXT_EXT2r1
> + default 3 if BR2_TARGET_ROOTFS_EXT_EXT3
> + default 4 if BR2_TARGET_ROOTFS_EXT_EXT4
I think it makes things simpler if you keep the GEN as it is, and
process the rev separately. Or perhaps set
config BR2_TARGET_ROOTFS_EXT_REV
int
default 0 if BR2_TARGET_ROOTFS_EXT_EXT2r0
default 1
>
> config BR2_TARGET_ROOTFS_EXT_BLOCKS
> int "size in blocks (leave at 0 for auto calculation)"
> diff --git a/fs/ext/genextfs.sh b/fs/ext/genextfs.sh
> index fcbd43c..ef47a25 100755
> --- a/fs/ext/genextfs.sh
> +++ b/fs/ext/genextfs.sh
> @@ -6,11 +6,13 @@ export LC_ALL=C
>
> CALC_BLOCKS=1
> CALC_INODES=1
> +EXT2_REV=0
>
> while getopts x:d:D:b:i:N:m:g:e:zfqUPhVv234 f
> do
> case $f in
> - 2|3|4) GEN=$f ;;
> + 2.*) GEN=2; EXT2_REV=${f#*.} ;;
> + 3|4) GEN=$f ;;
> b) CALC_BLOCKS=0 ;;
> N) CALC_INODES=0; INODES=$OPTARG ;;
> d) TARGET_DIR=$OPTARG ;;
> @@ -56,25 +58,39 @@ for o; do
> esac
> done
>
> +ext_fsck() {
> + gen="${1}"
> + img="${2}"
> + ret=0
> + fsck.ext${gen} -pDf "${img}" >/dev/null || ret=$?
Don't bother with ${gen}, just use e2fsck.
> + # Exit codes 1 & 2 are OK, it means fs errors
> + # were successfully corrected
> + case ${ret} in
> + 0|1|2) ;;
> + *) exit 1;;
> + esac
> + # fsck.ext* will force a UUID, which we do not want
> + tune2fs -U clear "${img}" >/dev/null
> +}
> +
> # Generate the base ext2 file system
> genext2fs "$@"
>
> +# Upgrade to ext2 rev1 if needed
> +if [ ${EXT2_REV} -ge 1 -o ${GEN} -ge 3 ]; then
With BR2_TARGET_ROOTFS_EXT_REV this condition becomes simpler.
> + tune2fs -O filetype "${IMG}" >/dev/null
> + ext_fsck 2 "${IMG}"
> +fi
> +
> # Upgrade to ext3 if needed
> if [ ${GEN} -ge 3 ]; then
> tune2fs -j -J size=1 "${IMG}" >/dev/null
> + ext_fsck 3 "${IMG}"
> fi
>
> # Upgrade to ext4 if needed
> if [ ${GEN} -ge 4 ]; then
> tune2fs -O extents,uninit_bg,dir_index "${IMG}" >/dev/null
> - ret=0
> - fsck.ext4 -pDf "${IMG}" >/dev/null || ret=$?
> - # Exit codes 1 & 2 are OK, it means fs errors
> - # were successfully corrected
> - case ${ret} in
> - 0|1|2) ;;
> - *) exit 1;;
> - esac
> - # fsck.ext4 will force a UUID, which we do not want
> - tune2fs -U clear "${IMG}" >/dev/null
> + NEED_FSCK=1
I guess you originally had just a single fsck and used this variable to
decide if it was needed. That's actually a good idea.
Regards,
Arnout
> + ext_fsck 4 "${IMG}"
> fi
>
--
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: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
next prev parent reply other threads:[~2013-02-19 7:55 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-17 23:10 [Buildroot] [pull request 'next'] Pull request for branch yem-ext234 Yann E. MORIN
2013-02-17 23:10 ` [Buildroot] [PATCH 1/4] fs/ext2: enclose the ext2 options in if...endif Yann E. MORIN
2013-02-18 7:30 ` Arnout Vandecappelle
2013-02-17 23:10 ` [Buildroot] [PATCH 2/4] fs/ext2: add ability to build ext3/4 too Yann E. MORIN
2013-02-19 7:04 ` Arnout Vandecappelle
2013-02-19 12:03 ` Peter Korsgaard
2013-02-19 15:33 ` Arnout Vandecappelle
2013-02-19 17:33 ` Yann E. MORIN
2013-02-19 19:01 ` Yann E. MORIN
2013-02-17 23:10 ` [Buildroot] [PATCH 3/4] fs/ext2: rename to 'ext' as it can now build ext2/3/4 filesystems Yann E. MORIN
2013-02-19 7:20 ` Arnout Vandecappelle
2013-02-19 12:41 ` Peter Korsgaard
2013-02-19 18:14 ` Yann E. MORIN
2013-02-19 20:48 ` Peter Korsgaard
2013-02-21 22:37 ` Yann E. MORIN
2013-02-19 17:54 ` Yann E. MORIN
2013-02-17 23:10 ` [Buildroot] [PATCH 4/4] fs/ext: add support for ext2 rev0 and rev1 Yann E. MORIN
2013-02-19 7:55 ` Arnout Vandecappelle [this message]
2013-02-19 18:10 ` Yann E. MORIN
2013-02-19 23:40 ` Arnout Vandecappelle
2013-02-19 23:47 ` Yann E. MORIN
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51232FF1.2080306@mind.be \
--to=arnout@mind.be \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.