From: adilger Date: Tue, 25 Sep 2007 16:39:33 +0000 (+0000) Subject: Branch b1_6 X-Git-Tag: v1_7_0_51~686 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=14e99751ccc114d0c64ecbd760d92e63f923f25e;ds=sidebyside Branch b1_6 Description: e2fsck reports "invalid unused inodes count" Details : If a new ldiskfs filesystem is created with the "uninit_groups" feature and only a single inode is created in a group then the "bg_unused_inodes" count is incorrectly updated. Creating a second inode in that group would update it correctly. i=behlendorf i=valerie --- diff --git a/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-sles10.patch b/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-sles10.patch index 62b1f50..32a9810 100644 --- a/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-sles10.patch +++ b/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-sles10.patch @@ -392,7 +392,7 @@ Index: linux-2.6.16.27-0.9-full/fs/ext3/ialloc.c + if (EXT3_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) { + if (gdp->bg_flags & cpu_to_le16(EXT3_BG_INODE_UNINIT)) { + gdp->bg_flags &= cpu_to_le16(~EXT3_BG_INODE_UNINIT); -+ free = EXT3_INODES_PER_GROUP(sb); ++ free = 0; + } else { + free = EXT3_INODES_PER_GROUP(sb) - + le16_to_cpu(gdp->bg_itable_unused); diff --git a/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-suse.patch b/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-suse.patch index 8a34ea5..80bf99b8 100644 --- a/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-suse.patch +++ b/ldiskfs/kernel_patches/patches/ext3-uninit-2.6-suse.patch @@ -381,7 +381,7 @@ Index: linux-2.6.5-7.283-full/fs/ext3/ialloc.c + if (EXT3_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) { + if (gdp->bg_flags & cpu_to_le16(EXT3_BG_INODE_UNINIT)) { + gdp->bg_flags &= cpu_to_le16(~EXT3_BG_INODE_UNINIT); -+ free = EXT3_INODES_PER_GROUP(sb); ++ free = 0; + } else { + free = EXT3_INODES_PER_GROUP(sb) - + le16_to_cpu(gdp->bg_itable_unused); diff --git a/ldiskfs/kernel_patches/patches/ext3-uninit-2.6.18.patch b/ldiskfs/kernel_patches/patches/ext3-uninit-2.6.18.patch index 906caf2..8f1c077 100644 --- a/ldiskfs/kernel_patches/patches/ext3-uninit-2.6.18.patch +++ b/ldiskfs/kernel_patches/patches/ext3-uninit-2.6.18.patch @@ -393,7 +393,7 @@ Index: linux-rhel5/fs/ext3/ialloc.c + if (EXT3_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) { + if (gdp->bg_flags & cpu_to_le16(EXT3_BG_INODE_UNINIT)) { + gdp->bg_flags &= cpu_to_le16(~EXT3_BG_INODE_UNINIT); -+ free = EXT3_INODES_PER_GROUP(sb); ++ free = 0; + } else { + free = EXT3_INODES_PER_GROUP(sb) - + le16_to_cpu(gdp->bg_itable_unused); diff --git a/ldiskfs/kernel_patches/patches/ext3-uninit-2.6.9.patch b/ldiskfs/kernel_patches/patches/ext3-uninit-2.6.9.patch index 2dbeb80..b956664 100644 --- a/ldiskfs/kernel_patches/patches/ext3-uninit-2.6.9.patch +++ b/ldiskfs/kernel_patches/patches/ext3-uninit-2.6.9.patch @@ -392,7 +392,7 @@ Index: linux-2.6.9-full/fs/ext3/ialloc.c + if (EXT3_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) { + if (gdp->bg_flags & cpu_to_le16(EXT3_BG_INODE_UNINIT)) { + gdp->bg_flags &= cpu_to_le16(~EXT3_BG_INODE_UNINIT); -+ free = EXT3_INODES_PER_GROUP(sb); ++ free = 0; + } else { + free = EXT3_INODES_PER_GROUP(sb) - + le16_to_cpu(gdp->bg_itable_unused);