From 95a112c65e7b9ad265a9ab5ab553c4f03e7154a8 Mon Sep 17 00:00:00 2001 From: yangsheng Date: Mon, 21 Jan 2008 04:17:07 +0000 Subject: [PATCH] Branch HEAD b=14531 i=yangsheng Sync ldiskfs b_18_iam with HEAD. --- ldiskfs/ChangeLog | 33 +++++++++++++--------- ldiskfs/configure.ac | 2 +- .../patches/ext3-hash-selection.patch | 2 +- .../patches/ext3-iam-2.6.18-vanilla.patch | 5 ++-- .../patches/ext3-iam-2.6.9-rhel4.patch | 2 +- .../patches/ext3-mballoc2-2.6-fc5.patch | 10 +++---- .../patches/ext3-mballoc2-2.6.9-rhel4.patch | 10 +++---- .../patches/ext3-mballoc3-2.6.18.patch | 2 +- .../kernel_patches/patches/ext3-unlink-race.patch | 10 +++---- .../kernel_patches/series/ldiskfs-2.6-rhel4.series | 6 ++-- 10 files changed, 43 insertions(+), 39 deletions(-) diff --git a/ldiskfs/ChangeLog b/ldiskfs/ChangeLog index 9bf5e7b..33c8531 100644 --- a/ldiskfs/ChangeLog +++ b/ldiskfs/ChangeLog @@ -1,4 +1,22 @@ tbd Cluster File Systems, Inc. + * version 4.0.1 + +Severity : major +Bugzilla : 14596 +Description: deadlock in ext3_expand_extra_isize +Details : Inode expansion during ext3_mark_inode_dirty may lead to deadlock. + This is solved by making sure that ext3_expand_extra_isize isn't + called from ext3_xattr_set_handle. + +Severity : normal +Bugzilla : 14493 +Description: Kernel BUG at ... ldiskfs/ldiskfs/mballoc.c:3853 +Details : Removing the underlying device (e.g. via a SCSI rescan) can cause a + kernel BUG in ldiskfs_mb_discard_inode_preallocations(). + +-------------------------------------------------------------------------------- + +tbd Cluster File Systems, Inc. * version 3.0.3 Severity : normal @@ -10,19 +28,6 @@ Details : If a new ldiskfs filesystem is created with the "uninit_groups" "bg_unused_inodes" count is incorrectly updated. Creating a second inode in that group would update it correctly. -Severity : normal -Bugzilla : 14493 -Description: Kernel BUG at ... ldiskfs/ldiskfs/mballoc.c:3853 -Details : Removing the underlying device (e.g. via a SCSI rescan) can cause a - kernel BUG in ldiskfs_mb_discard_inode_preallocations(). - -Severity : major -Bugzilla : 14596 -Description: deadlock in ext3_expand_extra_isize -Details : Inode expansion during ext3_mark_inode_dirty may lead to deadlock. - This is solved by making sure that ext3_expand_extra_isize isn't - called from ext3_xattr_set_handle. - -------------------------------------------------------------------------------- 2007-09-27 Cluster File Systems, Inc. @@ -52,7 +57,7 @@ Details : This feature will protect the filesystem from being mounted more -------------------------------------------------------------------------------- -2007-07-30 Cluster File Systems, Inc. +2007-08-10 Cluster File Systems, Inc. * version 3.0.0 * Initial release of ldiskfs as a separate package. diff --git a/ldiskfs/configure.ac b/ldiskfs/configure.ac index b5dda07..760bc8e 100644 --- a/ldiskfs/configure.ac +++ b/ldiskfs/configure.ac @@ -1,6 +1,6 @@ # Process this file with autoconf to produce a configure script. -AC_INIT([Lustre ldiskfs], 3.0.0, [https://bugzilla.lustre.org/]) +AC_INIT([Lustre ldiskfs], 4.0.1, [https://bugzilla.lustre.org/]) AC_CONFIG_SRCDIR([lustre-ldiskfs.spec.in]) # Don't look for install-sh, etc. in .. diff --git a/ldiskfs/kernel_patches/patches/ext3-hash-selection.patch b/ldiskfs/kernel_patches/patches/ext3-hash-selection.patch index 40eb9fe..98a2c25d 100644 --- a/ldiskfs/kernel_patches/patches/ext3-hash-selection.patch +++ b/ldiskfs/kernel_patches/patches/ext3-hash-selection.patch @@ -32,7 +32,7 @@ Index: linux-2.6.9/fs/ext3/super.c Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, Opt_extents, Opt_noextents, Opt_extdebug, Opt_mballoc, Opt_nomballoc, Opt_stripe, -+ Opt_hashfunc, ++ Opt_hashfunc, }; static match_table_t tokens = { diff --git a/ldiskfs/kernel_patches/patches/ext3-iam-2.6.18-vanilla.patch b/ldiskfs/kernel_patches/patches/ext3-iam-2.6.18-vanilla.patch index e476ae5..c97c572 100644 --- a/ldiskfs/kernel_patches/patches/ext3-iam-2.6.18-vanilla.patch +++ b/ldiskfs/kernel_patches/patches/ext3-iam-2.6.18-vanilla.patch @@ -62,11 +62,10 @@ Index: linux-stage/fs/ext3/super.c INIT_LIST_HEAD(&ei->i_prealloc_list); spin_lock_init(&ei->i_prealloc_lock); @@ -695,7 +699,7 @@ - Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, Opt_grpquota, Opt_extents, Opt_noextents, Opt_extdebug, -- Opt_mballoc, Opt_nomballoc, Opt_stripe -+ Opt_mballoc, Opt_nomballoc, Opt_stripe, Opt_hashfunc, + Opt_mballoc, Opt_nomballoc, Opt_stripe, ++ Opt_hashfunc, }; static match_table_t tokens = { diff --git a/ldiskfs/kernel_patches/patches/ext3-iam-2.6.9-rhel4.patch b/ldiskfs/kernel_patches/patches/ext3-iam-2.6.9-rhel4.patch index 2311235..d78831b8 100644 --- a/ldiskfs/kernel_patches/patches/ext3-iam-2.6.9-rhel4.patch +++ b/ldiskfs/kernel_patches/patches/ext3-iam-2.6.9-rhel4.patch @@ -67,7 +67,7 @@ Index: linux-stage/fs/ext3/super.c Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, Opt_extents, Opt_noextents, Opt_extdebug, Opt_mballoc, Opt_nomballoc, Opt_stripe, -+ Opt_hashfunc, ++ Opt_hashfunc, }; static match_table_t tokens = { diff --git a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-fc5.patch b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-fc5.patch index a317463..35a9666 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-fc5.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-fc5.patch @@ -1335,8 +1335,8 @@ Index: linux-2.6.16.i686/fs/ext3/mballoc.c + struct ext3_free_extent *gex = &ac->ac_g_ex; + + J_ASSERT(ex->fe_len > 0); -+ J_ASSERT(ex->fe_len < (1 << ac->ac_sb->s_blocksize_bits) * 8); -+ J_ASSERT(ex->fe_start < (1 << ac->ac_sb->s_blocksize_bits) * 8); ++ J_ASSERT(ex->fe_len < EXT3_BLOCKS_PER_GROUP(ac->ac_sb)); ++ J_ASSERT(ex->fe_start < EXT3_BLOCKS_PER_GROUP(ac->ac_sb)); + + ac->ac_found++; + @@ -1530,8 +1530,8 @@ Index: linux-2.6.16.i686/fs/ext3/mballoc.c + i = e3b->bd_info->bb_first_free; + + while (free && ac->ac_status == AC_STATUS_CONTINUE) { -+ i = mb_find_next_zero_bit(bitmap, sb->s_blocksize * 8, i); -+ if (i >= sb->s_blocksize * 8) { ++ i = mb_find_next_zero_bit(bitmap, EXT3_BLOCKS_PER_GROUP(sb), i); ++ if (i >= EXT3_BLOCKS_PER_GROUP(sb)) { + J_ASSERT(free == 0); + break; + } @@ -1569,7 +1569,7 @@ Index: linux-2.6.16.i686/fs/ext3/mballoc.c + i = (i - le32_to_cpu(sbi->s_es->s_first_data_block)) + % EXT3_BLOCKS_PER_GROUP(sb); + -+ while (i < sb->s_blocksize * 8) { ++ while (i < EXT3_BLOCKS_PER_GROUP(sb)) { + if (!mb_test_bit(i, bitmap)) { + max = mb_find_extent(e3b, 0, i, sbi->s_stripe, &ex); + if (max >= sbi->s_stripe) { diff --git a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch index 11717e2..ebebbcf 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch @@ -1353,8 +1353,8 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + struct ext3_free_extent *gex = &ac->ac_g_ex; + + J_ASSERT(ex->fe_len > 0); -+ J_ASSERT(ex->fe_len < (1 << ac->ac_sb->s_blocksize_bits) * 8); -+ J_ASSERT(ex->fe_start < (1 << ac->ac_sb->s_blocksize_bits) * 8); ++ J_ASSERT(ex->fe_len < EXT3_BLOCKS_PER_GROUP(ac->ac_sb)); ++ J_ASSERT(ex->fe_start < EXT3_BLOCKS_PER_GROUP(ac->ac_sb)); + + ac->ac_found++; + @@ -1548,8 +1548,8 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + i = e3b->bd_info->bb_first_free; + + while (free && ac->ac_status == AC_STATUS_CONTINUE) { -+ i = mb_find_next_zero_bit(bitmap, sb->s_blocksize * 8, i); -+ if (i >= sb->s_blocksize * 8) { ++ i = mb_find_next_zero_bit(bitmap, EXT3_BLOCKS_PER_GROUP(sb), i); ++ if (i >= EXT3_BLOCKS_PER_GROUP(sb)) { + J_ASSERT(free == 0); + break; + } @@ -1587,7 +1587,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + i = (i - le32_to_cpu(sbi->s_es->s_first_data_block)) % + EXT3_BLOCKS_PER_GROUP(sb); + -+ while (i < sb->s_blocksize * 8) { ++ while (i < EXT3_BLOCKS_PER_GROUP(sb)) { + if (!mb_test_bit(i, bitmap)) { + max = mb_find_extent(e3b, 0, i, sbi->s_stripe, &ex); + if (max >= sbi->s_stripe) { diff --git a/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch b/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch index 0cae328..805f2f3 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch @@ -144,7 +144,7 @@ Index: linux-2.6.18.8/fs/ext3/super.c Opt_iopen, Opt_noiopen, Opt_iopen_nopriv, Opt_grpquota, Opt_extents, Opt_noextents, Opt_extdebug, -+ Opt_mballoc, Opt_nomballoc, Opt_stripe ++ Opt_mballoc, Opt_nomballoc, Opt_stripe, }; static match_table_t tokens = { diff --git a/ldiskfs/kernel_patches/patches/ext3-unlink-race.patch b/ldiskfs/kernel_patches/patches/ext3-unlink-race.patch index 9672766..a191796 100644 --- a/ldiskfs/kernel_patches/patches/ext3-unlink-race.patch +++ b/ldiskfs/kernel_patches/patches/ext3-unlink-race.patch @@ -2,14 +2,14 @@ Index: lustre+chaos/lustre/ldiskfs/namei.c =================================================================== --- linux-2.6.5-7.283-full.orig/fs/ext3/namei.c +++ linux-2.6.5-7.283-full/fs/ext3/namei.c -@@ -2184,8 +2184,8 @@ static int ldiskfs_link (struct dentry * - * Return -ENOENT if we've raced with unlink and i_nlink is 0. Doing - * otherwise has the potential to corrupt the orphan inode list. - */ +@@ -2184,8 +2184,8 @@ static int ext3_link (struct dentry * + * Return -ENOENT if we've raced with unlink and i_nlink is 0. Doing + * otherwise has the potential to corrupt the orphan inode list. + */ - if (inode->i_nlink == 0) - return -ENOENT; + //if (inode->i_nlink == 0) + // return -ENOENT; retry: - handle = ldiskfs_journal_start(dir, LDISKFS_DATA_TRANS_BLOCKS + + handle = ext3_journal_start(dir, EXT3_DATA_TRANS_BLOCKS + diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series index 2e7850b..85ee0a0 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series @@ -14,9 +14,9 @@ ext3-mballoc3-core.patch ext3-mballoc3-rhel4.patch ext3-nlinks-2.6.9.patch ext3-ialloc-2.6.patch -ext3-lookup-dotdot-2.6.9.patch -ext3-sector_t-overflow-2.6.9-rhel4.patch -ext3-check-jbd-errors-2.6.9.patch +ext3-lookup-dotdot-2.6.9.patch +ext3-sector_t-overflow-2.6.9-rhel4.patch +ext3-check-jbd-errors-2.6.9.patch ext3-uninit-2.6.9.patch ext3-nanosecond-2.6-rhel4.patch ext3-mmp-2.6-rhel4.patch -- 1.8.3.1