All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.