From 4a10a54b89bf963cc2c0811eeb5e33f4d4200dc3 Mon Sep 17 00:00:00 2001 From: yangsheng Date: Thu, 5 Jan 2012 18:30:42 +0800 Subject: [PATCH] LU-781 kernel: kernel update [RHEL6.2 2.6.32-220] Add support for RHEL6.2. The version is 2.6.32-220.el6. Change-Id: Icc03a2f5d8b377aa1b1180ae09056989bbc84a9d Signed-off-by: Yang Sheng Signed-off-by: Bobi Jam Signed-off-by: Oleg Drokin Reviewed-on: http://review.whamcloud.com/1986 Tested-by: Hudson Reviewed-by: Andreas Dilger --- build/lbuild-rhel | 3 +- build/lbuild-rhel6 | 6 +- .../patches/export-ext4-2.6-rhel6.patch | 42 ++++++------ .../patches/ext4-big-endian-check-2.6-rhel6.patch | 26 ++++---- .../patches/ext4-disable-mb-cache-rhel6.patch | 50 +++++++-------- .../patches/ext4-dynlocks-common-rhel6.patch | 23 ++++--- .../patches/ext4-extents-mount-option-rhel6.patch | 62 +++++++++--------- .../patches/ext4-force_over_128tb-rhel6.patch | 24 +++---- .../patches/ext4-max-dir-size-rhel6.patch | 40 ++++++------ .../patches/ext4-mballoc-extra-checks-rhel6.patch | 68 ++++++++++---------- .../kernel_patches/patches/ext4-misc-rhel6.patch | 70 ++++++++++---------- .../kernel_patches/patches/ext4-mmp-rhel6.patch | 36 +++++------ .../patches/ext4-prealloc-rhel6.patch | 75 +++++++++++----------- .../patches/ext4_data_in_dirent-rhel6.patch | 38 +++++------ .../kernel_patches/series/ldiskfs-2.6-rhel6.series | 2 +- lustre/ChangeLog | 10 ++- lustre/autoconf/lustre-core.m4 | 13 ++-- .../kernel-2.6.32-2.6-rhel6-i686.config | 64 +++++++++++++----- .../kernel-2.6.32-2.6-rhel6-x86_64.config | 68 ++++++++++++++------ .../patches/dev_read_only-2.6.32-rhel6.patch | 20 +----- .../patches/vfs_races-2.6.32-rhel6.patch | 8 +-- lustre/kernel_patches/series/2.6-rhel6.series | 1 - lustre/kernel_patches/targets/2.6-rhel6.target.in | 2 +- lustre/kernel_patches/which_patch | 4 +- lustre/ldlm/ldlm_lockd.c | 2 +- lustre/obdclass/obd_mount.c | 12 ++-- lustre/ptlrpc/ptlrpc_internal.h | 2 +- lustre/ptlrpc/sec.c | 2 +- 28 files changed, 418 insertions(+), 355 deletions(-) diff --git a/build/lbuild-rhel b/build/lbuild-rhel index 87e4815..0aa22ce 100644 --- a/build/lbuild-rhel +++ b/build/lbuild-rhel @@ -21,8 +21,7 @@ get_rpmbuildopts() { # patching common to all releases patch_spec_common() { - sed -i -e 's/^\(%define signmodules \).*/\10/' \ - -e '/find $RPM_BUILD_ROOT\/lib\/modules\/$KernelVer/a\ + sed -i -e '/find $RPM_BUILD_ROOT\/lib\/modules\/$KernelVer/a\ cp -a fs/ext3/* $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/fs/ext3 \ cp -a fs/ext4/* $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/fs/ext4' \ SPECS/$SPEC_NAME 2>&1 || \ diff --git a/build/lbuild-rhel6 b/build/lbuild-rhel6 index 4381c3f..fd081ae 100644 --- a/build/lbuild-rhel6 +++ b/build/lbuild-rhel6 @@ -29,9 +29,9 @@ ApplyOptionalPatch linux-%{version}-lustre.patch\ ' \ -e '/rm -f include\/generated\/kernel.cross/i\ # lustre kernel config.\ - if [ -f %{_topdir}/lustre/lustre/kernel_patches/kernel_configs/kernel-%{version}-2.6-rhel6-$Arch.config ]; then\ - echo "# $Arch" > configs/kernel-%{version}-$Arch.config\ - cat %{_topdir}/lustre/lustre/kernel_patches/kernel_configs/kernel-%{version}-2.6-rhel6-$Arch.config >> configs/kernel-%{version}-$Arch.config\ + if [ -f %{_topdir}/lustre/lustre/kernel_patches/kernel_configs/kernel-%{version}-2.6-rhel6-%{_target_cpu}.config ]; then\ + echo "# $Arch" > configs/kernel-%{version}-%{_target_cpu}.config\ + cat %{_topdir}/lustre/lustre/kernel_patches/kernel_configs/kernel-%{version}-2.6-rhel6-%{_target_cpu}.config >> configs/kernel-%{version}-%{_target_cpu}.config\ fi'\ SPECS/$SPEC_NAME 2>&1 || \ fatal 1 "Error while editing SPECS/$SPEC_NAME" diff --git a/ldiskfs/kernel_patches/patches/export-ext4-2.6-rhel6.patch b/ldiskfs/kernel_patches/patches/export-ext4-2.6-rhel6.patch index c3411d2..d4a1af7 100644 --- a/ldiskfs/kernel_patches/patches/export-ext4-2.6-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/export-ext4-2.6-rhel6.patch @@ -1,8 +1,8 @@ -Index: linux-2.6.32.i386/fs/ext4/super.c +Index: linux-stage/fs/ext4/super.c =================================================================== ---- linux-2.6.32.i386.orig/fs/ext4/super.c 2010-04-07 14:18:32.000000000 +0530 -+++ linux-2.6.32.i386/fs/ext4/super.c 2010-04-07 14:19:47.000000000 +0530 -@@ -291,6 +291,8 @@ +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -301,6 +301,8 @@ void ext4_journal_abort_handle(const cha jbd2_journal_abort_handle(handle); } @@ -11,7 +11,7 @@ Index: linux-2.6.32.i386/fs/ext4/super.c /* Deal with the reporting of failure conditions on a filesystem such as * inconsistencies detected or read IO failures. * -@@ -3030,6 +3032,8 @@ +@@ -3498,6 +3500,8 @@ out_fail: return ret; } @@ -20,7 +20,7 @@ Index: linux-2.6.32.i386/fs/ext4/super.c /* * Setup any per-fs journal parameters now. We'll do this both on * initial mount, once the journal has been initialised but before we've -@@ -4088,6 +4092,12 @@ +@@ -4603,6 +4607,12 @@ int ext4_map_inode_page(struct inode *in unsigned long *blocks, int *created, int create); EXPORT_SYMBOL(ext4_map_inode_page); @@ -33,24 +33,24 @@ Index: linux-2.6.32.i386/fs/ext4/super.c MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others"); MODULE_DESCRIPTION("Fourth Extended Filesystem"); MODULE_LICENSE("GPL"); -Index: linux-2.6.32.i386/fs/ext4/ext4.h +Index: linux-stage/fs/ext4/ext4.h =================================================================== ---- linux-2.6.32.i386.orig/fs/ext4/ext4.h 2010-04-07 14:17:04.000000000 +0530 -+++ linux-2.6.32.i386/fs/ext4/ext4.h 2010-04-07 14:20:34.000000000 +0530 -@@ -1385,6 +1385,8 @@ +--- linux-stage.orig/fs/ext4/ext4.h ++++ linux-stage/fs/ext4/ext4.h +@@ -1599,6 +1599,8 @@ extern unsigned ext4_init_inode_bitmap(s struct buffer_head *bh, ext4_group_t group, struct ext4_group_desc *desc); +extern struct buffer_head *ext4_read_inode_bitmap(struct super_block *sb, + ext4_group_t block_group); extern void mark_bitmap_end(int start_bit, int end_bit, char *bitmap); - - /* mballoc.c */ -Index: linux-2.6.32.i386/fs/ext4/ialloc.c + extern int ext4_init_inode_table(struct super_block *sb, + ext4_group_t group, int barrier); +Index: linux-stage/fs/ext4/ialloc.c =================================================================== ---- linux-2.6.32.i386.orig/fs/ext4/ialloc.c 2009-12-03 09:21:21.000000000 +0530 -+++ linux-2.6.32.i386/fs/ext4/ialloc.c 2010-04-07 14:19:47.000000000 +0530 -@@ -98,7 +98,7 @@ +--- linux-stage.orig/fs/ext4/ialloc.c ++++ linux-stage/fs/ext4/ialloc.c +@@ -97,7 +97,7 @@ unsigned ext4_init_inode_bitmap(struct s * * Return buffer_head of bitmap on success or NULL. */ @@ -59,7 +59,7 @@ Index: linux-2.6.32.i386/fs/ext4/ialloc.c ext4_read_inode_bitmap(struct super_block *sb, ext4_group_t block_group) { struct ext4_group_desc *desc; -@@ -161,6 +161,7 @@ +@@ -161,6 +161,7 @@ ext4_read_inode_bitmap(struct super_bloc } return bh; } @@ -67,11 +67,11 @@ Index: linux-2.6.32.i386/fs/ext4/ialloc.c /* * NOTE! When we get the inode, we're the only people -Index: linux-2.6.32.i386/fs/ext4/balloc.c +Index: linux-stage/fs/ext4/balloc.c =================================================================== ---- linux-2.6.32.i386.orig/fs/ext4/balloc.c 2010-03-19 15:43:37.000000000 +0530 -+++ linux-2.6.32.i386/fs/ext4/balloc.c 2010-04-07 14:19:47.000000000 +0530 -@@ -235,6 +235,7 @@ +--- linux-stage.orig/fs/ext4/balloc.c ++++ linux-stage/fs/ext4/balloc.c +@@ -229,6 +229,7 @@ struct ext4_group_desc * ext4_get_group_ *bh = sbi->s_group_desc[group_desc]; return desc; } diff --git a/ldiskfs/kernel_patches/patches/ext4-big-endian-check-2.6-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-big-endian-check-2.6-rhel6.patch index 6a1ef25..2b1eb8a 100644 --- a/ldiskfs/kernel_patches/patches/ext4-big-endian-check-2.6-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-big-endian-check-2.6-rhel6.patch @@ -1,26 +1,26 @@ Index: linux-stage/fs/ext4/super.c =================================================================== ---- linux-stage.orig/fs/ext4/super.c 2011-03-11 15:27:08.000000000 +0800 -+++ linux-stage/fs/ext4/super.c 2011-03-11 15:29:41.023089829 +0800 -@@ -72,6 +72,8 @@ - static int ext4_freeze(struct super_block *sb); +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -82,6 +82,8 @@ static void ext4_clear_request_list(void + wait_queue_head_t aio_wq[WQ_HASH_SZ]; +static int bigendian_extents; + ext4_fsblk_t ext4_block_bitmap(struct super_block *sb, struct ext4_group_desc *bg) { -@@ -1492,7 +1494,7 @@ +@@ -1178,7 +1180,7 @@ enum { + Opt_stripe, Opt_delalloc, Opt_nodelalloc, Opt_block_validity, Opt_noblock_validity, Opt_inode_readahead_blks, Opt_journal_ioprio, - Opt_discard, Opt_nodiscard, - Opt_mballoc, + Opt_mballoc, Opt_bigendian_extents, + Opt_discard, Opt_nodiscard, + Opt_init_inode_table, Opt_noinit_inode_table, }; - - static const match_table_t tokens = { -@@ -1559,6 +1561,7 @@ +@@ -1250,6 +1252,7 @@ static const match_table_t tokens = { {Opt_auto_da_alloc, "auto_da_alloc=%u"}, {Opt_auto_da_alloc, "auto_da_alloc"}, {Opt_noauto_da_alloc, "noauto_da_alloc"}, @@ -28,9 +28,9 @@ Index: linux-stage/fs/ext4/super.c {Opt_mballoc, "mballoc"}, {Opt_discard, "discard"}, {Opt_nodiscard, "nodiscard"}, -@@ -1996,6 +1999,9 @@ - break; - case Opt_mballoc: +@@ -1692,6 +1695,9 @@ set_qf_format: + else + set_opt(sbi->s_mount_opt,NO_AUTO_DA_ALLOC); break; + case Opt_bigendian_extents: + bigendian_extents = 1; @@ -38,7 +38,7 @@ Index: linux-stage/fs/ext4/super.c case Opt_discard: set_opt(sbi->s_mount_opt, DISCARD); break; -@@ -3073,6 +3079,16 @@ +@@ -3179,6 +3185,16 @@ static int ext4_fill_super(struct super_ goto failed_mount; } diff --git a/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-rhel6.patch index ee25925..6cb5b67 100644 --- a/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-disable-mb-cache-rhel6.patch @@ -1,8 +1,8 @@ Index: linux-stage/fs/ext4/ext4.h =================================================================== ---- linux-stage.orig/fs/ext4/ext4.h 2011-03-14 16:16:45.000000000 +0800 -+++ linux-stage/fs/ext4/ext4.h 2011-03-14 16:17:08.732676431 +0800 -@@ -758,7 +758,8 @@ +--- linux-stage.orig/fs/ext4/ext4.h ++++ linux-stage/fs/ext4/ext4.h +@@ -837,7 +837,8 @@ struct ext4_inode_info { /* * Mount flags */ @@ -14,25 +14,25 @@ Index: linux-stage/fs/ext4/ext4.h #define EXT4_MOUNT_ERRORS_CONT 0x00010 /* Continue on errors */ Index: linux-stage/fs/ext4/super.c =================================================================== ---- linux-stage.orig/fs/ext4/super.c 2011-03-14 16:16:45.000000000 +0800 -+++ linux-stage/fs/ext4/super.c 2011-03-14 16:18:13.831956469 +0800 -@@ -1502,6 +1502,7 @@ +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -1189,6 +1189,7 @@ enum { Opt_inode_readahead_blks, Opt_journal_ioprio, - Opt_discard, Opt_nodiscard, Opt_mballoc, Opt_bigendian_extents, Opt_force_over_128tb, -+ Opt_no_mbcache, Opt_extents, Opt_noextents, ++ Opt_no_mbcache, + Opt_discard, Opt_nodiscard, + Opt_init_inode_table, Opt_noinit_inode_table, }; - -@@ -1574,6 +1575,7 @@ +@@ -1263,6 +1264,7 @@ static const match_table_t tokens = { + {Opt_bigendian_extents, "bigendian_extents"}, + {Opt_force_over_128tb, "force_over_128tb"}, {Opt_mballoc, "mballoc"}, - {Opt_discard, "discard"}, - {Opt_nodiscard, "nodiscard"}, + {Opt_no_mbcache, "no_mbcache"}, {Opt_extents, "extents"}, {Opt_noextents, "noextents"}, - {Opt_err, NULL}, -@@ -2049,6 +2051,9 @@ + {Opt_discard, "discard"}, +@@ -1761,6 +1763,9 @@ set_qf_format: } clear_opt(sbi->s_mount_opt, EXTENTS); break; @@ -44,8 +44,8 @@ Index: linux-stage/fs/ext4/super.c "Unrecognized mount option \"%s\" " Index: linux-stage/fs/ext4/xattr.c =================================================================== ---- linux-stage.orig/fs/ext4/xattr.c 2011-03-14 16:16:43.000000000 +0800 -+++ linux-stage/fs/ext4/xattr.c 2011-03-14 16:17:08.806677883 +0800 +--- linux-stage.orig/fs/ext4/xattr.c ++++ linux-stage/fs/ext4/xattr.c @@ -86,7 +86,8 @@ # define ea_bdebug(f...) #endif @@ -56,7 +56,7 @@ Index: linux-stage/fs/ext4/xattr.c static struct buffer_head *ext4_xattr_cache_find(struct inode *, struct ext4_xattr_header *, struct mb_cache_entry **); -@@ -234,7 +235,7 @@ +@@ -234,7 +235,7 @@ bad_block: error = -EIO; goto cleanup; } @@ -65,7 +65,7 @@ Index: linux-stage/fs/ext4/xattr.c entry = BFIRST(bh); error = ext4_xattr_find_entry(&entry, name_index, name, bh->b_size, 1); if (error == -EIO) -@@ -376,7 +377,7 @@ +@@ -376,7 +377,7 @@ ext4_xattr_block_list(struct inode *inod error = -EIO; goto cleanup; } @@ -74,7 +74,7 @@ Index: linux-stage/fs/ext4/xattr.c error = ext4_xattr_list_entries(inode, BFIRST(bh), buffer, buffer_size); cleanup: -@@ -473,7 +474,9 @@ +@@ -473,7 +474,9 @@ ext4_xattr_release_block(handle_t *handl struct mb_cache_entry *ce = NULL; int error = 0; @@ -85,7 +85,7 @@ Index: linux-stage/fs/ext4/xattr.c error = ext4_journal_get_write_access(handle, bh); if (error) goto out; -@@ -700,8 +703,10 @@ +@@ -700,8 +703,10 @@ ext4_xattr_block_set(handle_t *handle, s if (i->value && i->value_len > sb->s_blocksize) return -ENOSPC; if (s->base) { @@ -98,7 +98,7 @@ Index: linux-stage/fs/ext4/xattr.c error = ext4_journal_get_write_access(handle, bs->bh); if (error) goto cleanup; -@@ -718,7 +723,7 @@ +@@ -718,7 +723,7 @@ ext4_xattr_block_set(handle_t *handle, s if (!IS_LAST_ENTRY(s->first)) ext4_xattr_rehash(header(s->base), s->here); @@ -107,7 +107,7 @@ Index: linux-stage/fs/ext4/xattr.c } unlock_buffer(bs->bh); if (error == -EIO) -@@ -801,7 +806,8 @@ +@@ -801,7 +806,8 @@ inserted: if (error) goto cleanup_dquot; } @@ -117,7 +117,7 @@ Index: linux-stage/fs/ext4/xattr.c ce = NULL; } else if (bs->bh && s->base == bs->bh->b_data) { /* We were modifying this block in-place. */ -@@ -845,7 +851,7 @@ +@@ -845,7 +851,7 @@ getblk_failed: memcpy(new_bh->b_data, s->base, new_bh->b_size); set_buffer_uptodate(new_bh); unlock_buffer(new_bh); @@ -126,7 +126,7 @@ Index: linux-stage/fs/ext4/xattr.c error = ext4_handle_dirty_metadata(handle, inode, new_bh); if (error) -@@ -1403,12 +1409,15 @@ +@@ -1403,12 +1409,15 @@ ext4_xattr_put_super(struct super_block * Returns 0, or a negative error number on failure. */ static void @@ -143,7 +143,7 @@ Index: linux-stage/fs/ext4/xattr.c ce = mb_cache_entry_alloc(ext4_xattr_cache, GFP_NOFS); if (!ce) { ea_bdebug(bh, "out of memory"); -@@ -1482,6 +1491,8 @@ +@@ -1482,6 +1491,8 @@ ext4_xattr_cache_find(struct inode *inod __u32 hash = le32_to_cpu(header->h_hash); struct mb_cache_entry *ce; diff --git a/ldiskfs/kernel_patches/patches/ext4-dynlocks-common-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-dynlocks-common-rhel6.patch index 17ed593..c91c8bc 100644 --- a/ldiskfs/kernel_patches/patches/ext4-dynlocks-common-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-dynlocks-common-rhel6.patch @@ -38,7 +38,7 @@ Index: linux-stage/fs/ext4/dynlocks.c +{ + int rc = 0; + -+ printk(KERN_INFO "init dynlocks cache\n"); ++ /* printk(KERN_INFO "init dynlocks cache\n"); */ + dynlock_cachep = kmem_cache_create("dynlock_cache", + sizeof(struct dynlock_handle), + 0, @@ -51,9 +51,9 @@ Index: linux-stage/fs/ext4/dynlocks.c + return rc; +} + -+void __exit dynlock_cache_exit(void) ++void dynlock_cache_exit(void) +{ -+ printk(KERN_INFO "exit dynlocks cache\n"); ++ /* printk(KERN_INFO "exit dynlocks cache\n"); */ + kmem_cache_destroy(dynlock_cachep); +} + @@ -122,7 +122,7 @@ Index: linux-stage/fs/ext4/dynlocks.c + goto found; + } + spin_unlock(&dl->dl_list_lock); -+ ++ + /* lock not found and we haven't allocated lock yet. allocate it */ + nhl = kmem_cache_alloc(dynlock_cachep, gfp); + if (nhl == NULL) @@ -179,7 +179,7 @@ Index: linux-stage/fs/ext4/dynlocks.c +void dynlock_unlock(struct dynlock *dl, struct dynlock_handle *hl) +{ + int wakeup = 0; -+ ++ + BUG_ON(dl == NULL); + BUG_ON(hl == NULL); + BUG_ON(dl->dl_magic != DYNLOCK_LIST_MAGIC); @@ -295,13 +295,16 @@ Index: linux-stage/fs/ext4/super.c =================================================================== --- linux-stage.orig/fs/ext4/super.c +++ linux-stage/fs/ext4/super.c -@@ -4125,32 +4125,37 @@ static int __init init_ext4_fs(void) +@@ -4620,20 +4620,23 @@ static int __init init_ext4_fs(void) return err; ext4_kset = kset_create_and_add("ext4", NULL, fs_kobj); if (!ext4_kset) - goto out4; + goto out5; ext4_proc_root = proc_mkdir("fs/ext4", NULL); + + err = ext4_init_feat_adverts(); + err = init_ext4_mballoc(); if (err) - goto out3; @@ -319,7 +322,8 @@ Index: linux-stage/fs/ext4/super.c goto out1; err = register_filesystem(&ext4_fs_type); if (err) - goto out; +@@ -4643,16 +4646,18 @@ static int __init init_ext4_fs(void) + mutex_init(&ext4_li_mtx); return 0; out: - destroy_inodecache(); @@ -333,6 +337,7 @@ Index: linux-stage/fs/ext4/super.c out3: + exit_ext4_mballoc(); +out4: + ext4_exit_feat_adverts(); remove_proc_entry("fs/ext4", NULL); kset_unregister(ext4_kset); -out4: @@ -340,9 +345,9 @@ Index: linux-stage/fs/ext4/super.c exit_ext4_system_zone(); return err; } -@@ -4158,6 +4163,7 @@ out4: - static void __exit exit_ext4_fs(void) +@@ -4661,6 +4666,7 @@ static void __exit exit_ext4_fs(void) { + ext4_destroy_lazyinit_thread(); unregister_filesystem(&ext4_fs_type); + dynlock_cache_exit(); destroy_inodecache(); diff --git a/ldiskfs/kernel_patches/patches/ext4-extents-mount-option-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-extents-mount-option-rhel6.patch index a40b8a2..c99c672 100644 --- a/ldiskfs/kernel_patches/patches/ext4-extents-mount-option-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-extents-mount-option-rhel6.patch @@ -1,7 +1,7 @@ Index: linux-stage/fs/ext4/ext4.h =================================================================== ---- linux-stage.orig/fs/ext4/ext4.h 2011-05-20 11:01:37.000000000 +0300 -+++ linux-stage/fs/ext4/ext4.h 2011-05-20 11:01:44.000000000 +0300 +--- linux-stage.orig/fs/ext4/ext4.h ++++ linux-stage/fs/ext4/ext4.h @@ -859,6 +859,7 @@ struct ext4_inode_info { #define EXT4_MOUNT_QUOTA 0x80000 /* Some quota option set */ #define EXT4_MOUNT_USRQUOTA 0x100000 /* "old" user quota */ @@ -12,8 +12,8 @@ Index: linux-stage/fs/ext4/ext4.h #define EXT4_MOUNT_I_VERSION 0x2000000 /* i_version support */ Index: linux-stage/fs/ext4/ext4_jbd2.h =================================================================== ---- linux-stage.orig/fs/ext4/ext4_jbd2.h 2011-05-20 11:00:01.000000000 +0300 -+++ linux-stage/fs/ext4/ext4_jbd2.h 2011-05-20 11:01:44.000000000 +0300 +--- linux-stage.orig/fs/ext4/ext4_jbd2.h ++++ linux-stage/fs/ext4/ext4_jbd2.h @@ -33,7 +33,7 @@ #define EXT4_SINGLEDATA_TRANS_BLOCKS(sb) \ @@ -25,9 +25,9 @@ Index: linux-stage/fs/ext4/ext4_jbd2.h ext4_handle_dirty_metadata(handle, NULL, bh) Index: linux-stage/fs/ext4/extents.c =================================================================== ---- linux-stage.orig/fs/ext4/extents.c 2011-05-20 11:00:01.000000000 +0300 -+++ linux-stage/fs/ext4/extents.c 2011-05-20 11:01:44.000000000 +0300 -@@ -2555,7 +2555,7 @@ void ext4_ext_init(struct super_block *s +--- linux-stage.orig/fs/ext4/extents.c ++++ linux-stage/fs/ext4/extents.c +@@ -2554,7 +2554,7 @@ void ext4_ext_init(struct super_block *s * possible initialization would be here */ @@ -36,7 +36,7 @@ Index: linux-stage/fs/ext4/extents.c #if defined(AGGRESSIVE_TEST) || defined(CHECK_BINSEARCH) || defined(EXTENTS_STATS) printk(KERN_INFO "EXT4-fs: file extents enabled"); #ifdef AGGRESSIVE_TEST -@@ -2582,7 +2582,7 @@ void ext4_ext_init(struct super_block *s +@@ -2581,7 +2581,7 @@ void ext4_ext_init(struct super_block *s */ void ext4_ext_release(struct super_block *sb) { @@ -47,9 +47,9 @@ Index: linux-stage/fs/ext4/extents.c #ifdef EXTENTS_STATS Index: linux-stage/fs/ext4/ialloc.c =================================================================== ---- linux-stage.orig/fs/ext4/ialloc.c 2011-05-20 11:01:36.000000000 +0300 -+++ linux-stage/fs/ext4/ialloc.c 2011-05-20 11:01:44.000000000 +0300 -@@ -1049,7 +1049,7 @@ got: +--- linux-stage.orig/fs/ext4/ialloc.c ++++ linux-stage/fs/ext4/ialloc.c +@@ -1063,7 +1063,7 @@ got: if (err) goto fail_free_drop; @@ -60,8 +60,8 @@ Index: linux-stage/fs/ext4/ialloc.c ext4_set_inode_flag(inode, EXT4_INODE_EXTENTS); Index: linux-stage/fs/ext4/migrate.c =================================================================== ---- linux-stage.orig/fs/ext4/migrate.c 2011-05-20 10:59:29.000000000 +0300 -+++ linux-stage/fs/ext4/migrate.c 2011-05-20 11:03:22.000000000 +0300 +--- linux-stage.orig/fs/ext4/migrate.c ++++ linux-stage/fs/ext4/migrate.c @@ -459,13 +459,10 @@ int ext4_ext_migrate(struct inode *inode unsigned long max_entries; __u32 goal; @@ -82,9 +82,9 @@ Index: linux-stage/fs/ext4/migrate.c if (S_ISLNK(inode->i_mode) && inode->i_blocks == 0) Index: linux-stage/fs/ext4/super.c =================================================================== ---- linux-stage.orig/fs/ext4/super.c 2011-05-20 11:01:37.000000000 +0300 -+++ linux-stage/fs/ext4/super.c 2011-05-20 11:01:44.000000000 +0300 -@@ -945,6 +945,8 @@ static int ext4_show_options(struct seq_ +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -956,6 +956,8 @@ static int ext4_show_options(struct seq_ seq_puts(seq, ",journal_async_commit"); if (test_opt(sb, NOBH)) seq_puts(seq, ",nobh"); @@ -92,25 +92,25 @@ Index: linux-stage/fs/ext4/super.c + seq_puts(seq, ",noextents"); if (test_opt(sb, I_VERSION)) seq_puts(seq, ",i_version"); - if (!test_opt(sb, DELALLOC)) -@@ -1515,6 +1517,7 @@ enum { + if (!test_opt(sb, DELALLOC) && +@@ -1186,6 +1188,7 @@ enum { + Opt_block_validity, Opt_noblock_validity, Opt_inode_readahead_blks, Opt_journal_ioprio, - Opt_discard, Opt_nodiscard, Opt_mballoc, Opt_bigendian_extents, Opt_force_over_128tb, + Opt_extents, Opt_noextents, + Opt_discard, Opt_nodiscard, + Opt_init_inode_table, Opt_noinit_inode_table, }; - - static const match_table_t tokens = { -@@ -1589,6 +1592,8 @@ static const match_table_t tokens = { +@@ -1260,6 +1263,8 @@ static const match_table_t tokens = { + {Opt_bigendian_extents, "bigendian_extents"}, + {Opt_force_over_128tb, "force_over_128tb"}, {Opt_mballoc, "mballoc"}, - {Opt_discard, "discard"}, - {Opt_nodiscard, "nodiscard"}, + {Opt_extents, "extents"}, + {Opt_noextents, "noextents"}, - {Opt_err, NULL}, - }; - -@@ -1631,6 +1636,7 @@ static int parse_options(char *options, + {Opt_discard, "discard"}, + {Opt_nodiscard, "nodiscard"}, + {Opt_init_inode_table, "init_itable=%u"}, +@@ -1307,6 +1312,7 @@ static int parse_options(char *options, int qtype, qfmt; char *qname; #endif @@ -118,7 +118,7 @@ Index: linux-stage/fs/ext4/super.c if (!options) return 1; -@@ -2039,6 +2045,32 @@ set_qf_format: +@@ -1729,6 +1735,32 @@ set_qf_format: case Opt_force_over_128tb: force_over_128tb = 1; break; @@ -151,8 +151,8 @@ Index: linux-stage/fs/ext4/super.c default: ext4_msg(sb, KERN_ERR, "Unrecognized mount option \"%s\" " -@@ -2901,6 +2933,17 @@ static int ext4_fill_super(struct super_ - set_opt(sbi->s_mount_opt, BARRIER); +@@ -2972,6 +3004,17 @@ static int ext4_fill_super(struct super_ + set_opt(sbi->s_mount_opt, BARRIER); /* + * turn on extents feature by default in ext4 filesystem diff --git a/ldiskfs/kernel_patches/patches/ext4-force_over_128tb-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-force_over_128tb-rhel6.patch index a01f42d..f16af50 100644 --- a/ldiskfs/kernel_patches/patches/ext4-force_over_128tb-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-force_over_128tb-rhel6.patch @@ -1,26 +1,26 @@ Index: linux-stage/fs/ext4/super.c =================================================================== ---- linux-stage.orig/fs/ext4/super.c 2011-03-11 15:35:15.680343230 +0800 -+++ linux-stage/fs/ext4/super.c 2011-03-11 15:44:45.037632078 +0800 -@@ -55,6 +55,8 @@ - struct proc_dir_entry *ext4_proc_root; - static struct kset *ext4_kset; +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -61,6 +61,8 @@ static struct ext4_lazy_init *ext4_li_in + static struct mutex ext4_li_mtx; + static struct ext4_features *ext4_feat; +static int force_over_128tb; + static int ext4_load_journal(struct super_block *, struct ext4_super_block *, unsigned long journal_devnum); static int ext4_commit_super(struct super_block *sb, int sync); -@@ -1494,7 +1496,7 @@ +@@ -1180,7 +1182,7 @@ enum { + Opt_stripe, Opt_delalloc, Opt_nodelalloc, Opt_block_validity, Opt_noblock_validity, Opt_inode_readahead_blks, Opt_journal_ioprio, - Opt_discard, Opt_nodiscard, - Opt_mballoc, Opt_bigendian_extents, + Opt_mballoc, Opt_bigendian_extents, Opt_force_over_128tb, + Opt_discard, Opt_nodiscard, + Opt_init_inode_table, Opt_noinit_inode_table, }; - - static const match_table_t tokens = { -@@ -1562,6 +1564,7 @@ +@@ -1253,6 +1255,7 @@ static const match_table_t tokens = { {Opt_auto_da_alloc, "auto_da_alloc"}, {Opt_noauto_da_alloc, "noauto_da_alloc"}, {Opt_bigendian_extents, "bigendian_extents"}, @@ -28,7 +28,7 @@ Index: linux-stage/fs/ext4/super.c {Opt_mballoc, "mballoc"}, {Opt_discard, "discard"}, {Opt_nodiscard, "nodiscard"}, -@@ -2008,6 +2011,9 @@ +@@ -1720,6 +1723,9 @@ set_qf_format: break; case Opt_mballoc: break; @@ -38,7 +38,7 @@ Index: linux-stage/fs/ext4/super.c default: ext4_msg(sb, KERN_ERR, "Unrecognized mount option \"%s\" " -@@ -3031,6 +3037,16 @@ +@@ -3137,6 +3143,16 @@ static int ext4_fill_super(struct super_ goto failed_mount; } diff --git a/ldiskfs/kernel_patches/patches/ext4-max-dir-size-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-max-dir-size-rhel6.patch index 8352d02..9043230 100644 --- a/ldiskfs/kernel_patches/patches/ext4-max-dir-size-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-max-dir-size-rhel6.patch @@ -1,8 +1,8 @@ -Index: linux-2.6.32-el6-beta/fs/ext4/ialloc.c +Index: linux-stage/fs/ext4/ialloc.c =================================================================== ---- linux-2.6.32-el6-beta.orig/fs/ext4/ialloc.c -+++ linux-2.6.32-el6-beta/fs/ext4/ialloc.c -@@ -825,11 +825,15 @@ struct inode *ext4_new_inode(handle_t *h +--- linux-stage.orig/fs/ext4/ialloc.c ++++ linux-stage/fs/ext4/ialloc.c +@@ -834,11 +834,15 @@ struct inode *ext4_new_inode(handle_t *h sb = dir->i_sb; ngroups = ext4_get_groups_count(sb); trace_ext4_request_inode(dir, mode); @@ -19,11 +19,11 @@ Index: linux-2.6.32-el6-beta/fs/ext4/ialloc.c if (!goal) goal = sbi->s_inode_goal; -Index: linux-2.6.32-el6-beta/fs/ext4/super.c +Index: linux-stage/fs/ext4/super.c =================================================================== ---- linux-2.6.32-el6-beta.orig/fs/ext4/super.c -+++ linux-2.6.32-el6-beta/fs/ext4/super.c -@@ -2601,6 +2601,7 @@ EXT4_RO_ATTR(lifetime_write_kbytes); +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -2348,6 +2348,7 @@ EXT4_RO_ATTR(lifetime_write_kbytes); EXT4_ATTR_OFFSET(inode_readahead_blks, 0644, sbi_ui_show, inode_readahead_blks_store, s_inode_readahead_blks); EXT4_RW_ATTR_SBI_UI(inode_goal, s_inode_goal); @@ -31,7 +31,7 @@ Index: linux-2.6.32-el6-beta/fs/ext4/super.c EXT4_RW_ATTR_SBI_UI(mb_stats, s_mb_stats); EXT4_RW_ATTR_SBI_UI(mb_max_to_scan, s_mb_max_to_scan); EXT4_RW_ATTR_SBI_UI(mb_min_to_scan, s_mb_min_to_scan); -@@ -2615,6 +2616,7 @@ static struct attribute *ext4_attrs[] = +@@ -2362,6 +2363,7 @@ static struct attribute *ext4_attrs[] = ATTR_LIST(lifetime_write_kbytes), ATTR_LIST(inode_readahead_blks), ATTR_LIST(inode_goal), @@ -39,21 +39,21 @@ Index: linux-2.6.32-el6-beta/fs/ext4/super.c ATTR_LIST(mb_stats), ATTR_LIST(mb_max_to_scan), ATTR_LIST(mb_min_to_scan), -Index: linux-2.6.32-el6-beta/fs/ext4/ext4.h +Index: linux-stage/fs/ext4/ext4.h =================================================================== ---- linux-2.6.32-el6-beta.orig/fs/ext4/ext4.h -+++ linux-2.6.32-el6-beta/fs/ext4/ext4.h -@@ -1029,6 +1029,8 @@ struct ext4_sb_info { +--- linux-stage.orig/fs/ext4/ext4.h ++++ linux-stage/fs/ext4/ext4.h +@@ -1138,6 +1138,8 @@ struct ext4_sb_info { + unsigned int s_log_groups_per_flex; + struct flex_groups *s_flex_groups; - /* Kernel thread for multiple mount protection */ - struct task_struct *s_mmp_tsk; -+ + unsigned long s_max_dir_size; - }; ++ + /* workqueue for dio unwritten */ + struct workqueue_struct *dio_unwritten_wq; - static inline struct ext4_sb_info *EXT4_SB(struct super_block *sb) -@@ -1353,6 +1355,12 @@ struct mmp_struct { - #define EXT4_MMP_MIN_CHECK_INTERVAL 5 +@@ -1598,6 +1600,12 @@ struct mmpd_data { + #define EXT4_MMP_MAX_CHECK_INTERVAL 300UL /* + * max directory size tunable diff --git a/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-rhel6.patch index c0b59f0..f0060f2 100644 --- a/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-rhel6.patch @@ -1,10 +1,10 @@ Index: linux-stage/fs/ext4/ext4.h =================================================================== ---- linux-stage.orig/fs/ext4/ext4.h 2011-03-14 16:18:28.300241437 +0800 -+++ linux-stage/fs/ext4/ext4.h 2011-03-14 16:33:17.056087375 +0800 -@@ -1770,6 +1770,7 @@ - ext4_grpblk_t bb_free; /* total free blocks */ +--- linux-stage.orig/fs/ext4/ext4.h ++++ linux-stage/fs/ext4/ext4.h +@@ -1959,6 +1959,7 @@ struct ext4_group_info { ext4_grpblk_t bb_fragments; /* nr of freespace fragments */ + ext4_grpblk_t bb_largest_free_order;/* order of largest frag in BG */ struct list_head bb_prealloc_list; + unsigned long bb_prealloc_nr; #ifdef DOUBLE_CHECK @@ -12,8 +12,8 @@ Index: linux-stage/fs/ext4/ext4.h #endif Index: linux-stage/fs/ext4/mballoc.c =================================================================== ---- linux-stage.orig/fs/ext4/mballoc.c 2011-03-14 16:18:28.336242149 +0800 -+++ linux-stage/fs/ext4/mballoc.c 2011-03-14 16:33:27.072292006 +0800 +--- linux-stage.orig/fs/ext4/mballoc.c ++++ linux-stage/fs/ext4/mballoc.c @@ -337,7 +337,7 @@ static struct kmem_cache *ext4_pspace_cachep; static struct kmem_cache *ext4_ac_cachep; @@ -23,7 +23,7 @@ Index: linux-stage/fs/ext4/mballoc.c ext4_group_t group); static void ext4_mb_generate_from_freelist(struct super_block *sb, void *bitmap, ext4_group_t group); -@@ -659,7 +659,7 @@ +@@ -680,7 +680,7 @@ mb_set_largest_free_order(struct super_b } static noinline_for_stack @@ -32,7 +32,7 @@ Index: linux-stage/fs/ext4/mballoc.c void *buddy, void *bitmap, ext4_group_t group) { struct ext4_group_info *grp = ext4_get_group_info(sb, group); -@@ -691,14 +691,13 @@ +@@ -712,14 +712,13 @@ void ext4_mb_generate_buddy(struct super grp->bb_fragments = fragments; if (free != grp->bb_free) { @@ -52,9 +52,9 @@ Index: linux-stage/fs/ext4/mballoc.c + grp->bb_prealloc_nr); + return -EIO; } + mb_set_largest_free_order(sb, grp); - clear_bit(EXT4_GROUP_INFO_NEED_INIT_BIT, &(grp->bb_state)); -@@ -708,6 +707,8 @@ +@@ -730,6 +729,8 @@ void ext4_mb_generate_buddy(struct super EXT4_SB(sb)->s_mb_buddies_generated++; EXT4_SB(sb)->s_mb_generation_time += period; spin_unlock(&EXT4_SB(sb)->s_bal_lock); @@ -63,25 +63,25 @@ Index: linux-stage/fs/ext4/mballoc.c } /* The buddy information is attached the buddy cache inode -@@ -839,7 +840,7 @@ +@@ -876,7 +877,7 @@ static int ext4_mb_init_cache(struct pag + + err = 0; first_block = page->index * blocks_per_page; - /* init the page */ - memset(page_address(page), 0xff, PAGE_CACHE_SIZE); - for (i = 0; i < blocks_per_page; i++) { + for (i = 0; i < blocks_per_page && err == 0; i++) { int group; - struct ext4_group_info *grinfo; -@@ -874,7 +875,7 @@ - * incore got set to the group block bitmap below - */ + group = (first_block + i) >> 1; +@@ -916,7 +917,7 @@ static int ext4_mb_init_cache(struct pag ext4_lock_group(sb, group); + /* init the buddy */ + memset(data, 0xff, blocksize); - ext4_mb_generate_buddy(sb, data, incore, group); + err = ext4_mb_generate_buddy(sb, data, incore, group); ext4_unlock_group(sb, group); incore = NULL; } else { -@@ -888,7 +889,7 @@ +@@ -930,7 +931,7 @@ static int ext4_mb_init_cache(struct pag memcpy(data, bitmap, blocksize); /* mark all preallocated blks used in in-core bitmap */ @@ -90,7 +90,7 @@ Index: linux-stage/fs/ext4/mballoc.c ext4_mb_generate_from_freelist(sb, data, group); ext4_unlock_group(sb, group); -@@ -898,7 +899,8 @@ +@@ -940,7 +941,8 @@ static int ext4_mb_init_cache(struct pag incore = data; } } @@ -100,7 +100,7 @@ Index: linux-stage/fs/ext4/mballoc.c out: if (bh) { -@@ -2142,9 +2144,11 @@ +@@ -2123,9 +2125,11 @@ static void *ext4_mb_seq_groups_next(str static int ext4_mb_seq_groups_show(struct seq_file *seq, void *v) { struct super_block *sb = seq->private; @@ -112,7 +112,7 @@ Index: linux-stage/fs/ext4/mballoc.c struct ext4_buddy e4b; struct sg { struct ext4_group_info info; -@@ -2153,10 +2157,10 @@ +@@ -2134,10 +2138,10 @@ static int ext4_mb_seq_groups_show(struc group--; if (group == 0) @@ -125,7 +125,7 @@ Index: linux-stage/fs/ext4/mballoc.c "2^0", "2^1", "2^2", "2^3", "2^4", "2^5", "2^6", "2^7", "2^8", "2^9", "2^10", "2^11", "2^12", "2^13"); -@@ -2167,13 +2171,20 @@ +@@ -2148,13 +2152,20 @@ static int ext4_mb_seq_groups_show(struc seq_printf(seq, "#%-5u: I/O error\n", group); return 0; } @@ -148,7 +148,7 @@ Index: linux-stage/fs/ext4/mballoc.c for (i = 0; i <= 13; i++) seq_printf(seq, " %-5u", i <= sb->s_blocksize_bits + 1 ? sg.info.bb_counters[i] : 0); -@@ -3354,23 +3365,68 @@ +@@ -3341,23 +3352,68 @@ static void ext4_mb_generate_from_freeli } /* @@ -218,7 +218,7 @@ Index: linux-stage/fs/ext4/mballoc.c /* all form of preallocation discards first load group, * so the only competing code is preallocation use. * we don't need any locking here -@@ -3386,14 +3442,23 @@ +@@ -3373,14 +3429,23 @@ void ext4_mb_generate_from_pa(struct sup &groupnr, &start); len = pa->pa_len; spin_unlock(&pa->pa_lock); @@ -243,7 +243,7 @@ Index: linux-stage/fs/ext4/mballoc.c } static void ext4_mb_pa_callback(struct rcu_head *head) -@@ -3452,6 +3517,7 @@ +@@ -3439,6 +3504,7 @@ static void ext4_mb_put_pa(struct ext4_a */ ext4_lock_group(sb, grp); list_del(&pa->pa_group_list); @@ -251,7 +251,7 @@ Index: linux-stage/fs/ext4/mballoc.c ext4_unlock_group(sb, grp); spin_lock(pa->pa_obj_lock); -@@ -3543,6 +3609,7 @@ +@@ -3530,6 +3596,7 @@ ext4_mb_new_inode_pa(struct ext4_allocat ext4_lock_group(sb, ac->ac_b_ex.fe_group); list_add(&pa->pa_group_list, &grp->bb_prealloc_list); @@ -259,7 +259,7 @@ Index: linux-stage/fs/ext4/mballoc.c ext4_unlock_group(sb, ac->ac_b_ex.fe_group); spin_lock(pa->pa_obj_lock); -@@ -3604,6 +3671,7 @@ +@@ -3591,6 +3658,7 @@ ext4_mb_new_group_pa(struct ext4_allocat ext4_lock_group(sb, ac->ac_b_ex.fe_group); list_add(&pa->pa_group_list, &grp->bb_prealloc_list); @@ -267,7 +267,7 @@ Index: linux-stage/fs/ext4/mballoc.c ext4_unlock_group(sb, ac->ac_b_ex.fe_group); /* -@@ -3802,6 +3870,8 @@ +@@ -3789,6 +3857,8 @@ repeat: spin_unlock(&pa->pa_lock); @@ -276,7 +276,7 @@ Index: linux-stage/fs/ext4/mballoc.c list_del(&pa->pa_group_list); list_add(&pa->u.pa_tmp_list, &list); } -@@ -3942,7 +4012,7 @@ +@@ -3929,7 +3999,7 @@ repeat: if (err) { ext4_error(sb, "Error loading buddy information for %u", group); @@ -285,7 +285,7 @@ Index: linux-stage/fs/ext4/mballoc.c } bitmap_bh = ext4_read_block_bitmap(sb, group); -@@ -3954,6 +4024,8 @@ +@@ -3941,6 +4011,8 @@ repeat: } ext4_lock_group(sb, group); @@ -294,7 +294,7 @@ Index: linux-stage/fs/ext4/mballoc.c list_del(&pa->pa_group_list); ext4_mb_release_inode_pa(&e4b, bitmap_bh, pa, ac); ext4_unlock_group(sb, group); -@@ -4227,6 +4299,7 @@ +@@ -4214,6 +4286,7 @@ ext4_mb_discard_lg_preallocations(struct } ext4_lock_group(sb, group); list_del(&pa->pa_group_list); @@ -304,9 +304,9 @@ Index: linux-stage/fs/ext4/mballoc.c Index: linux-stage/fs/ext4/mballoc.h =================================================================== ---- linux-stage.orig/fs/ext4/mballoc.h 2011-03-14 16:18:26.670209322 +0800 -+++ linux-stage/fs/ext4/mballoc.h 2011-03-14 16:32:50.859552482 +0800 -@@ -88,7 +88,7 @@ +--- linux-stage.orig/fs/ext4/mballoc.h ++++ linux-stage/fs/ext4/mballoc.h +@@ -88,7 +88,7 @@ extern u8 mb_enable_debug; /* * for which requests use 2^N search using buddies */ diff --git a/ldiskfs/kernel_patches/patches/ext4-misc-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-misc-rhel6.patch index f25ba7e..b5362c77 100644 --- a/ldiskfs/kernel_patches/patches/ext4-misc-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-misc-rhel6.patch @@ -1,8 +1,8 @@ Index: linux-stage/fs/ext4/ext4.h =================================================================== ---- linux-stage.orig/fs/ext4/ext4.h 2011-05-20 10:59:32.000000000 +0300 -+++ linux-stage/fs/ext4/ext4.h 2011-05-20 11:01:06.000000000 +0300 -@@ -1191,6 +1191,9 @@ EXT4_INODE_BIT_FNS(state, state_flags) +--- linux-stage.orig/fs/ext4/ext4.h ++++ linux-stage/fs/ext4/ext4.h +@@ -1217,6 +1217,9 @@ EXT4_INODE_BIT_FNS(state, state_flags) #define NEXT_ORPHAN(inode) EXT4_I(inode)->i_dtime @@ -12,8 +12,8 @@ Index: linux-stage/fs/ext4/ext4.h /* * Codes for operating systems */ -@@ -1630,6 +1633,9 @@ extern void ext4_mb_put_buddy_cache_lock - ext4_group_t, int); +@@ -1712,6 +1715,9 @@ extern void ext4_add_groupblocks(handle_ + ext4_fsblk_t block, unsigned long count); extern int ext4_trim_fs(struct super_block *, struct fstrim_range *); +extern void ext4_mb_discard_inode_preallocations(struct inode *); @@ -24,8 +24,8 @@ Index: linux-stage/fs/ext4/ext4.h struct buffer_head *bh, ext4_fsblk_t blocknr); Index: linux-stage/fs/ext4/ext4_extents.h =================================================================== ---- linux-stage.orig/fs/ext4/ext4_extents.h 2011-05-20 10:59:30.000000000 +0300 -+++ linux-stage/fs/ext4/ext4_extents.h 2011-05-20 11:00:01.000000000 +0300 +--- linux-stage.orig/fs/ext4/ext4_extents.h ++++ linux-stage/fs/ext4/ext4_extents.h @@ -58,6 +58,12 @@ */ #define EXT_STATS_ @@ -39,7 +39,7 @@ Index: linux-stage/fs/ext4/ext4_extents.h /* * ext4_inode has i_block array (60 bytes total). -@@ -160,6 +166,7 @@ typedef int (*ext_prepare_callback)(stru +@@ -163,6 +169,7 @@ typedef int (*ext_prepare_callback)(stru #define EXT_INIT_MAX_LEN (1UL << 15) #define EXT_UNINIT_MAX_LEN (EXT_INIT_MAX_LEN - 1) @@ -47,7 +47,7 @@ Index: linux-stage/fs/ext4/ext4_extents.h #define EXT_FIRST_EXTENT(__hdr__) \ ((struct ext4_extent *) (((char *) (__hdr__)) + \ -@@ -239,6 +246,8 @@ extern int ext4_extent_tree_init(handle_ +@@ -242,6 +249,8 @@ extern int ext4_extent_tree_init(handle_ extern int ext4_ext_calc_credits_for_single_extent(struct inode *inode, int num, struct ext4_ext_path *path); @@ -58,8 +58,8 @@ Index: linux-stage/fs/ext4/ext4_extents.h struct ext4_extent *ex2); Index: linux-stage/fs/ext4/ext4_jbd2.c =================================================================== ---- linux-stage.orig/fs/ext4/ext4_jbd2.c 2011-05-20 10:59:29.000000000 +0300 -+++ linux-stage/fs/ext4/ext4_jbd2.c 2011-05-20 11:00:01.000000000 +0300 +--- linux-stage.orig/fs/ext4/ext4_jbd2.c ++++ linux-stage/fs/ext4/ext4_jbd2.c @@ -31,6 +31,7 @@ int __ext4_journal_get_write_access(cons } return err; @@ -75,8 +75,8 @@ Index: linux-stage/fs/ext4/ext4_jbd2.c +EXPORT_SYMBOL(__ext4_handle_dirty_metadata); Index: linux-stage/fs/ext4/ext4_jbd2.h =================================================================== ---- linux-stage.orig/fs/ext4/ext4_jbd2.h 2011-05-20 10:59:29.000000000 +0300 -+++ linux-stage/fs/ext4/ext4_jbd2.h 2011-05-20 11:00:01.000000000 +0300 +--- linux-stage.orig/fs/ext4/ext4_jbd2.h ++++ linux-stage/fs/ext4/ext4_jbd2.h @@ -35,6 +35,8 @@ (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_EXTENTS) \ ? 27U : 8U) @@ -146,7 +146,7 @@ Index: linux-stage/fs/ext4/extents.c * How many index/leaf blocks need to change/allocate to modify nrblocks? * * if nrblocks are fit in a single extent (chunk flag is 1), then -@@ -4029,3 +4079,14 @@ int ext4_fiemap(struct inode *inode, str +@@ -3975,3 +4024,14 @@ int ext4_fiemap(struct inode *inode, str return error; } @@ -161,12 +161,11 @@ Index: linux-stage/fs/ext4/extents.c +EXPORT_SYMBOL(ext4_ext_walk_space); +EXPORT_SYMBOL(ext4_ext_find_extent); +EXPORT_SYMBOL(ext4_ext_drop_refs); -+ Index: linux-stage/fs/ext4/inode.c =================================================================== ---- linux-stage.orig/fs/ext4/inode.c 2011-05-20 10:59:31.000000000 +0300 -+++ linux-stage/fs/ext4/inode.c 2011-05-20 11:00:01.000000000 +0300 -@@ -5249,6 +5249,7 @@ bad_inode: +--- linux-stage.orig/fs/ext4/inode.c ++++ linux-stage/fs/ext4/inode.c +@@ -5260,6 +5260,7 @@ bad_inode: iget_failed(inode); return ERR_PTR(ret); } @@ -176,9 +175,9 @@ Index: linux-stage/fs/ext4/inode.c struct ext4_inode *raw_inode, Index: linux-stage/fs/ext4/mballoc.c =================================================================== ---- linux-stage.orig/fs/ext4/mballoc.c 2011-05-20 10:59:32.000000000 +0300 -+++ linux-stage/fs/ext4/mballoc.c 2011-05-20 11:00:01.000000000 +0300 -@@ -4044,6 +4044,7 @@ repeat: +--- linux-stage.orig/fs/ext4/mballoc.c ++++ linux-stage/fs/ext4/mballoc.c +@@ -4026,6 +4026,7 @@ repeat: if (ac) kmem_cache_free(ext4_ac_cachep, ac); } @@ -186,7 +185,7 @@ Index: linux-stage/fs/ext4/mballoc.c /* * finds all preallocated spaces and return blocks being freed to them -@@ -5029,3 +5030,6 @@ int ext4_trim_fs(struct super_block *sb, +@@ -5138,3 +5139,6 @@ int ext4_trim_fs(struct super_block *sb, return ret; } @@ -195,9 +194,9 @@ Index: linux-stage/fs/ext4/mballoc.c + Index: linux-stage/fs/ext4/super.c =================================================================== ---- linux-stage.orig/fs/ext4/super.c 2011-05-20 10:59:31.000000000 +0300 -+++ linux-stage/fs/ext4/super.c 2011-05-20 11:00:01.000000000 +0300 -@@ -128,6 +128,7 @@ __u32 ext4_itable_unused_count(struct su +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -137,6 +137,7 @@ __u32 ext4_itable_unused_count(struct su (EXT4_DESC_SIZE(sb) >= EXT4_MIN_DESC_SIZE_64BIT ? (__u32)le16_to_cpu(bg->bg_itable_unused_hi) << 16 : 0); } @@ -205,7 +204,7 @@ Index: linux-stage/fs/ext4/super.c void ext4_block_bitmap_set(struct super_block *sb, struct ext4_group_desc *bg, ext4_fsblk_t blk) -@@ -1500,11 +1501,13 @@ enum { +@@ -1172,10 +1173,12 @@ enum { Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota, Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_jqfmt_vfsv1, Opt_quota, Opt_noquota, Opt_ignore, Opt_barrier, Opt_nobarrier, Opt_err, @@ -214,12 +213,11 @@ Index: linux-stage/fs/ext4/super.c Opt_stripe, Opt_delalloc, Opt_nodelalloc, Opt_block_validity, Opt_noblock_validity, Opt_inode_readahead_blks, Opt_journal_ioprio, - Opt_discard, Opt_nodiscard, + Opt_mballoc, + Opt_discard, Opt_nodiscard, + Opt_init_inode_table, Opt_noinit_inode_table, }; - - static const match_table_t tokens = { -@@ -1556,6 +1559,9 @@ static const match_table_t tokens = { +@@ -1229,6 +1232,9 @@ static const match_table_t tokens = { {Opt_noquota, "noquota"}, {Opt_quota, "quota"}, {Opt_usrquota, "usrquota"}, @@ -229,15 +227,15 @@ Index: linux-stage/fs/ext4/super.c {Opt_barrier, "barrier=%u"}, {Opt_barrier, "barrier"}, {Opt_nobarrier, "nobarrier"}, -@@ -1571,6 +1577,7 @@ static const match_table_t tokens = { +@@ -1244,6 +1250,7 @@ static const match_table_t tokens = { {Opt_auto_da_alloc, "auto_da_alloc=%u"}, {Opt_auto_da_alloc, "auto_da_alloc"}, {Opt_noauto_da_alloc, "noauto_da_alloc"}, + {Opt_mballoc, "mballoc"}, {Opt_discard, "discard"}, {Opt_nodiscard, "nodiscard"}, - {Opt_err, NULL}, -@@ -1928,6 +1935,10 @@ set_qf_format: + {Opt_init_inode_table, "init_itable=%u"}, +@@ -1604,6 +1611,10 @@ set_qf_format: else clear_opt(sbi->s_mount_opt, BARRIER); break; @@ -248,9 +246,9 @@ Index: linux-stage/fs/ext4/super.c case Opt_ignore: break; case Opt_resize: -@@ -2011,6 +2022,8 @@ set_qf_format: - case Opt_nodiscard: - clear_opt(sbi->s_mount_opt, DISCARD); +@@ -1701,6 +1712,8 @@ set_qf_format: + case Opt_noinit_inode_table: + clear_opt(sbi->s_mount_opt, INIT_INODE_TABLE); break; + case Opt_mballoc: + break; diff --git a/ldiskfs/kernel_patches/patches/ext4-mmp-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-mmp-rhel6.patch index e2942a9..b7207d0 100644 --- a/ldiskfs/kernel_patches/patches/ext4-mmp-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-mmp-rhel6.patch @@ -35,7 +35,7 @@ Index: linux-stage/fs/ext4/ext4.h =================================================================== --- linux-stage.orig/fs/ext4/ext4.h +++ linux-stage/fs/ext4/ext4.h -@@ -893,7 +893,7 @@ struct ext4_super_block { +@@ -973,7 +973,7 @@ struct ext4_super_block { __le16 s_want_extra_isize; /* New inodes should reserve # bytes */ __le32 s_flags; /* Miscellaneous flags */ __le16 s_raid_stride; /* RAID stride */ @@ -44,17 +44,17 @@ Index: linux-stage/fs/ext4/ext4.h __le64 s_mmp_block; /* Block for multi-mount protection */ __le32 s_raid_stripe_width; /* blocks on all data disks (N*stride)*/ __u8 s_log_groups_per_flex; /* FLEX_BG group size */ -@@ -1040,6 +1040,9 @@ struct ext4_sb_info { - - /* workqueue for dio unwritten */ - struct workqueue_struct *dio_unwritten_wq; +@@ -1145,6 +1145,9 @@ struct ext4_sb_info { + struct ext4_li_request *s_li_request; + /* Wait multiplier for lazy initialization thread */ + unsigned int s_li_wait_mult; + + /* Kernel thread for multiple mount protection */ + struct task_struct *s_mmp_tsk; }; static inline struct ext4_sb_info *EXT4_SB(struct super_block *sb) -@@ -1176,7 +1179,8 @@ static inline void ext4_clear_inode_stat +@@ -1283,7 +1286,8 @@ EXT4_INODE_BIT_FNS(state, state_flags) EXT4_FEATURE_INCOMPAT_META_BG| \ EXT4_FEATURE_INCOMPAT_EXTENTS| \ EXT4_FEATURE_INCOMPAT_64BIT| \ @@ -64,8 +64,8 @@ Index: linux-stage/fs/ext4/ext4.h #define EXT4_FEATURE_RO_COMPAT_SUPP (EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER| \ EXT4_FEATURE_RO_COMPAT_LARGE_FILE| \ EXT4_FEATURE_RO_COMPAT_GDT_CSUM| \ -@@ -1383,6 +1387,67 @@ void ext4_get_group_no_and_offset(struct - extern struct proc_dir_entry *ext4_proc_root; +@@ -1533,6 +1537,67 @@ struct ext4_features { + }; /* + * This structure will be used for multiple mount protection. It will be @@ -132,7 +132,7 @@ Index: linux-stage/fs/ext4/ext4.h * Function prototypes */ -@@ -1552,6 +1617,10 @@ extern void __ext4_warning(struct super_ +@@ -1703,6 +1768,10 @@ extern void __ext4_warning(struct super_ #define ext4_warning(sb, message...) __ext4_warning(sb, __func__, ## message) extern void ext4_msg(struct super_block *, const char *, const char *, ...) __attribute__ ((format (printf, 3, 4))); @@ -143,7 +143,7 @@ Index: linux-stage/fs/ext4/ext4.h extern void ext4_grp_locked_error(struct super_block *, ext4_group_t, const char *, const char *, ...) __attribute__ ((format (printf, 4, 5))); -@@ -1833,6 +1902,8 @@ extern int ext4_move_extents(struct file +@@ -1986,6 +2055,8 @@ extern int ext4_move_extents(struct file __u64 start_orig, __u64 start_donor, __u64 len, __u64 *moved_len); @@ -519,9 +519,9 @@ Index: linux-stage/fs/ext4/super.c +#include +#include - #include "ext4.h" - #include "ext4_jbd2.h" -@@ -700,6 +702,8 @@ static void ext4_put_super(struct super_ + #include + #include +@@ -712,6 +714,8 @@ static void ext4_put_super(struct super_ invalidate_bdev(sbi->journal_bdev); ext4_blkdev_remove(sbi); } @@ -530,7 +530,7 @@ Index: linux-stage/fs/ext4/super.c sb->s_fs_info = NULL; /* * Now that we are completely done shutting down the -@@ -2799,6 +2803,10 @@ static int ext4_fill_super(struct super_ +@@ -3235,6 +3239,10 @@ static int ext4_fill_super(struct super_ needs_recovery = (es->s_last_orphan != 0 || EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER)); @@ -541,7 +541,7 @@ Index: linux-stage/fs/ext4/super.c /* * The first inode we look at is the journal inode. Don't try -@@ -3036,6 +3044,8 @@ failed_mount3: +@@ -3478,6 +3486,8 @@ failed_mount3: percpu_counter_destroy(&sbi->s_freeinodes_counter); percpu_counter_destroy(&sbi->s_dirs_counter); percpu_counter_destroy(&sbi->s_dirtyblocks_counter); @@ -550,7 +550,7 @@ Index: linux-stage/fs/ext4/super.c failed_mount2: for (i = 0; i < db_count; i++) brelse(sbi->s_group_desc[i]); -@@ -3544,7 +3554,7 @@ static int ext4_remount(struct super_blo +@@ -3986,7 +3996,7 @@ static int ext4_remount(struct super_blo struct ext4_mount_options old_opts; ext4_group_t g; unsigned int journal_ioprio = DEFAULT_JOURNAL_IOPRIO; @@ -559,7 +559,7 @@ Index: linux-stage/fs/ext4/super.c #ifdef CONFIG_QUOTA int i; #endif -@@ -3666,6 +3676,13 @@ static int ext4_remount(struct super_blo +@@ -4108,6 +4118,13 @@ static int ext4_remount(struct super_blo goto restore_opts; if (!ext4_setup_super(sb, es, 0)) sb->s_flags &= ~MS_RDONLY; @@ -572,4 +572,4 @@ Index: linux-stage/fs/ext4/super.c + } } } - ext4_setup_system_zone(sb); + diff --git a/ldiskfs/kernel_patches/patches/ext4-prealloc-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-prealloc-rhel6.patch index 70023d6..6074545 100644 --- a/ldiskfs/kernel_patches/patches/ext4-prealloc-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-prealloc-rhel6.patch @@ -1,8 +1,8 @@ Index: linux-stage/fs/ext4/ext4.h =================================================================== ---- linux-stage.orig/fs/ext4/ext4.h 2011-03-11 14:17:02.000000000 +0800 -+++ linux-stage/fs/ext4/ext4.h 2011-03-11 14:20:08.269063193 +0800 -@@ -999,11 +999,14 @@ +--- linux-stage.orig/fs/ext4/ext4.h ++++ linux-stage/fs/ext4/ext4.h +@@ -1100,11 +1100,14 @@ struct ext4_sb_info { /* tunables */ unsigned long s_stripe; @@ -18,26 +18,12 @@ Index: linux-stage/fs/ext4/ext4.h unsigned int s_mb_group_prealloc; unsigned int s_max_writeback_mb_bump; /* where last allocation was done - for stream allocation */ -Index: linux-stage/fs/ext4/inode.c -=================================================================== -@@ -3028,6 +3028,11 @@ static int ext4_da_writepages(struct add - if (unlikely(sbi->s_mount_flags & EXT4_MF_FS_ABORTED)) - return -EROFS; - -+ if (wbc->nr_to_write < sbi->s_mb_small_req) { -+ nr_to_writebump = sbi->s_mb_small_req - wbc->nr_to_write; -+ wbc->nr_to_write = sbi->s_mb_small_req; -+ } -+ - if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX) - range_whole = 1; - Index: linux-stage/fs/ext4/mballoc.c =================================================================== ---- linux-stage.orig/fs/ext4/mballoc.c 2011-03-11 14:03:32.000000000 +0800 -+++ linux-stage/fs/ext4/mballoc.c 2011-03-11 14:44:49.106543493 +0800 -@@ -1823,6 +1823,26 @@ - } +--- linux-stage.orig/fs/ext4/mballoc.c ++++ linux-stage/fs/ext4/mballoc.c +@@ -1838,6 +1838,25 @@ void ext4_mb_complex_scan_group(struct e + ext4_mb_check_limits(ac, e4b, 1); } +static void ext4_mb_prealloc_table_add(struct ext4_sb_info *sbi, int value) @@ -59,11 +45,10 @@ Index: linux-stage/fs/ext4/mballoc.c + } +} + -+ - static int ext4_mb_good_group(struct ext4_allocation_context *ac, - ext4_group_t group, int cr) - { -@@ -2173,6 +2193,80 @@ + /* + * This is a special case for storages like raid5 + * we try to find stripe-aligned chunks for stripe-size requests +@@ -2155,6 +2174,80 @@ static const struct seq_operations ext4_ .show = ext4_mb_seq_groups_show, }; @@ -144,7 +129,7 @@ Index: linux-stage/fs/ext4/mballoc.c static int ext4_mb_seq_groups_open(struct inode *inode, struct file *file) { struct super_block *sb = PDE(inode)->data; -@@ -2411,12 +2505,56 @@ +@@ -2394,12 +2487,56 @@ int ext4_mb_init(struct super_block *sb, sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN; sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN; sbi->s_mb_stats = MB_DEFAULT_STATS; @@ -203,7 +188,7 @@ Index: linux-stage/fs/ext4/mballoc.c kfree(sbi->s_mb_offsets); kfree(sbi->s_mb_maxs); return -ENOMEM; -@@ -2430,9 +2568,18 @@ +@@ -2413,9 +2550,18 @@ int ext4_mb_init(struct super_block *sb, spin_lock_init(&lg->lg_prealloc_lock); } @@ -223,7 +208,7 @@ Index: linux-stage/fs/ext4/mballoc.c if (sbi->s_journal) sbi->s_journal->j_commit_callback = release_blocks_on_commit; -@@ -2512,8 +2659,10 @@ +@@ -2495,8 +2641,10 @@ int ext4_mb_release(struct super_block * } free_percpu(sbi->s_locality_groups); @@ -235,7 +220,7 @@ Index: linux-stage/fs/ext4/mballoc.c return 0; } -@@ -2807,11 +2956,12 @@ +@@ -2795,11 +2943,12 @@ static noinline_for_stack void ext4_mb_normalize_request(struct ext4_allocation_context *ac, struct ext4_allocation_request *ar) { @@ -250,7 +235,7 @@ Index: linux-stage/fs/ext4/mballoc.c struct ext4_prealloc_space *pa; /* do normalize only data requests, metadata requests -@@ -2841,49 +2991,35 @@ +@@ -2829,49 +2978,35 @@ ext4_mb_normalize_request(struct ext4_al size = size << bsbits; if (size < i_size_read(ac->ac_inode)) size = i_size_read(ac->ac_inode); @@ -325,7 +310,7 @@ Index: linux-stage/fs/ext4/mballoc.c /* don't cover already allocated blocks in selected range */ if (ar->pleft && start <= ar->lleft) { -@@ -2955,7 +3091,6 @@ +@@ -2943,7 +3078,6 @@ ext4_mb_normalize_request(struct ext4_al } BUG_ON(start + size <= ac->ac_o_ex.fe_logical && start > ac->ac_o_ex.fe_logical); @@ -333,7 +318,7 @@ Index: linux-stage/fs/ext4/mballoc.c /* now prepare goal request */ -@@ -3939,11 +4074,19 @@ +@@ -3927,11 +4061,19 @@ static void ext4_mb_group_or_file(struct /* don't use group allocation for large files */ size = max(size, isize); @@ -356,9 +341,9 @@ Index: linux-stage/fs/ext4/mballoc.c * locality group prealloc space are per cpu. The reason for having Index: linux-stage/fs/ext4/super.c =================================================================== ---- linux-stage.orig/fs/ext4/super.c 2011-03-11 14:16:56.000000000 +0800 -+++ linux-stage/fs/ext4/super.c 2011-03-11 14:19:24.664467626 +0800 -@@ -2632,7 +2632,8 @@ +--- linux-stage.orig/fs/ext4/super.c ++++ linux-stage/fs/ext4/super.c +@@ -2353,7 +2353,8 @@ EXT4_RW_ATTR_SBI_UI(mb_stats, s_mb_stats EXT4_RW_ATTR_SBI_UI(mb_max_to_scan, s_mb_max_to_scan); EXT4_RW_ATTR_SBI_UI(mb_min_to_scan, s_mb_min_to_scan); EXT4_RW_ATTR_SBI_UI(mb_order2_req, s_mb_order2_reqs); @@ -368,7 +353,7 @@ Index: linux-stage/fs/ext4/super.c EXT4_RW_ATTR_SBI_UI(mb_group_prealloc, s_mb_group_prealloc); EXT4_RW_ATTR_SBI_UI(max_writeback_mb_bump, s_max_writeback_mb_bump); -@@ -2647,7 +2648,8 @@ +@@ -2368,7 +2369,8 @@ static struct attribute *ext4_attrs[] = ATTR_LIST(mb_max_to_scan), ATTR_LIST(mb_min_to_scan), ATTR_LIST(mb_order2_req), @@ -378,3 +363,19 @@ Index: linux-stage/fs/ext4/super.c ATTR_LIST(mb_group_prealloc), ATTR_LIST(max_writeback_mb_bump), NULL, +Index: linux-stage/fs/ext4/inode.c +=================================================================== +--- linux-stage.orig/fs/ext4/inode.c ++++ linux-stage/fs/ext4/inode.c +@@ -3049,6 +3049,11 @@ static int ext4_da_writepages(struct add + if (unlikely(sbi->s_mount_flags & EXT4_MF_FS_ABORTED)) + return -EROFS; + ++ if (wbc->nr_to_write < sbi->s_mb_small_req) { ++ nr_to_writebump = sbi->s_mb_small_req - wbc->nr_to_write; ++ wbc->nr_to_write = sbi->s_mb_small_req; ++ } ++ + if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX) + range_whole = 1; + diff --git a/ldiskfs/kernel_patches/patches/ext4_data_in_dirent-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4_data_in_dirent-rhel6.patch index 61f4119..f22ca04 100644 --- a/ldiskfs/kernel_patches/patches/ext4_data_in_dirent-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4_data_in_dirent-rhel6.patch @@ -36,17 +36,17 @@ Index: linux-stage/fs/ext4/dir.c const int rlen = ext4_rec_len_from_disk(de->rec_len, dir->i_sb->s_blocksize); -- if (rlen < EXT4_DIR_REC_LEN(1)) -+ if (rlen < __EXT4_DIR_REC_LEN(1)) +- if (unlikely(rlen < EXT4_DIR_REC_LEN(1))) ++ if (unlikely(rlen < __EXT4_DIR_REC_LEN(1))) error_msg = "rec_len is smaller than minimal"; - else if (rlen % 4 != 0) + else if (unlikely(rlen % 4 != 0)) error_msg = "rec_len % 4 != 0"; -- else if (rlen < EXT4_DIR_REC_LEN(de->name_len)) -+ else if (rlen < EXT4_DIR_REC_LEN(de)) +- else if (unlikely(rlen < EXT4_DIR_REC_LEN(de->name_len))) ++ else if (unlikely(rlen < EXT4_DIR_REC_LEN(de))) error_msg = "rec_len is too small for name_len"; - else if (((char *) de - bh->b_data) + rlen > dir->i_sb->s_blocksize) + else if (unlikely(((char *) de - bh->b_data) + rlen > dir->i_sb->s_blocksize)) error_msg = "directory entry across blocks"; -@@ -182,7 +189,7 @@ revalidate: +@@ -183,7 +190,7 @@ revalidate: * failure will be detected in the * dirent test below. */ if (ext4_rec_len_from_disk(de->rec_len, @@ -55,7 +55,7 @@ Index: linux-stage/fs/ext4/dir.c break; i += ext4_rec_len_from_disk(de->rec_len, sb->s_blocksize); -@@ -345,12 +352,17 @@ int ext4_htree_store_dirent(struct file +@@ -346,12 +353,17 @@ int ext4_htree_store_dirent(struct file struct fname *fname, *new_fn; struct dir_private_info *info; int len; @@ -74,7 +74,7 @@ Index: linux-stage/fs/ext4/dir.c new_fn = kzalloc(len, GFP_KERNEL); if (!new_fn) return -ENOMEM; -@@ -359,7 +371,7 @@ int ext4_htree_store_dirent(struct file +@@ -360,7 +372,7 @@ int ext4_htree_store_dirent(struct file new_fn->inode = le32_to_cpu(dirent->inode); new_fn->name_len = dirent->name_len; new_fn->file_type = dirent->file_type; @@ -87,7 +87,7 @@ Index: linux-stage/fs/ext4/ext4.h =================================================================== --- linux-stage.orig/fs/ext4/ext4.h +++ linux-stage/fs/ext4/ext4.h -@@ -1267,6 +1267,7 @@ EXT4_INODE_BIT_FNS(state, state_flags) +@@ -1293,6 +1293,7 @@ EXT4_INODE_BIT_FNS(state, state_flags) #define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 #define EXT4_FEATURE_INCOMPAT_MMP 0x0100 #define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 @@ -95,7 +95,7 @@ Index: linux-stage/fs/ext4/ext4.h #define EXT4_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR #define EXT4_FEATURE_INCOMPAT_SUPP (EXT4_FEATURE_INCOMPAT_FILETYPE| \ -@@ -1275,7 +1276,9 @@ EXT4_INODE_BIT_FNS(state, state_flags) +@@ -1301,7 +1302,9 @@ EXT4_INODE_BIT_FNS(state, state_flags) EXT4_FEATURE_INCOMPAT_EXTENTS| \ EXT4_FEATURE_INCOMPAT_64BIT| \ EXT4_FEATURE_INCOMPAT_FLEX_BG| \ @@ -106,7 +106,7 @@ Index: linux-stage/fs/ext4/ext4.h #define EXT4_FEATURE_RO_COMPAT_SUPP (EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER| \ EXT4_FEATURE_RO_COMPAT_LARGE_FILE| \ EXT4_FEATURE_RO_COMPAT_GDT_CSUM| \ -@@ -1357,6 +1360,43 @@ struct ext4_dir_entry_2 { +@@ -1387,6 +1390,43 @@ struct ext4_dir_entry_2 { #define EXT4_FT_SYMLINK 7 #define EXT4_FT_MAX 8 @@ -150,7 +150,7 @@ Index: linux-stage/fs/ext4/ext4.h /* * EXT4_DIR_PAD defines the directory entries boundaries -@@ -1365,8 +1405,11 @@ struct ext4_dir_entry_2 { +@@ -1395,8 +1435,11 @@ struct ext4_dir_entry_2 { */ #define EXT4_DIR_PAD 4 #define EXT4_DIR_ROUND (EXT4_DIR_PAD - 1) @@ -163,7 +163,7 @@ Index: linux-stage/fs/ext4/ext4.h #define EXT4_MAX_REC_LEN ((1<<16)-1) static inline unsigned int -@@ -1726,7 +1769,7 @@ extern struct buffer_head * ext4_find_en +@@ -1786,7 +1829,7 @@ extern struct buffer_head * ext4_find_en struct ext4_dir_entry_2 ** res_dir); #define ll_ext4_find_entry(inode, dentry, res_dir) ext4_find_entry(inode, &(dentry)->d_name, res_dir) extern int ext4_add_dot_dotdot(handle_t *handle, struct inode *dir, @@ -172,7 +172,7 @@ Index: linux-stage/fs/ext4/ext4.h extern struct buffer_head *ext4_append(handle_t *handle, struct inode *inode, ext4_lblk_t *block, int *err); -@@ -2069,6 +2112,28 @@ extern wait_queue_head_t aio_wq[]; +@@ -2130,6 +2173,28 @@ extern wait_queue_head_t aio_wq[]; #define to_aio_wq(v) (&aio_wq[((unsigned long)v) % WQ_HASH_SZ]) extern void ext4_aio_wait(struct inode *inode); @@ -431,7 +431,7 @@ Index: linux-stage/fs/ext4/namei.c out_journal: if (journal) { -@@ -1978,12 +2013,13 @@ retry: +@@ -1977,12 +2012,13 @@ retry: /* Initialize @inode as a subdirectory of @dir, and add the * "." and ".." entries into the first directory block. */ int ext4_add_dot_dotdot(handle_t *handle, struct inode * dir, @@ -447,7 +447,7 @@ Index: linux-stage/fs/ext4/namei.c if (IS_ERR(handle)) return PTR_ERR(handle); -@@ -1996,28 +2032,40 @@ int ext4_add_dot_dotdot(handle_t *handle +@@ -1995,28 +2031,40 @@ int ext4_add_dot_dotdot(handle_t *handle inode->i_fop = &ext4_dir_operations; inode->i_size = EXT4_I(inode)->i_disksize = inode->i_sb->s_blocksize; dir_block = ext4_bread(handle, inode, 0, 1, &err); @@ -496,7 +496,7 @@ Index: linux-stage/fs/ext4/namei.c inode->i_nlink = 2; BUFFER_TRACE(dir_block, "call ext4_handle_dirty_metadata"); ext4_handle_dirty_metadata(handle, dir, dir_block); -@@ -2054,9 +2102,12 @@ retry: +@@ -2053,9 +2101,12 @@ retry: if (IS_ERR(inode)) goto out_stop; @@ -510,7 +510,7 @@ Index: linux-stage/fs/ext4/namei.c goto out_stop; } -@@ -2092,7 +2143,7 @@ static int empty_dir(struct inode *inode +@@ -2091,7 +2142,7 @@ static int empty_dir(struct inode *inode int err = 0; sb = inode->i_sb; diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series index d9331de..be350d4 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series @@ -1,6 +1,6 @@ ext4-wantedi-2.6-rhel6.patch ext4-map_inode_page-2.6.18-rhel5.patch -export-ext4-2.6-rhel5.patch +export-ext4-2.6-rhel6.patch ext4-remove-cond_resched-calls-rhel5.patch ext4-nlink-2.6-rhel5.patch ext4-ext_generation-sles11.patch diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 2bf266a..a5c9459 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -1,12 +1,12 @@ -09-16-2011 Whamcloud, Inc. +09-30-2011 Whamcloud, Inc. * version 2.1.0 * Server support for kernels: 2.6.18-274.12.1.el5 (RHEL5) - 2.6.32-131.6.1.el6 (RHEL6) + 2.6.32-220.el6 (RHEL6) * Client support for unpatched kernels: (see http://wiki.lustre.org/index.php?title=Patchless_Client) 2.6.18-274.12.1.el5 (RHEL5) - 2.6.32-131.6.1.el6 (RHEL6) + 2.6.32-220.el6 (RHEL6) 2.6.29.4-167.fc11 (FC11) 2.6.16.60-0.69.1 (SLES10) 2.6.27.19-5 (SLES11) @@ -18,6 +18,10 @@ mounted with "32bitapi" mount option Severity : enhancement +Jira : LU-751 +Description: Update RHEL6.2 kernel to 2.6.32-220.el6 + +Severity : enhancement Jira : LU-674 Description: Kernel update [RHEL5.7 2.6.18-274.12.1.el5] diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index 3147e78..930f504 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -1004,22 +1004,25 @@ LB_LINUX_TRY_COMPILE([ # # LC_STATFS_DENTRY_PARAM -# starting from 2.6.18 linux kernel uses dentry instead of -# super_block for first vfs_statfs argument +# starting from 2.6.18 linux kernel uses dentry instead of super_block +# for the first parameter of the super_operations->statfs() callback. # AC_DEFUN([LC_STATFS_DENTRY_PARAM], -[AC_MSG_CHECKING([first vfs_statfs parameter is dentry]) +[AC_MSG_CHECKING([if super_ops.statfs() first parameter is dentry]) +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" LB_LINUX_TRY_COMPILE([ #include ],[ - int vfs_statfs(struct dentry *, struct kstatfs *); + ((struct super_operations *)0)->statfs((struct dentry *)0, (struct kstatfs*)0); ],[ AC_DEFINE(HAVE_STATFS_DENTRY_PARAM, 1, - [first parameter of vfs_statfs is dentry]) + [super_ops.statfs() first parameter is dentry]) AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) ]) +EXTRA_KCFLAGS="$tmp_flags" ]) # diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-rhel6-i686.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-rhel6-i686.config index 04cd1ae..e48692d 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-rhel6-i686.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-rhel6-i686.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.32 -# Sun Jul 5 23:04:09 2011 +# Tue Dec 20 23:41:08 2011 # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -100,6 +100,7 @@ CONFIG_LOG_BUF_SHIFT=19 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_GROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y CONFIG_RT_GROUP_SCHED=y # CONFIG_USER_SCHED is not set CONFIG_CGROUP_SCHED=y @@ -116,6 +117,7 @@ CONFIG_CGROUP_MEM_RES_CTLR=y CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y CONFIG_BLK_CGROUP=y # CONFIG_DEBUG_BLK_CGROUP is not set +CONFIG_CGROUP_PERF=y CONFIG_SCHED_AUTOGROUP=y CONFIG_MM_OWNER=y # CONFIG_SYSFS_DEPRECATED_V2 is not set @@ -211,6 +213,7 @@ CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_LBDAF=y CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y CONFIG_BLK_DEV_INTEGRITY=y CONFIG_BLK_DEV_THROTTLING=y @@ -251,7 +254,7 @@ CONFIG_X86_32_NON_STANDARD=y CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_PARAVIRT_GUEST=y CONFIG_XEN=y -CONFIG_XEN_MAX_DOMAIN_MEMORY=8 +CONFIG_XEN_MAX_DOMAIN_MEMORY=128 CONFIG_XEN_SAVE_RESTORE=y CONFIG_XEN_DEBUG_FS=y # CONFIG_VMI is not set @@ -453,9 +456,10 @@ CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_HOTPLUG_MEMORY=y # CONFIG_ACPI_HOTPLUG_MEMORY_AUTO_ONLINE is not set CONFIG_ACPI_SBS=m -CONFIG_ACPI_HED=m +CONFIG_ACPI_HED=y CONFIG_ACPI_APEI=y -CONFIG_ACPI_APEI_GHES=m +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_PCIEAER=y CONFIG_ACPI_APEI_EINJ=m CONFIG_ACPI_APEI_ERST_DEBUG=m CONFIG_SFI=y @@ -553,7 +557,7 @@ CONFIG_ISA=y # CONFIG_MCA is not set # CONFIG_SCx200 is not set CONFIG_OLPC=y -CONFIG_K8_NB=y +CONFIG_AMD_NB=y CONFIG_PCCARD=y # CONFIG_PCMCIA_DEBUG is not set CONFIG_PCMCIA=y @@ -736,6 +740,7 @@ CONFIG_NETFILTER_XT_TARGET_TRACE=m CONFIG_NETFILTER_XT_TARGET_SECMARK=m CONFIG_NETFILTER_XT_TARGET_TCPMSS=m CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_MATCH_CLUSTER=m CONFIG_NETFILTER_XT_MATCH_COMMENT=m CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m @@ -772,6 +777,18 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m CONFIG_NETFILTER_XT_MATCH_TIME=m CONFIG_NETFILTER_XT_MATCH_U32=m CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_IP_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_LIST_SET=m CONFIG_IP_VS=m CONFIG_IP_VS_IPV6=y # CONFIG_IP_VS_DEBUG is not set @@ -1425,9 +1442,6 @@ CONFIG_FCOE_FNIC=m # CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_GDTH is not set CONFIG_SCSI_ISCI=m -# CONFIG_PBG_HBA_BETA is not set -CONFIG_PBG_HBA_A2=y -# CONFIG_PBG_HBA_A0 is not set # CONFIG_SCSI_GENERIC_NCR5380 is not set # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set CONFIG_SCSI_IPS=m @@ -1566,6 +1580,7 @@ CONFIG_DM_DEBUG=y CONFIG_DM_CRYPT=m CONFIG_DM_SNAPSHOT=m CONFIG_DM_MIRROR=m +CONFIG_DM_RAID=m CONFIG_DM_LOG_USERSPACE=m CONFIG_DM_ZERO=m CONFIG_DM_MULTIPATH=m @@ -1575,11 +1590,19 @@ CONFIG_DM_DELAY=m CONFIG_DM_REPLICATOR=m CONFIG_DM_RAID45=m CONFIG_DM_UEVENT=y +CONFIG_DM_FLAKEY=m +CONFIG_TARGET_CORE=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_PSCSI=m +CONFIG_LOOPBACK_TARGET=m +# CONFIG_LOOPBACK_TARGET_CDB_DEBUG is not set +CONFIG_TCM_FC=m CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m CONFIG_FUSION_SAS=m -CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_MAX_SGE=256 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m CONFIG_FUSION_LOGGING=y @@ -2352,7 +2375,8 @@ CONFIG_UNIX98_PTYS=y CONFIG_DEVPTS_MULTIPLE_INSTANCES=y # CONFIG_LEGACY_PTYS is not set CONFIG_CRASH=y -# CONFIG_PRINTER is not set +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set CONFIG_PPDEV=m CONFIG_HVC_DRIVER=y CONFIG_HVC_IRQ=y @@ -2493,7 +2517,7 @@ CONFIG_WM8350_POWER=m CONFIG_BATTERY_OLPC=y CONFIG_BATTERY_BQ27x00=m CONFIG_BATTERY_MAX17040=m -CONFIG_HWMON=m +CONFIG_HWMON=y CONFIG_HWMON_VID=m # CONFIG_HWMON_DEBUG_CHIP is not set @@ -2528,7 +2552,6 @@ CONFIG_SENSORS_G760A=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m CONFIG_SENSORS_CORETEMP=m -CONFIG_SENSORS_PKGTEMP=m CONFIG_SENSORS_IBMAEM=m CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m @@ -2583,6 +2606,7 @@ CONFIG_SENSORS_APPLESMC=m CONFIG_SENSORS_ATK0110=m CONFIG_SENSORS_LIS3LV02D=m CONFIG_THERMAL=y +CONFIG_THERMAL_HWMON=y CONFIG_WATCHDOG=y # CONFIG_WATCHDOG_NOWAYOUT is not set @@ -2599,7 +2623,7 @@ CONFIG_ALIM7101_WDT=m # CONFIG_SC520_WDT is not set CONFIG_SBC_FITPC2_WATCHDOG=m # CONFIG_EUROTECH_WDT is not set -# CONFIG_IB700_WDT is not set +CONFIG_IB700_WDT=m CONFIG_IBMASR=m # CONFIG_WAFER_WDT is not set CONFIG_I6300ESB_WDT=m @@ -3091,7 +3115,6 @@ CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_KMS=y # CONFIG_DRM_I810 is not set -# CONFIG_DRM_I830 is not set CONFIG_DRM_I915=m CONFIG_DRM_I915_KMS=y CONFIG_DRM_MGA=m @@ -3348,6 +3371,7 @@ CONFIG_SND_ENS1371=m CONFIG_SND_ES1968=m # CONFIG_SND_FM801 is not set CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_PREALLOC_SIZE=512 CONFIG_SND_HDA_HWDEP=y # CONFIG_SND_HDA_RECONFIG is not set CONFIG_SND_HDA_INPUT_BEEP=y @@ -3355,6 +3379,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=2 CONFIG_SND_HDA_INPUT_JACK=y # CONFIG_SND_HDA_PATCH_LOADER is not set CONFIG_SND_HDA_CODEC_REALTEK=y +CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y CONFIG_SND_HDA_CODEC_ANALOG=y CONFIG_SND_HDA_CODEC_SIGMATEL=y CONFIG_SND_HDA_CODEC_VIA=y @@ -3362,6 +3387,7 @@ CONFIG_SND_HDA_CODEC_HDMI=y CONFIG_SND_HDA_CODEC_CIRRUS=y CONFIG_SND_HDA_CODEC_CONEXANT=y CONFIG_SND_HDA_CODEC_CA0110=y +CONFIG_SND_HDA_CODEC_CA0132=y CONFIG_SND_HDA_CODEC_CMEDIA=y CONFIG_SND_HDA_CODEC_SI3054=y CONFIG_SND_HDA_GENERIC=y @@ -3672,6 +3698,7 @@ CONFIG_MSPRO_BLOCK=m # CONFIG_MEMSTICK_TIFM_MS=m CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_MEMSTICK_R592=m CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y @@ -3727,6 +3754,7 @@ CONFIG_EDAC=y # # CONFIG_EDAC_DEBUG is not set CONFIG_EDAC_DECODE_MCE=m +# CONFIG_EDAC_MCE_INJ is not set CONFIG_EDAC_MM_EDAC=m CONFIG_EDAC_MCE=y CONFIG_EDAC_AMD76X=m @@ -3744,6 +3772,7 @@ CONFIG_EDAC_R82600=m CONFIG_EDAC_I5000=m CONFIG_EDAC_I5100=m CONFIG_EDAC_I7300=m +# CONFIG_EDAC_SBRIDGE is not set CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y @@ -3913,6 +3942,7 @@ CONFIG_ZRAM=m CONFIG_ZRAM_DEBUG=y CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m +# CONFIG_ACERHDF is not set CONFIG_ASUS_LAPTOP=m CONFIG_DELL_WMI=m CONFIG_FUJITSU_LAPTOP=m @@ -3937,6 +3967,7 @@ CONFIG_ACPI_WMI=m CONFIG_TOPSTAR_LAPTOP=m CONFIG_ACPI_TOSHIBA=m CONFIG_INTEL_IPS=m +CONFIG_MXM_WMI=m # # Firmware Drivers @@ -4087,6 +4118,7 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_ROMFS_FS is not set +CONFIG_PSTORE=y # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set # CONFIG_EXOFS_FS is not set @@ -4127,7 +4159,7 @@ CONFIG_CIFS_POSIX=y # CONFIG_CIFS_DEBUG2 is not set CONFIG_CIFS_DFS_UPCALL=y # CONFIG_CIFS_FSCACHE is not set -CONFIG_CIFS_EXPERIMENTAL=y +CONFIG_CIFS_ACL=y # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set @@ -4262,7 +4294,7 @@ CONFIG_BOOT_PRINTK_DELAY=y # CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set -CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set # CONFIG_LKDTM is not set # CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-rhel6-x86_64.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-rhel6-x86_64.config index 331961f..68ab2df 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-rhel6-x86_64.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-rhel6-x86_64.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.32 -# Sun Jul 5 23:04:00 2011 +# Tue Dec 20 15:42:19 2011 # CONFIG_64BIT=y # CONFIG_X86_32 is not set @@ -101,6 +101,7 @@ CONFIG_LOG_BUF_SHIFT=19 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_GROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y CONFIG_RT_GROUP_SCHED=y # CONFIG_USER_SCHED is not set CONFIG_CGROUP_SCHED=y @@ -117,6 +118,7 @@ CONFIG_CGROUP_MEM_RES_CTLR=y CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y CONFIG_BLK_CGROUP=y # CONFIG_DEBUG_BLK_CGROUP is not set +CONFIG_CGROUP_PERF=y CONFIG_SCHED_AUTOGROUP=y CONFIG_MM_OWNER=y # CONFIG_SYSFS_DEPRECATED_V2 is not set @@ -212,6 +214,7 @@ CONFIG_MODULE_VERIFY=y CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y CONFIG_BLK_DEV_INTEGRITY=y CONFIG_BLK_DEV_THROTTLING=y CONFIG_BLOCK_COMPAT=y @@ -251,7 +254,7 @@ CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_PARAVIRT_GUEST=y CONFIG_XEN=y -CONFIG_XEN_MAX_DOMAIN_MEMORY=32 +CONFIG_XEN_MAX_DOMAIN_MEMORY=128 CONFIG_XEN_SAVE_RESTORE=y CONFIG_XEN_DEBUG_FS=y CONFIG_KVM_CLOCK=y @@ -341,7 +344,7 @@ CONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_DIRECT_GBPAGES=y CONFIG_TRACK_DIRTY_PAGES=y CONFIG_NUMA=y -CONFIG_K8_NUMA=y +CONFIG_AMD_NUMA=y CONFIG_X86_64_ACPI_NUMA=y CONFIG_NODES_SPAN_OTHER_NODES=y # CONFIG_NUMA_EMU is not set @@ -452,9 +455,10 @@ CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_HOTPLUG_MEMORY=y CONFIG_ACPI_HOTPLUG_MEMORY_AUTO_ONLINE=y CONFIG_ACPI_SBS=m -CONFIG_ACPI_HED=m +CONFIG_ACPI_HED=y CONFIG_ACPI_APEI=y -CONFIG_ACPI_APEI_GHES=m +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_PCIEAER=y CONFIG_ACPI_APEI_EINJ=m CONFIG_ACPI_APEI_ERST_DEBUG=m CONFIG_SFI=y @@ -529,7 +533,7 @@ CONFIG_PCI_STUB=y CONFIG_HT_IRQ=y CONFIG_PCI_IOV=y CONFIG_ISA_DMA_API=y -CONFIG_K8_NB=y +CONFIG_AMD_NB=y CONFIG_PCCARD=y # CONFIG_PCMCIA_DEBUG is not set CONFIG_PCMCIA=y @@ -711,6 +715,7 @@ CONFIG_NETFILTER_XT_TARGET_TRACE=m CONFIG_NETFILTER_XT_TARGET_SECMARK=m CONFIG_NETFILTER_XT_TARGET_TCPMSS=m CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_MATCH_CLUSTER=m CONFIG_NETFILTER_XT_MATCH_COMMENT=m CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m @@ -747,6 +752,18 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m CONFIG_NETFILTER_XT_MATCH_TIME=m CONFIG_NETFILTER_XT_MATCH_U32=m CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_IP_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_LIST_SET=m CONFIG_IP_VS=m CONFIG_IP_VS_IPV6=y # CONFIG_IP_VS_DEBUG is not set @@ -1393,9 +1410,6 @@ CONFIG_FCOE_FNIC=m # CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_GDTH is not set CONFIG_SCSI_ISCI=m -# CONFIG_PBG_HBA_BETA is not set -CONFIG_PBG_HBA_A2=y -# CONFIG_PBG_HBA_A0 is not set CONFIG_SCSI_IPS=m CONFIG_SCSI_INITIO=m # CONFIG_SCSI_INIA100 is not set @@ -1516,6 +1530,7 @@ CONFIG_DM_DEBUG=y CONFIG_DM_CRYPT=m CONFIG_DM_SNAPSHOT=m CONFIG_DM_MIRROR=m +CONFIG_DM_RAID=m CONFIG_DM_LOG_USERSPACE=m CONFIG_DM_ZERO=m CONFIG_DM_MULTIPATH=m @@ -1525,11 +1540,19 @@ CONFIG_DM_DELAY=m CONFIG_DM_REPLICATOR=m CONFIG_DM_RAID45=m CONFIG_DM_UEVENT=y +CONFIG_DM_FLAKEY=m +CONFIG_TARGET_CORE=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_PSCSI=m +CONFIG_LOOPBACK_TARGET=m +# CONFIG_LOOPBACK_TARGET_CDB_DEBUG is not set +CONFIG_TCM_FC=m CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m CONFIG_FUSION_SAS=m -CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_MAX_SGE=256 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m CONFIG_FUSION_LOGGING=y @@ -2239,7 +2262,8 @@ CONFIG_UNIX98_PTYS=y CONFIG_DEVPTS_MULTIPLE_INSTANCES=y # CONFIG_LEGACY_PTYS is not set CONFIG_CRASH=y -# CONFIG_PRINTER is not set +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set CONFIG_PPDEV=m CONFIG_HVC_DRIVER=y CONFIG_HVC_IRQ=y @@ -2275,7 +2299,7 @@ CONFIG_MAX_RAW_DEVS=8192 CONFIG_HPET=y # CONFIG_HPET_MMAP is not set CONFIG_HANGCHECK_TIMER=m -# CONFIG_UV_MMTIMER is not set +CONFIG_UV_MMTIMER=m CONFIG_TCG_TPM=y CONFIG_TCG_TIS=y CONFIG_TCG_NSC=m @@ -2373,7 +2397,7 @@ CONFIG_WM8350_POWER=m # CONFIG_BATTERY_DS2782 is not set CONFIG_BATTERY_BQ27x00=m CONFIG_BATTERY_MAX17040=m -CONFIG_HWMON=m +CONFIG_HWMON=y CONFIG_HWMON_VID=m # CONFIG_HWMON_DEBUG_CHIP is not set @@ -2408,7 +2432,6 @@ CONFIG_SENSORS_G760A=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m CONFIG_SENSORS_CORETEMP=m -CONFIG_SENSORS_PKGTEMP=m CONFIG_SENSORS_IBMAEM=m CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m @@ -2463,6 +2486,7 @@ CONFIG_SENSORS_APPLESMC=m CONFIG_SENSORS_ATK0110=m CONFIG_SENSORS_LIS3LV02D=m CONFIG_THERMAL=y +CONFIG_THERMAL_HWMON=y CONFIG_WATCHDOG=y # CONFIG_WATCHDOG_NOWAYOUT is not set @@ -2479,7 +2503,7 @@ CONFIG_ALIM7101_WDT=m # CONFIG_SC520_WDT is not set CONFIG_SBC_FITPC2_WATCHDOG=m # CONFIG_EUROTECH_WDT is not set -# CONFIG_IB700_WDT is not set +CONFIG_IB700_WDT=m CONFIG_IBMASR=m # CONFIG_WAFER_WDT is not set CONFIG_I6300ESB_WDT=m @@ -2955,7 +2979,6 @@ CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_KMS=y # CONFIG_DRM_I810 is not set -# CONFIG_DRM_I830 is not set CONFIG_DRM_I915=m CONFIG_DRM_I915_KMS=y CONFIG_DRM_MGA=m @@ -3173,6 +3196,7 @@ CONFIG_SND_ENS1371=m CONFIG_SND_ES1968=m # CONFIG_SND_FM801 is not set CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_PREALLOC_SIZE=512 CONFIG_SND_HDA_HWDEP=y # CONFIG_SND_HDA_RECONFIG is not set CONFIG_SND_HDA_INPUT_BEEP=y @@ -3180,6 +3204,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=2 CONFIG_SND_HDA_INPUT_JACK=y # CONFIG_SND_HDA_PATCH_LOADER is not set CONFIG_SND_HDA_CODEC_REALTEK=y +CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y CONFIG_SND_HDA_CODEC_ANALOG=y CONFIG_SND_HDA_CODEC_SIGMATEL=y CONFIG_SND_HDA_CODEC_VIA=y @@ -3187,6 +3212,7 @@ CONFIG_SND_HDA_CODEC_HDMI=y CONFIG_SND_HDA_CODEC_CIRRUS=y CONFIG_SND_HDA_CODEC_CONEXANT=y CONFIG_SND_HDA_CODEC_CA0110=y +CONFIG_SND_HDA_CODEC_CA0132=y CONFIG_SND_HDA_CODEC_CMEDIA=y CONFIG_SND_HDA_CODEC_SI3054=y CONFIG_SND_HDA_GENERIC=y @@ -3496,6 +3522,7 @@ CONFIG_MSPRO_BLOCK=m # CONFIG_MEMSTICK_TIFM_MS=m CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_MEMSTICK_R592=m CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y @@ -3553,6 +3580,7 @@ CONFIG_EDAC=y # # CONFIG_EDAC_DEBUG is not set CONFIG_EDAC_DECODE_MCE=m +# CONFIG_EDAC_MCE_INJ is not set CONFIG_EDAC_MM_EDAC=m CONFIG_EDAC_MCE=y CONFIG_EDAC_AMD64=m @@ -3567,6 +3595,7 @@ CONFIG_EDAC_I7CORE=m CONFIG_EDAC_I5000=m CONFIG_EDAC_I5100=m CONFIG_EDAC_I7300=m +CONFIG_EDAC_SBRIDGE=m CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y @@ -3736,6 +3765,7 @@ CONFIG_ZRAM=m CONFIG_ZRAM_DEBUG=y CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m +# CONFIG_ACERHDF is not set CONFIG_ASUS_LAPTOP=m CONFIG_DELL_WMI=m CONFIG_FUJITSU_LAPTOP=m @@ -3759,6 +3789,7 @@ CONFIG_ACPI_WMI=m CONFIG_TOPSTAR_LAPTOP=m CONFIG_ACPI_TOSHIBA=m CONFIG_INTEL_IPS=m +CONFIG_MXM_WMI=m # # Firmware Drivers @@ -3913,6 +3944,7 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_ROMFS_FS is not set +CONFIG_PSTORE=y # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set # CONFIG_EXOFS_FS is not set @@ -3953,7 +3985,7 @@ CONFIG_CIFS_POSIX=y # CONFIG_CIFS_DEBUG2 is not set CONFIG_CIFS_DFS_UPCALL=y # CONFIG_CIFS_FSCACHE is not set -CONFIG_CIFS_EXPERIMENTAL=y +CONFIG_CIFS_ACL=y # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set @@ -4087,7 +4119,7 @@ CONFIG_BOOT_PRINTK_DELAY=y # CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set -CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set # CONFIG_LKDTM is not set # CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set diff --git a/lustre/kernel_patches/patches/dev_read_only-2.6.32-rhel6.patch b/lustre/kernel_patches/patches/dev_read_only-2.6.32-rhel6.patch index 71e6359..f6e7129 100644 --- a/lustre/kernel_patches/patches/dev_read_only-2.6.32-rhel6.patch +++ b/lustre/kernel_patches/patches/dev_read_only-2.6.32-rhel6.patch @@ -30,7 +30,7 @@ Index: linux-2.6.32-131.0.15.el6.x86_64/block/blk-core.c /* * Check whether this bio extends beyond the end of the device. */ -@@ -1517,6 +1519,23 @@ static inline void __generic_make_reques +@@ -1517,6 +1519,21 @@ static inline void __generic_make_reques if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) goto end_io; @@ -45,10 +45,8 @@ Index: linux-2.6.32-131.0.15.el6.x86_64/block/blk-core.c + bdev->bd_dev, bio->bi_flags, bio->bi_vcnt, + bio->bi_idx, bio->bi_size, + atomic_read(&bio->bi_cnt), bio->bi_private); -+ set_bit(BIO_RDONLY, &bio->bi_flags); -+ bio_endio(bio, 0); -+ clear_bit(BIO_RDONLY, &bio->bi_flags); -+ break; ++ err = 0; ++ goto end_io; + } + if (should_fail_request(bio)) @@ -166,18 +164,6 @@ Index: linux-2.6.32-131.0.15.el6.x86_64/fs/block_dev.c } unlock_kernel(); mutex_unlock(&bdev->bd_mutex); -Index: linux-2.6.32-131.0.15.el6.x86_64/include/linux/blk_types.h -=================================================================== ---- linux-2.6.32-131.0.15.el6.x86_64.orig/include/linux/blk_types.h 2011-05-10 21:37:58.000000000 +0300 -+++ linux-2.6.32-131.0.15.el6.x86_64/include/linux/blk_types.h 2011-05-19 21:03:42.000000000 +0300 -@@ -24,6 +24,7 @@ - #define BIO_NULL_MAPPED 9 /* contains invalid user pages */ - #define BIO_FS_INTEGRITY 10 /* fs owns integrity data, not block layer */ - #define BIO_QUIET 11 /* Make BIO Quiet */ -+#define BIO_RDONLY 31 /* device is readonly */ - #define bio_flagged(bio, flag) ((bio)->bi_flags & (1 << (flag))) - - /* Index: linux-2.6.32-131.0.15.el6.x86_64/include/linux/fs.h =================================================================== --- linux-2.6.32-131.0.15.el6.x86_64.orig/include/linux/fs.h 2011-05-10 21:38:29.000000000 +0300 diff --git a/lustre/kernel_patches/patches/vfs_races-2.6.32-rhel6.patch b/lustre/kernel_patches/patches/vfs_races-2.6.32-rhel6.patch index 5cd4f1b..819c57b 100644 --- a/lustre/kernel_patches/patches/vfs_races-2.6.32-rhel6.patch +++ b/lustre/kernel_patches/patches/vfs_races-2.6.32-rhel6.patch @@ -21,10 +21,10 @@ Index: linux-2.6.32-71.18.1.el6/include/linux/dcache.h --- linux-2.6.32-71.18.1.el6.orig/include/linux/dcache.h +++ linux-2.6.32-71.18.1.el6/include/linux/dcache.h @@ -185,6 +185,7 @@ d_iput: no no no yes - #define DCACHE_COOKIE 0x0040 /* For use by dcookie subsystem */ - - #define DCACHE_FSNOTIFY_PARENT_WATCHED 0x0080 /* Parent inode is watched by some fsnotify listener */ -+#define DCACHE_LUSTRE_INVALID 0x0100 /* Lustre invalidated */ + #define DCACHE_MANAGE_TRANSIT 0x40000 /* manage transit from this dirent */ + #define DCACHE_MANAGED_DENTRY \ + (DCACHE_MOUNTED|DCACHE_NEED_AUTOMOUNT|DCACHE_MANAGE_TRANSIT) ++#define DCACHE_LUSTRE_INVALID 0x4000000 /* Lustre invalidated */ extern spinlock_t dcache_lock; extern seqlock_t rename_lock; diff --git a/lustre/kernel_patches/series/2.6-rhel6.series b/lustre/kernel_patches/series/2.6-rhel6.series index 52dcc52..e720c51 100644 --- a/lustre/kernel_patches/series/2.6-rhel6.series +++ b/lustre/kernel_patches/series/2.6-rhel6.series @@ -6,4 +6,3 @@ dev_read_only-2.6.32-rhel6.patch blkdev_tunables-2.6-rhel6.patch export-2.6.32-vanilla.patch jbd2-jcberr-2.6-rhel6.patch -fix-forever-in-do_get_write_access.patch diff --git a/lustre/kernel_patches/targets/2.6-rhel6.target.in b/lustre/kernel_patches/targets/2.6-rhel6.target.in index 47d3e36..c8e9a1e 100644 --- a/lustre/kernel_patches/targets/2.6-rhel6.target.in +++ b/lustre/kernel_patches/targets/2.6-rhel6.target.in @@ -1,5 +1,5 @@ lnxmaj="2.6.32" -lnxrel="131.6.1.el6" +lnxrel="220.el6" KERNEL_SRPM=kernel-${lnxmaj}-${lnxrel}.src.rpm SERIES=2.6-rhel6.series diff --git a/lustre/kernel_patches/which_patch b/lustre/kernel_patches/which_patch index 79b4113d..4385f67 100644 --- a/lustre/kernel_patches/which_patch +++ b/lustre/kernel_patches/which_patch @@ -2,10 +2,10 @@ SERIES VERSION COMMENT SUPPORTED KERNELS: 2.6-rhel5 RHEL5: 2.6.18-274.12.1.el5 -2.6-rhel6 RHEL6: 2.6.32-131.6.1.el6 +2.6-rhel6 RHEL6: 2.6.32-220.el6 CLIENT SUPPORT FOR UNPATCHED KERNELS: 2.6.18-274.12.1.el5 (RHEL5) - 2.6.32-131.6.1.el6 (RHEL6) + 2.6.32-220.el6 (RHEL6) 2.6.16.60-0.69.1 (SLES10) 2.6.27.19-5 (SLES11) diff --git a/lustre/ldlm/ldlm_lockd.c b/lustre/ldlm/ldlm_lockd.c index 2990edc..62ab844 100644 --- a/lustre/ldlm/ldlm_lockd.c +++ b/lustre/ldlm/ldlm_lockd.c @@ -2649,7 +2649,7 @@ int __init ldlm_init(void) return 0; } -void __exit ldlm_exit(void) +void ldlm_exit(void) { int rc; if (ldlm_refcount) diff --git a/lustre/obdclass/obd_mount.c b/lustre/obdclass/obd_mount.c index 656281c..87f9207 100644 --- a/lustre/obdclass/obd_mount.c +++ b/lustre/obdclass/obd_mount.c @@ -1325,7 +1325,7 @@ static struct vfsmount *server_kernel_mount(struct super_block *sb) char *options = NULL; unsigned long page, s_flags; struct page *__page; - int rc; + int len, rc; ENTRY; OBD_ALLOC(ldd, sizeof(*ldd)); @@ -1380,11 +1380,15 @@ static struct vfsmount *server_kernel_mount(struct super_block *sb) memset(options, 0, CFS_PAGE_SIZE); strncpy(options, ldd->ldd_mount_opts, CFS_PAGE_SIZE - 2); + len = CFS_PAGE_SIZE - strlen(options) - 2; + if (*options != 0) + strcat(options, ","); + strncat(options, "no_mbcache", len); + /* Add in any mount-line options */ if (lmd->lmd_opts && (*(lmd->lmd_opts) != 0)) { - int len = CFS_PAGE_SIZE - strlen(options) - 2; - if (*options != 0) - strcat(options, ","); + len = CFS_PAGE_SIZE - strlen(options) - 2; + strcat(options, ","); strncat(options, lmd->lmd_opts, len); } diff --git a/lustre/ptlrpc/ptlrpc_internal.h b/lustre/ptlrpc/ptlrpc_internal.h index 57bf5ba..08fec8f 100644 --- a/lustre/ptlrpc/ptlrpc_internal.h +++ b/lustre/ptlrpc/ptlrpc_internal.h @@ -138,7 +138,7 @@ void sptlrpc_conf_fini(void); /* sec.c */ int __init sptlrpc_init(void); -void __exit sptlrpc_fini(void); +void sptlrpc_fini(void); /* recov_thread.c */ int llog_recov_init(void); diff --git a/lustre/ptlrpc/sec.c b/lustre/ptlrpc/sec.c index 1531475..f0a38d8 100644 --- a/lustre/ptlrpc/sec.c +++ b/lustre/ptlrpc/sec.c @@ -2544,7 +2544,7 @@ out: return rc; } -void __exit sptlrpc_fini(void) +void sptlrpc_fini(void) { sptlrpc_lproc_fini(); sptlrpc_plain_fini(); -- 1.8.3.1