summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann E. MORIN <yann.morin.1998@free.fr>2013-04-11 12:17:53 (GMT)
committer Peter Korsgaard <jacmet@sunsite.dk>2013-04-12 12:43:22 (GMT)
commit5fd27fc84998c6683728353f57dc7c6000e5b4c3 (patch)
tree37211ef76e8f92096174cc1f267aff3a304f5054
parentaaefab09c7573f81a83c164ce2daca35b6a420e6 (diff)
downloadbuildroot-5fd27fc84998c6683728353f57dc7c6000e5b4c3.tar.gz
buildroot-5fd27fc84998c6683728353f57dc7c6000e5b4c3.tar.bz2
fs/ext2: add support for ext2 rev0 and rev1
Some bootloaders have a buggy ext2 support, and require ext2 rev1 instead of the traditional ext2 rev0 that genext2fs produces. tune2fs accepts only one '-O list' at a time, so we need to construct a list of -O options. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Arnout Vandecappelle <arnout@mind.be> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
-rw-r--r--fs/ext2/Config.in20
-rw-r--r--fs/ext2/ext2.mk3
-rwxr-xr-xfs/ext2/genext2fs.sh12
3 files changed, 28 insertions, 7 deletions
diff --git a/fs/ext2/Config.in b/fs/ext2/Config.in
index c8320e2..097242e 100644
--- a/fs/ext2/Config.in
+++ b/fs/ext2/Config.in
@@ -6,12 +6,20 @@ config BR2_TARGET_ROOTFS_EXT2
if BR2_TARGET_ROOTFS_EXT2
+config BR2_TARGET_ROOTFS_EXT2_2
+ bool
+
choice
bool "ext2/3/4 variant"
- default BR2_TARGET_ROOTFS_EXT2_2
+ default BR2_TARGET_ROOTFS_EXT2_2r0
-config BR2_TARGET_ROOTFS_EXT2_2
- bool "ext2"
+config BR2_TARGET_ROOTFS_EXT2_2r0
+ bool "ext2 (rev0)"
+ select BR2_TARGET_ROOTFS_EXT2_2
+
+config BR2_TARGET_ROOTFS_EXT2_2r1
+ bool "ext2 (rev1)"
+ select BR2_TARGET_ROOTFS_EXT2_2
config BR2_TARGET_ROOTFS_EXT2_3
bool "ext3"
@@ -27,6 +35,12 @@ config BR2_TARGET_ROOTFS_EXT2_GEN
default 3 if BR2_TARGET_ROOTFS_EXT2_3
default 4 if BR2_TARGET_ROOTFS_EXT2_4
+# All ext generations are revision 1, except ext2r0, which is revision 0
+config BR2_TARGET_ROOTFS_EXT2_REV
+ int
+ default 0 if BR2_TARGET_ROOTFS_EXT2_2r0
+ default 1 if !BR2_TARGET_ROOTFS_EXT2_2r0
+
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 ffb7257..d74f31e 100644
--- a/fs/ext2/ext2.mk
+++ b/fs/ext2/ext2.mk
@@ -20,7 +20,8 @@ endif
ROOTFS_EXT2_DEPENDENCIES = host-genext2fs host-e2fsprogs
-EXT2_ENV = GEN=$(BR2_TARGET_ROOTFS_EXT2_GEN)
+EXT2_ENV = GEN=$(BR2_TARGET_ROOTFS_EXT2_GEN)
+EXT2_ENV += REV=$(BR2_TARGET_ROOTFS_EXT2_REV)
define ROOTFS_EXT2_CMD
PATH=$(TARGET_PATH) $(EXT2_ENV) fs/ext2/genext2fs.sh -d $(TARGET_DIR) $(EXT2_OPTS) $@
diff --git a/fs/ext2/genext2fs.sh b/fs/ext2/genext2fs.sh
index c2049f5..76f454c 100755
--- a/fs/ext2/genext2fs.sh
+++ b/fs/ext2/genext2fs.sh
@@ -78,15 +78,21 @@ e2tunefsck() {
}
# Check we know what generation to generate
-case "${GEN}" in
- 2|3|4)
+case "${GEN}:${REV}" in
+ 2:0|2:1|3:1|4:1)
;;
*)
- printf "%s: unknown ext generation to generate\n" "${0##*/}" >&2
+ printf "%s: unknown ext generation '%s' and/or revision '%s'\n" \
+ "${0##*/}" "${GEN}" "${REV}" >&2
exit 1
;;
esac
+# Upgrade to rev1 if needed
+if [ ${REV} -ge 1 ]; then
+ EXT_OPTS_O="${EXT_OPTS_O},filetype"
+fi
+
# Add a journal for ext3 and above
if [ ${GEN} -ge 3 ]; then
EXT_OPTS="${EXT_OPTS} -j -J size=1"