From 8ac51a5e3834148332af72a87999557eab32ac06 Mon Sep 17 00:00:00 2001 From: yangsheng Date: Wed, 11 Jul 2012 00:03:00 +0800 Subject: [PATCH] LU-1477 kernel: Kernel update [RHEL6.3 2.6.32-279.2.1.el6] Add support for RHEL6.3 kernel 2.6.32-279.2.1.el6. Signed-off-by: James Simmons Signed-off-by: yang sheng Change-Id: I792b174c77d635100cd02dbbddef568b550d6ed1 Reviewed-on: http://review.whamcloud.com/3033 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Fan Yong Reviewed-by: Oleg Drokin --- .../patches/ext4-export-64bit-name-hash.patch | 150 ++++++++++++----- .../patches/ext4-journal-callback.patch | 43 ++--- .../patches/ext4-update-sles11-rhel6.patch | 180 +++++++++++++++------ .../kernel_patches/patches/ext4_pdirop-rhel6.patch | 12 +- .../kernel_patches/series/ldiskfs-2.6-rhel6.series | 3 +- lustre/ChangeLog | 8 +- lustre/include/linux/obd_class.h | 27 ---- .../kernel-2.6.32-2.6-rhel6-i686.config | 85 +++++++--- .../kernel-2.6.32-2.6-rhel6-x86_64.config | 88 +++++++--- .../patches/dev_read_only-2.6.32-rhel6.patch | 10 +- .../patches/raid5-mmp-unplug-dev-rhel6.patch | 4 +- lustre/kernel_patches/targets/2.6-rhel6.target.in | 2 +- lustre/kernel_patches/which_patch | 4 +- lustre/osd-ldiskfs/osd_handler.c | 6 +- lustre/osd-ldiskfs/osd_internal.h | 19 +++ 15 files changed, 428 insertions(+), 213 deletions(-) diff --git a/ldiskfs/kernel_patches/patches/ext4-export-64bit-name-hash.patch b/ldiskfs/kernel_patches/patches/ext4-export-64bit-name-hash.patch index c7e01f4..f916733 100644 --- a/ldiskfs/kernel_patches/patches/ext4-export-64bit-name-hash.patch +++ b/ldiskfs/kernel_patches/patches/ext4-export-64bit-name-hash.patch @@ -1,8 +1,7 @@ -Index: linux-stage/fs/ext4/dir.c -=================================================================== ---- linux-stage.orig/fs/ext4/dir.c 2011-04-19 01:02:34.000000000 +0800 -+++ linux-stage/fs/ext4/dir.c 2011-04-19 01:24:36.000000000 +0800 -@@ -242,22 +242,50 @@ +diff -urp linux-stage.orig/fs/ext4/dir.c linux-stage/fs/ext4/dir.c +--- linux-stage.orig/fs/ext4/dir.c 2012-06-21 10:26:23.000000000 -0400 ++++ linux-stage/fs/ext4/dir.c 2012-06-21 10:37:39.000000000 -0400 +@@ -247,22 +247,63 @@ out: return ret; } @@ -17,7 +16,8 @@ Index: linux-stage/fs/ext4/dir.c + /* * These functions convert from the major/minor hash to an f_pos - * value. +- * value. ++ * value for dx directories. * - * Currently we only use major hash numer. This is unfortunate, but - * on 32-bit machines, the same VFS interface is used for lseek and @@ -27,44 +27,57 @@ Index: linux-stage/fs/ext4/dir.c - * a 64-bit version of the system call or the 32-bit version of the - * system call. Worse yet, NFSv2 only allows for a 32-bit readdir - * cookie. Sigh. -+ * Up layer (OSD) should specify O_32BITHASH or O_64BITHASH explicitly. -+ * On the other hand, we allow ldiskfs to be mounted directly on both 32-bit -+ * and 64-bit nodes, under such case, neither O_32BITHASH nor O_64BITHASH is -+ * specified. - */ --#define hash2pos(major, minor) (major >> 1) --#define pos2maj_hash(pos) ((pos << 1) & 0xffffffff) --#define pos2min_hash(pos) (0) ++ * Upper layer (for example NFS) should specify FMODE_32BITHASH or ++ * FMODE_64BITHASH explicitly. On the other hand, we allow ext4 to be mounted ++ * directly on both 32-bit and 64-bit nodes, under such case, neither ++ * FMODE_32BITHASH nor FMODE_64BITHASH is specified. ++ */ +static inline loff_t hash2pos(struct file *filp, __u32 major, __u32 minor) +{ -+ if ((filp->f_flags & O_32BITHASH) || -+ (!(filp->f_flags & O_64BITHASH) && is_32bit_api())) -+ return (major >> 1); ++ if ((filp->f_mode & FMODE_32BITHASH) || ++ (!(filp->f_mode & FMODE_64BITHASH) && is_32bit_api())) ++ return major >> 1; + else -+ return (((__u64)(major >> 1) << 32) | (__u64)minor); ++ return ((__u64)(major >> 1) << 32) | (__u64)minor; +} + +static inline __u32 pos2maj_hash(struct file *filp, loff_t pos) +{ -+ if ((filp->f_flags & O_32BITHASH) || -+ (!(filp->f_flags & O_64BITHASH) && is_32bit_api())) -+ return ((pos << 1) & 0xffffffff); ++ if ((filp->f_mode & FMODE_32BITHASH) || ++ (!(filp->f_mode & FMODE_64BITHASH) && is_32bit_api())) ++ return (pos << 1) & 0xffffffff; + else -+ return (((pos >> 32) << 1) & 0xffffffff); ++ return ((pos >> 32) << 1) & 0xffffffff; +} + +static inline __u32 pos2min_hash(struct file *filp, loff_t pos) +{ -+ if ((filp->f_flags & O_32BITHASH) || -+ (!(filp->f_flags & O_64BITHASH) && is_32bit_api())) -+ return (0); ++ if ((filp->f_mode & FMODE_32BITHASH) || ++ (!(filp->f_mode & FMODE_64BITHASH) && is_32bit_api())) ++ return 0; + else -+ return (pos & 0xffffffff); ++ return pos & 0xffffffff; +} ++ ++/* ++ * Return 32- or 64-bit end-of-file for dx directories + */ +-#define hash2pos(major, minor) (major >> 1) +-#define pos2maj_hash(pos) ((pos << 1) & 0xffffffff) +-#define pos2min_hash(pos) (0) ++static inline loff_t ext4_get_htree_eof(struct file *filp) ++{ ++ if ((filp->f_mode & FMODE_32BITHASH) || ++ (!(filp->f_mode & FMODE_64BITHASH) && is_32bit_api())) ++ return EXT4_HTREE_EOF_32BIT; ++ else ++ return EXT4_HTREE_EOF_64BIT; ++} ++ /* * This structure holds the nodes of the red-black tree used to store -@@ -318,15 +346,16 @@ +@@ -323,15 +364,16 @@ static void free_rb_tree_fname(struct rb } @@ -84,7 +97,7 @@ Index: linux-stage/fs/ext4/dir.c return p; } -@@ -422,7 +451,7 @@ +@@ -427,7 +469,7 @@ static int call_filldir(struct file *fil "null fname?!?\n"); return 0; } @@ -93,7 +106,7 @@ Index: linux-stage/fs/ext4/dir.c while (fname) { error = filldir(dirent, fname->name, fname->name_len, curr_pos, -@@ -447,7 +476,7 @@ +@@ -452,13 +494,13 @@ static int ext4_dx_readdir(struct file * int ret; if (!info) { @@ -102,7 +115,14 @@ Index: linux-stage/fs/ext4/dir.c if (!info) return -ENOMEM; filp->private_data = info; -@@ -461,8 +490,8 @@ + } + +- if (filp->f_pos == EXT4_HTREE_EOF) ++ if (filp->f_pos == ext4_get_htree_eof(filp)) + return 0; /* EOF */ + + /* Some one has messed with f_pos; reset the world */ +@@ -466,8 +508,8 @@ static int ext4_dx_readdir(struct file * free_rb_tree_fname(&info->root); info->curr_node = NULL; info->extra_fname = NULL; @@ -113,22 +133,68 @@ Index: linux-stage/fs/ext4/dir.c } /* -Index: linux-stage/fs/ext4/ext4.h -=================================================================== ---- linux-stage.orig/fs/ext4/ext4.h 2011-04-19 01:02:34.000000000 +0800 -+++ linux-stage/fs/ext4/ext4.h 2011-04-19 01:02:34.000000000 +0800 -@@ -55,6 +55,14 @@ - #define ext4_debug(f, a...) do {} while (0) - #endif +@@ -499,7 +541,7 @@ static int ext4_dx_readdir(struct file * + if (ret < 0) + return ret; + if (ret == 0) { +- filp->f_pos = EXT4_HTREE_EOF; ++ filp->f_pos = ext4_get_htree_eof(filp); + break; + } + info->curr_node = rb_first(&info->root); +@@ -519,7 +561,7 @@ static int ext4_dx_readdir(struct file * + info->curr_minor_hash = fname->minor_hash; + } else { + if (info->next_hash == ~0) { +- filp->f_pos = EXT4_HTREE_EOF; ++ filp->f_pos = ext4_get_htree_eof(filp); + break; + } + info->curr_hash = info->next_hash; +diff -urp linux-stage.orig/fs/ext4/ext4.h linux-stage/fs/ext4/ext4.h +--- linux-stage.orig/fs/ext4/ext4.h 2012-06-21 10:26:23.000000000 -0400 ++++ linux-stage/fs/ext4/ext4.h 2012-06-21 10:39:43.000000000 -0400 +@@ -816,6 +816,16 @@ struct ext4_inode_info { + __u64 i_fs_version; + }; -+#ifndef O_32BITHASH -+# define O_32BITHASH 0x10000000 ++#ifndef FMODE_32BITHASH ++/* 32bit hashes as llseek() offset (for directories) */ ++#define FMODE_32BITHASH ((__force fmode_t)0x200) +#endif + -+#ifndef O_64BITHASH -+# define O_64BITHASH 0x20000000 ++#ifndef FMODE_64BITHASH ++/* 64bit hashes as llseek() offset (for directories) */ ++#define FMODE_64BITHASH ((__force fmode_t)0x400) +#endif + #define HAVE_DISK_INODE_VERSION - /* data type for block offset of block group */ + /* +@@ -1450,7 +1460,11 @@ struct dx_hash_info + u32 *seed; + }; + +-#define EXT4_HTREE_EOF 0x7fffffff ++ ++/* 32 and 64 bit signed EOF for dx directories */ ++#define EXT4_HTREE_EOF_32BIT ((1UL << (32 - 1)) - 1) ++#define EXT4_HTREE_EOF_64BIT ((1ULL << (64 - 1)) - 1) ++ + + /* + * Control parameters used by ext4_htree_next_block +diff -urp linux-stage.orig/fs/ext4/hash.c linux-stage/fs/ext4/hash.c +--- linux-stage.orig/fs/ext4/hash.c 2012-06-21 10:26:23.000000000 -0400 ++++ linux-stage/fs/ext4/hash.c 2012-06-21 10:29:02.000000000 -0400 +@@ -201,8 +201,8 @@ int ext4fs_dirhash(const char *name, int + return -1; + } + hash = hash & ~1; +- if (hash == (EXT4_HTREE_EOF << 1)) +- hash = (EXT4_HTREE_EOF-1) << 1; ++ if (hash == (EXT4_HTREE_EOF_32BIT << 1)) ++ hash = (EXT4_HTREE_EOF_32BIT - 1) << 1; + hinfo->hash = hash; + hinfo->minor_hash = minor_hash; + return 0; diff --git a/ldiskfs/kernel_patches/patches/ext4-journal-callback.patch b/ldiskfs/kernel_patches/patches/ext4-journal-callback.patch index b177e2e..4d0afe1 100644 --- a/ldiskfs/kernel_patches/patches/ext4-journal-callback.patch +++ b/ldiskfs/kernel_patches/patches/ext4-journal-callback.patch @@ -157,7 +157,7 @@ Index: linux-stage/fs/ext4/mballoc.c return 0; } -@@ -2693,56 +2692,52 @@ static inline int ext4_issue_discard(str +@@ -2693,58 +2692,54 @@ static inline int ext4_issue_discard(str * This function is called by the jbd2 layer once the commit has finished, * so we know we can free the blocks that were released with that commit. */ @@ -182,25 +182,12 @@ Index: linux-stage/fs/ext4/mballoc.c + mb_debug(1, "gonna free %u blocks in group %u (0x%p):", + entry->efd_count, entry->efd_group, entry); -- if (test_opt(sb, DISCARD)) { -- int ret; -- ret = ext4_issue_discard(sb, entry->group, -- entry->start_blk, entry->count); -- if (unlikely(ret == -EOPNOTSUPP)) { -- ext4_warning(sb, "discard not supported, " -- "disabling"); -- clear_opt(EXT4_SB(sb)->s_mount_opt, DISCARD); -- } -+ if (test_opt(sb, DISCARD)) { -+ int ret; -+ ret = ext4_issue_discard(sb, entry->efd_group, +- if (test_opt(sb, DISCARD)) +- ext4_issue_discard(sb, entry->group, +- entry->start_blk, entry->count); ++ if (test_opt(sb, DISCARD)) ++ ext4_issue_discard(sb, entry->efd_group, + entry->efd_start_blk, entry->efd_count); -+ if (unlikely(ret == -EOPNOTSUPP)) { -+ ext4_warning(sb, "discard not supported, " -+ "disabling"); -+ clear_opt(EXT4_SB(sb)->s_mount_opt, DISCARD); - } -+ } - err = ext4_mb_load_buddy(sb, entry->group, &e4b); - /* we expect to find existing buddy because it's pinned */ @@ -215,6 +202,15 @@ Index: linux-stage/fs/ext4/mballoc.c - rb_erase(&entry->node, &(db->bb_free_root)); - mb_free_blocks(NULL, &e4b, entry->start_blk, entry->count); - +- /* +- * Clear the trimmed flag for the group so that the next +- * ext4_trim_fs can trim it. +- * If the volume is mounted with -o discard, online discard +- * is supported and the free blocks will be trimmed online. +- */ +- if (!test_opt(sb, DISCARD)) +- EXT4_MB_GRP_CLEAR_TRIMMED(db); +- - if (!db->bb_free_root.rb_node) { - /* No more items in the per group rb tree - * balance refcounts from ext4_mb_free_metadata() @@ -238,6 +234,15 @@ Index: linux-stage/fs/ext4/mballoc.c + rb_erase(&entry->efd_node, &(db->bb_free_root)); + mb_free_blocks(NULL, &e4b, entry->efd_start_blk, entry->efd_count); + ++ /* ++ * Clear the trimmed flag for the group so that the next ++ * ext4_trim_fs can trim it. ++ * If the volume is mounted with -o discard, online discard ++ * is supported and the free blocks will be trimmed online. ++ */ ++ if (!test_opt(sb, DISCARD)) ++ EXT4_MB_GRP_CLEAR_TRIMMED(db); ++ + if (!db->bb_free_root.rb_node) { + /* No more items in the per group rb tree + * balance refcounts from ext4_mb_free_metadata() diff --git a/ldiskfs/kernel_patches/patches/ext4-update-sles11-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-update-sles11-rhel6.patch index 5071b23..8ee9ad5 100644 --- a/ldiskfs/kernel_patches/patches/ext4-update-sles11-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-update-sles11-rhel6.patch @@ -1,6 +1,6 @@ diff -urpN linux-stage.orig/fs/ext4/balloc.c linux-stage/fs/ext4/balloc.c ---- linux-stage.orig/fs/ext4/balloc.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/balloc.c 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/balloc.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/balloc.c 2012-07-02 12:07:57.000000000 -0400 @@ -97,7 +97,7 @@ unsigned ext4_init_block_bitmap(struct s /* If checksum is bad mark all blocks used to prevent allocation * essentially implementing a per-group read-only flag. */ @@ -79,8 +79,8 @@ diff -urpN linux-stage.orig/fs/ext4/balloc.c linux-stage/fs/ext4/balloc.c (ext4_fsblk_t)(block + i)); BUFFER_TRACE(bitmap_bh, "bit already cleared"); diff -urpN linux-stage.orig/fs/ext4/dir.c linux-stage/fs/ext4/dir.c ---- linux-stage.orig/fs/ext4/dir.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/dir.c 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/dir.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/dir.c 2012-07-02 12:07:57.000000000 -0400 @@ -70,28 +70,29 @@ int ext4_check_dir_entry(const char *fun const int rlen = ext4_rec_len_from_disk(de->rec_len, dir->i_sb->s_blocksize); @@ -137,8 +137,8 @@ diff -urpN linux-stage.orig/fs/ext4/dir.c linux-stage/fs/ext4/dir.c inode->i_ino, (unsigned long long) filp->f_pos); diff -urpN linux-stage.orig/fs/ext4/ext4_extents.h linux-stage/fs/ext4/ext4_extents.h ---- linux-stage.orig/fs/ext4/ext4_extents.h 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/ext4_extents.h 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/ext4_extents.h 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/ext4_extents.h 2012-07-02 12:07:57.000000000 -0400 @@ -138,7 +138,7 @@ typedef int (*ext_prepare_callback)(stru #define EXT_REPEAT 2 @@ -149,8 +149,8 @@ diff -urpN linux-stage.orig/fs/ext4/ext4_extents.h linux-stage/fs/ext4/ext4_exte /* * EXT_INIT_MAX_LEN is the maximum number of blocks we can have in an diff -urpN linux-stage.orig/fs/ext4/ext4.h linux-stage/fs/ext4/ext4.h ---- linux-stage.orig/fs/ext4/ext4.h 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/ext4.h 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/ext4.h 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/ext4.h 2012-07-02 12:10:15.000000000 -0400 @@ -23,6 +23,7 @@ #include #include @@ -272,9 +272,30 @@ diff -urpN linux-stage.orig/fs/ext4/ext4.h linux-stage/fs/ext4/ext4.h extern void ext4_msg(struct super_block *, const char *, const char *, ...) __attribute__ ((format (printf, 3, 4))); extern void ext4_grp_locked_error(struct super_block *, ext4_group_t, +@@ -1774,11 +1828,19 @@ struct ext4_group_info { + * 5 free 8-block regions. */ + }; + +-#define EXT4_GROUP_INFO_NEED_INIT_BIT 0 ++#define EXT4_GROUP_INFO_NEED_INIT_BIT 0 ++#define EXT4_GROUP_INFO_WAS_TRIMMED_BIT 1 + + #define EXT4_MB_GRP_NEED_INIT(grp) \ + (test_bit(EXT4_GROUP_INFO_NEED_INIT_BIT, &((grp)->bb_state))) + ++#define EXT4_MB_GRP_WAS_TRIMMED(grp) \ ++ (test_bit(EXT4_GROUP_INFO_WAS_TRIMMED_BIT, &((grp)->bb_state))) ++#define EXT4_MB_GRP_SET_TRIMMED(grp) \ ++ (set_bit(EXT4_GROUP_INFO_WAS_TRIMMED_BIT, &((grp)->bb_state))) ++#define EXT4_MB_GRP_CLEAR_TRIMMED(grp) \ ++ (clear_bit(EXT4_GROUP_INFO_WAS_TRIMMED_BIT, &((grp)->bb_state))) ++ + #define EXT4_MAX_CONTENTION 8 + #define EXT4_CONTENTION_THRESHOLD 2 + diff -urpN linux-stage.orig/fs/ext4/ext4_jbd2.c linux-stage/fs/ext4/ext4_jbd2.c ---- linux-stage.orig/fs/ext4/ext4_jbd2.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/ext4_jbd2.c 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/ext4_jbd2.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/ext4_jbd2.c 2012-07-02 12:07:57.000000000 -0400 @@ -96,7 +96,7 @@ int __ext4_handle_dirty_metadata(const c if (inode && inode_needs_sync(inode)) { sync_dirty_buffer(bh); @@ -285,8 +306,8 @@ diff -urpN linux-stage.orig/fs/ext4/ext4_jbd2.c linux-stage/fs/ext4/ext4_jbd2.c "inode=%lu, block=%llu", inode->i_ino, diff -urpN linux-stage.orig/fs/ext4/extents.c linux-stage/fs/ext4/extents.c ---- linux-stage.orig/fs/ext4/extents.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/extents.c 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/extents.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/extents.c 2012-07-02 12:07:57.000000000 -0400 @@ -437,7 +437,7 @@ static int __ext4_ext_check(const char * return 0; @@ -487,8 +508,8 @@ diff -urpN linux-stage.orig/fs/ext4/extents.c linux-stage/fs/ext4/extents.c /* diff -urpN linux-stage.orig/fs/ext4/ialloc.c linux-stage/fs/ext4/ialloc.c ---- linux-stage.orig/fs/ext4/ialloc.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/ialloc.c 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/ialloc.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/ialloc.c 2012-07-02 12:07:57.000000000 -0400 @@ -76,7 +76,7 @@ unsigned ext4_init_inode_bitmap(struct s /* If checksum is bad mark all blocks and inodes use to prevent * allocation, essentially implementing a per-group read-only flag. */ @@ -577,8 +598,8 @@ diff -urpN linux-stage.orig/fs/ext4/ialloc.c linux-stage/fs/ext4/ialloc.c printk(KERN_NOTICE "ext4_test_bit(bit=%d, block=%llu) = %d\n", bit, (unsigned long long)bitmap_bh->b_blocknr, diff -urpN linux-stage.orig/fs/ext4/inode.c linux-stage/fs/ext4/inode.c ---- linux-stage.orig/fs/ext4/inode.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/inode.c 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/inode.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/inode.c 2012-07-02 12:07:57.000000000 -0400 @@ -246,7 +246,7 @@ void ext4_delete_inode(struct inode *ino inode->i_size = 0; err = ext4_mark_inode_dirty(handle, inode); @@ -701,8 +722,8 @@ diff -urpN linux-stage.orig/fs/ext4/inode.c linux-stage/fs/ext4/inode.c " some EAs or run e2fsck.", inode->i_ino); diff -urpN linux-stage.orig/fs/ext4/mballoc.c linux-stage/fs/ext4/mballoc.c ---- linux-stage.orig/fs/ext4/mballoc.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/mballoc.c 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/mballoc.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/mballoc.c 2012-07-02 12:07:57.000000000 -0400 @@ -862,8 +862,6 @@ static int ext4_mb_init_cache(struct pag err = 0; @@ -768,10 +789,12 @@ diff -urpN linux-stage.orig/fs/ext4/mballoc.c linux-stage/fs/ext4/mballoc.c /* * This function is called by the jbd2 layer once the commit has finished, * so we know we can free the blocks that were released with that commit. -@@ -2583,17 +2598,11 @@ static void release_blocks_on_commit(jou +@@ -2581,22 +2596,9 @@ static void release_blocks_on_commit(jou + mb_debug(1, "gonna free %u blocks in group %u (0x%p):", + entry->count, entry->group, entry); - if (test_opt(sb, DISCARD)) { - int ret; +- if (test_opt(sb, DISCARD)) { +- int ret; - ext4_fsblk_t discard_block; - - discard_block = entry->start_blk + @@ -783,15 +806,32 @@ diff -urpN linux-stage.orig/fs/ext4/mballoc.c linux-stage/fs/ext4/mballoc.c - if (ret == EOPNOTSUPP) { - ext4_warning(sb, __func__, - "discard not supported, disabling"); -+ ret = ext4_issue_discard(sb, entry->group, -+ entry->start_blk, entry->count); -+ if (unlikely(ret == -EOPNOTSUPP)) { -+ ext4_warning(sb, "discard not supported, " -+ "disabling"); - clear_opt(EXT4_SB(sb)->s_mount_opt, DISCARD); - } - } -@@ -2620,7 +2629,7 @@ static void release_blocks_on_commit(jou +- clear_opt(EXT4_SB(sb)->s_mount_opt, DISCARD); +- } +- } ++ if (test_opt(sb, DISCARD)) ++ ext4_issue_discard(sb, entry->group, ++ entry->start_blk, entry->count); + + err = ext4_mb_load_buddy(sb, entry->group, &e4b); + /* we expect to find existing buddy because it's pinned */ +@@ -2611,6 +2613,15 @@ static void release_blocks_on_commit(jou + rb_erase(&entry->node, &(db->bb_free_root)); + mb_free_blocks(NULL, &e4b, entry->start_blk, entry->count); + ++ /* ++ * Clear the trimmed flag for the group so that the next ++ * ext4_trim_fs can trim it. ++ * If the volume is mounted with -o discard, online discard ++ * is supported and the free blocks will be trimmed online. ++ */ ++ if (!test_opt(sb, DISCARD)) ++ EXT4_MB_GRP_CLEAR_TRIMMED(db); ++ + if (!db->bb_free_root.rb_node) { + /* No more items in the per group rb tree + * balance refcounts from ext4_mb_free_metadata() +@@ -2620,7 +2631,7 @@ static void release_blocks_on_commit(jou } ext4_unlock_group(sb, entry->group); kmem_cache_free(ext4_free_ext_cachep, entry); @@ -800,7 +840,7 @@ diff -urpN linux-stage.orig/fs/ext4/mballoc.c linux-stage/fs/ext4/mballoc.c } mb_debug(1, "freed %u blocks in %u structures\n", count, count2); -@@ -2757,7 +2766,7 @@ ext4_mb_mark_diskspace_used(struct ext4_ +@@ -2757,7 +2768,7 @@ ext4_mb_mark_diskspace_used(struct ext4_ len = ac->ac_b_ex.fe_len; if (!ext4_data_block_valid(sbi, block, len)) { @@ -809,7 +849,7 @@ diff -urpN linux-stage.orig/fs/ext4/mballoc.c linux-stage/fs/ext4/mballoc.c "Allocating blocks %llu-%llu which overlap " "fs metadata\n", block, block+len); /* File system mounted not to panic on error -@@ -3671,14 +3680,14 @@ ext4_mb_discard_group_preallocations(str +@@ -3671,14 +3682,14 @@ ext4_mb_discard_group_preallocations(str bitmap_bh = ext4_read_block_bitmap(sb, group); if (bitmap_bh == NULL) { @@ -826,7 +866,7 @@ diff -urpN linux-stage.orig/fs/ext4/mballoc.c linux-stage/fs/ext4/mballoc.c "information for %u", group); put_bh(bitmap_bh); return 0; -@@ -3852,14 +3861,14 @@ repeat: +@@ -3852,14 +3863,14 @@ repeat: err = ext4_mb_load_buddy(sb, group, &e4b); if (err) { @@ -844,7 +884,7 @@ diff -urpN linux-stage.orig/fs/ext4/mballoc.c linux-stage/fs/ext4/mballoc.c "bitmap for %u", group); ext4_mb_unload_buddy(&e4b); continue; -@@ -4125,7 +4134,7 @@ ext4_mb_discard_lg_preallocations(struct +@@ -4125,7 +4136,7 @@ ext4_mb_discard_lg_preallocations(struct ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, NULL); if (ext4_mb_load_buddy(sb, group, &e4b)) { @@ -853,7 +893,7 @@ diff -urpN linux-stage.orig/fs/ext4/mballoc.c linux-stage/fs/ext4/mballoc.c "information for %u", group); continue; } -@@ -4516,7 +4525,7 @@ void ext4_mb_free_blocks(handle_t *handl +@@ -4516,7 +4527,7 @@ void ext4_mb_free_blocks(handle_t *handl if (block < le32_to_cpu(es->s_first_data_block) || block + count < block || block + count > ext4_blocks_count(es)) { @@ -862,7 +902,7 @@ diff -urpN linux-stage.orig/fs/ext4/mballoc.c linux-stage/fs/ext4/mballoc.c "Freeing blocks not in datazone - " "block = %llu, count = %lu", block, count); goto error_return; -@@ -4561,7 +4570,7 @@ do_more: +@@ -4561,7 +4572,7 @@ do_more: in_range(block + count - 1, ext4_inode_table(sb, gdp), EXT4_SB(sb)->s_itb_per_group)) { @@ -872,8 +912,8 @@ diff -urpN linux-stage.orig/fs/ext4/mballoc.c linux-stage/fs/ext4/mballoc.c "Block = %llu, count = %lu", block, count); /* err = 0. ext4_std_error should be a no op */ diff -urpN linux-stage.orig/fs/ext4/move_extent.c linux-stage/fs/ext4/move_extent.c ---- linux-stage.orig/fs/ext4/move_extent.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/move_extent.c 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/move_extent.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/move_extent.c 2012-07-02 12:07:57.000000000 -0400 @@ -152,12 +152,12 @@ mext_check_null_inode(struct inode *inod int ret = 0; @@ -889,6 +929,15 @@ diff -urpN linux-stage.orig/fs/ext4/move_extent.c linux-stage/fs/ext4/move_exten "Both inodes should not be NULL: " "inode1 %lu inode2 NULL", inode1->i_ino); ret = -EIO; +@@ -483,7 +483,7 @@ mext_leaf_block(handle_t *handle, struct + + o_start = o_end = oext = orig_path[depth].p_ext; + oext_alen = ext4_ext_get_actual_len(oext); +- start_ext.ee_len = end_ext.ee_len = 0; ++ start_ext.ee_block = start_ext.ee_len = end_ext.ee_len = 0; + + new_ext.ee_block = cpu_to_le32(*from); + ext4_ext_store_pblock(&new_ext, ext_pblock(dext)); @@ -528,7 +528,7 @@ mext_leaf_block(handle_t *handle, struct * new_ext |-------| */ @@ -941,8 +990,8 @@ diff -urpN linux-stage.orig/fs/ext4/move_extent.c linux-stage/fs/ext4/move_exten "sum of replaced: %llu requested: %llu", *moved_len, len); diff -urpN linux-stage.orig/fs/ext4/namei.c linux-stage/fs/ext4/namei.c ---- linux-stage.orig/fs/ext4/namei.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/namei.c 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/namei.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/namei.c 2012-07-02 12:07:57.000000000 -0400 @@ -394,8 +394,7 @@ dx_probe(const struct qstr *d_name, stru if (root->info.hash_version != DX_HASH_TEA && root->info.hash_version != DX_HASH_HALF_MD4 && @@ -1099,7 +1148,32 @@ diff -urpN linux-stage.orig/fs/ext4/namei.c linux-stage/fs/ext4/namei.c "invalid rec_len for '..' in inode %lu", dir->i_ino); brelse(bh); -@@ -1588,8 +1594,7 @@ static int ext4_dx_add_entry(handle_t *h +@@ -1468,10 +1474,22 @@ static int make_indexed_dir(handle_t *ha + frame->at = entries; + frame->bh = bh; + bh = bh2; ++ ++ ext4_handle_dirty_metadata(handle, dir, frame->bh); ++ ext4_handle_dirty_metadata(handle, dir, bh); ++ + de = do_split(handle,dir, &bh, frame, &hinfo, &retval); +- dx_release (frames); +- if (!(de)) ++ if (!de) { ++ /* ++ * Even if the block split failed, we have to properly write ++ * out all the changes we did so far. Otherwise we can end up ++ * with corrupted filesystem. ++ */ ++ ext4_mark_inode_dirty(handle, dir); ++ dx_release(frames); + return retval; ++ } ++ dx_release(frames); + + retval = add_dirent_to_buf(handle, dentry, inode, de, bh); + brelse(bh); +@@ -1588,8 +1606,7 @@ static int ext4_dx_add_entry(handle_t *h if (levels && (dx_get_count(frames->entries) == dx_get_limit(frames->entries))) { @@ -1109,7 +1183,7 @@ diff -urpN linux-stage.orig/fs/ext4/namei.c linux-stage/fs/ext4/namei.c err = -ENOSPC; goto cleanup; } -@@ -1943,11 +1948,11 @@ static int empty_dir(struct inode *inode +@@ -1943,11 +1960,11 @@ static int empty_dir(struct inode *inode if (inode->i_size < EXT4_DIR_REC_LEN(1) + EXT4_DIR_REC_LEN(2) || !(bh = ext4_bread(NULL, inode, 0, 0, &err))) { if (err) @@ -1123,7 +1197,7 @@ diff -urpN linux-stage.orig/fs/ext4/namei.c linux-stage/fs/ext4/namei.c "bad directory (dir #%lu) - no data block", inode->i_ino); return 1; -@@ -1958,7 +1963,7 @@ static int empty_dir(struct inode *inode +@@ -1958,7 +1975,7 @@ static int empty_dir(struct inode *inode !le32_to_cpu(de1->inode) || strcmp(".", de->name) || strcmp("..", de1->name)) { @@ -1132,7 +1206,7 @@ diff -urpN linux-stage.orig/fs/ext4/namei.c linux-stage/fs/ext4/namei.c "bad directory (dir #%lu) - no `.' or `..'", inode->i_ino); brelse(bh); -@@ -1976,7 +1981,7 @@ static int empty_dir(struct inode *inode +@@ -1976,7 +1993,7 @@ static int empty_dir(struct inode *inode offset >> EXT4_BLOCK_SIZE_BITS(sb), 0, &err); if (!bh) { if (err) @@ -1141,7 +1215,7 @@ diff -urpN linux-stage.orig/fs/ext4/namei.c linux-stage/fs/ext4/namei.c "error %d reading directory" " #%lu offset %u", err, inode->i_ino, offset); -@@ -2198,7 +2203,7 @@ static int ext4_rmdir(struct inode *dir, +@@ -2198,7 +2215,7 @@ static int ext4_rmdir(struct inode *dir, if (retval) goto end_rmdir; if (!EXT4_DIR_LINK_EMPTY(inode)) @@ -1150,7 +1224,7 @@ diff -urpN linux-stage.orig/fs/ext4/namei.c linux-stage/fs/ext4/namei.c "empty directory has too many links (%d)", inode->i_nlink); inode->i_version++; -@@ -2250,7 +2255,7 @@ static int ext4_unlink(struct inode *dir +@@ -2250,7 +2267,7 @@ static int ext4_unlink(struct inode *dir goto end_unlink; if (!inode->i_nlink) { @@ -1159,7 +1233,7 @@ diff -urpN linux-stage.orig/fs/ext4/namei.c linux-stage/fs/ext4/namei.c "Deleting nonexistent file (%lu), %d", inode->i_ino, inode->i_nlink); inode->i_nlink = 1; -@@ -2497,7 +2502,7 @@ static int ext4_rename(struct inode *old +@@ -2497,7 +2514,7 @@ static int ext4_rename(struct inode *old } } if (retval) { @@ -1169,8 +1243,8 @@ diff -urpN linux-stage.orig/fs/ext4/namei.c linux-stage/fs/ext4/namei.c old_dir->i_ino, old_dir->i_nlink, retval); } diff -urpN linux-stage.orig/fs/ext4/resize.c linux-stage/fs/ext4/resize.c ---- linux-stage.orig/fs/ext4/resize.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/resize.c 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/resize.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/resize.c 2012-07-02 12:07:57.000000000 -0400 @@ -48,63 +48,63 @@ static int verify_group_input(struct sup ext4_get_group_no_and_offset(sb, start, NULL, &offset); @@ -1429,8 +1503,8 @@ diff -urpN linux-stage.orig/fs/ext4/resize.c linux-stage/fs/ext4/resize.c mutex_unlock(&EXT4_SB(sb)->s_resize_lock); ext4_journal_stop(handle); diff -urpN linux-stage.orig/fs/ext4/super.c linux-stage/fs/ext4/super.c ---- linux-stage.orig/fs/ext4/super.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/super.c 2012-07-02 11:19:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/super.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/super.c 2012-07-02 12:07:57.000000000 -0400 @@ -48,11 +48,16 @@ #include "acl.h" #include "mballoc.h" @@ -1709,8 +1783,8 @@ diff -urpN linux-stage.orig/fs/ext4/super.c linux-stage/fs/ext4/super.c kset_unregister(ext4_kset); exit_ext4_system_zone(); diff -urpN linux-stage.orig/fs/ext4/xattr.c linux-stage/fs/ext4/xattr.c ---- linux-stage.orig/fs/ext4/xattr.c 2012-07-02 10:32:05.000000000 -0400 -+++ linux-stage/fs/ext4/xattr.c 2012-07-02 11:15:32.000000000 -0400 +--- linux-stage.orig/fs/ext4/xattr.c 2012-07-02 12:07:23.000000000 -0400 ++++ linux-stage/fs/ext4/xattr.c 2012-07-02 12:07:57.000000000 -0400 @@ -227,7 +227,7 @@ ext4_xattr_block_get(struct inode *inode ea_bdebug(bh, "b_count=%d, refcount=%d", atomic_read(&(bh->b_count)), le32_to_cpu(BHDR(bh)->h_refcount)); diff --git a/ldiskfs/kernel_patches/patches/ext4_pdirop-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4_pdirop-rhel6.patch index c777a95..bd7ec3b 100644 --- a/ldiskfs/kernel_patches/patches/ext4_pdirop-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4_pdirop-rhel6.patch @@ -1905,14 +1905,14 @@ struct ext4_dir_entry_2 *de, *de2, *dot_de, *dotdot_de; char *data1, *top; @@ -1517,7 +1867,7 @@ static int make_indexed_dir(handle_t *ha - frame->at = entries; - frame->bh = bh; - bh = bh2; + ext4_handle_dirty_metadata(handle, dir, frame->bh); + ext4_handle_dirty_metadata(handle, dir, bh); + - de = do_split(handle,dir, &bh, frame, &hinfo, &retval); + de = do_split(handle,dir, &bh, frames, frame, &hinfo, NULL, &retval); - dx_release (frames); - if (!(de)) - return retval; + if (!de) { + /* + * Even if the block split failed, we have to properly write @@ -1616,7 +1966,7 @@ out: * the entry, as someone else might have used it while you slept. */ diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series index 416916f..88d8000 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series @@ -12,7 +12,7 @@ ext4-print-inum-in-htree-warning-rhel6.patch ext4-xattr-no-update-ctime-rhel5.patch ext4-prealloc-rhel6.patch ext4-mballoc-extra-checks-rhel6.patch -ext4-misc-rhel6.patch +ext4-misc-rhel6.patch ext4-big-endian-check-2.6-rhel6.patch ext4-alloc-policy-2.6-rhel5.patch ext4-force_over_128tb-rhel6.patch @@ -30,7 +30,6 @@ ext4-large-eas.patch ext4-disable-mb-cache-rhel6.patch ext4-back-dquot-to-rhel6.patch ext4-nocmtime-2.6-rhel5.patch -ext4-export-64bit-name-hash.patch ext4-vmalloc-rhel6.patch ext4-journal-callback.patch ext4-store-tree-generation-at-find.patch diff --git a/lustre/ChangeLog b/lustre/ChangeLog index f5358a9..94a72b2 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -2,9 +2,9 @@ TBD Whamcloud, Inc. * version 2.3.0 * See http://wiki.whamcloud.com/display/PUB/Lustre+Support+Matrix * Server support for kernels: - 2.6.32-220.17.1.el6 (RHEL6) + 2.6.32-279.2.1.el6 (RHEL6) * Client support for unpatched kernels: - 2.6.32-220.17.1.el6 (RHEL6) + 2.6.32-279.2.1.el6 (RHEL6) 2.6.27.19-5 (SLES11) 2.6.18-238.19.1.el5 (RHEL5) 2.6.16.60-0.69.1 (SLES10) @@ -16,6 +16,10 @@ TBD Whamcloud, Inc. the re-exporting nodes to be mounted with "32bitapi" mount option Severity : enhancement +Jira : LU-1477 +Description: Update RHEL6.3 kernel to 2.6.32-279.2.1.el6. + +Severity : enhancement Jira : LU-1424 Description: Update RHEL6.2 kernel to 2.6.32-220.17.1.el6 diff --git a/lustre/include/linux/obd_class.h b/lustre/include/linux/obd_class.h index b2f2474..8cc4fc8 100644 --- a/lustre/include/linux/obd_class.h +++ b/lustre/include/linux/obd_class.h @@ -50,33 +50,6 @@ #include #endif -#ifdef __KERNEL__ -# ifndef HAVE_SERVER_SUPPORT - -/* hash info structure used by the directory hash */ -# define LDISKFS_DX_HASH_LEGACY 0 -# define LDISKFS_DX_HASH_HALF_MD4 1 -# define LDISKFS_DX_HASH_TEA 2 -# define LDISKFS_DX_HASH_R5 3 -# define LDISKFS_DX_HASH_SAME 4 -# define LDISKFS_DX_HASH_MAX 4 - -/* hash info structure used by the directory hash */ -struct ldiskfs_dx_hash_info -{ - u32 hash; - u32 minor_hash; - int hash_version; - u32 *seed; -}; - -# define LDISKFS_HTREE_EOF 0x7fffffff - -int ldiskfsfs_dirhash(const char *name, int len, struct ldiskfs_dx_hash_info *hinfo); - -# endif /* HAVE_SERVER_SUPPORT */ -#endif /* __KERNEL__ */ - /* obdo.c */ #ifdef __KERNEL__ void obdo_from_la(struct obdo *dst, struct lu_attr *la, __u64 valid); 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 32c3d9d..96b4cd8 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 -# Tue Dec 20 23:41:08 2011 +# Thu Jun 21 03:59:07 2012 # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -55,6 +55,8 @@ CONFIG_X86_TRAMPOLINE=y CONFIG_KTIME_SCALAR=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y +CONFIG_HAVE_IRQ_WORK=y +CONFIG_IRQ_WORK=y # # General setup @@ -394,6 +396,7 @@ CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 CONFIG_X86_PAT=y CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_ARCH_RANDOM=y CONFIG_EFI=y # CONFIG_SECCOMP is not set CONFIG_CC_STACKPROTECTOR=y @@ -629,6 +632,7 @@ CONFIG_NET_IPIP=m CONFIG_NET_IPGRE=m CONFIG_NET_IPGRE_BROADCAST=y CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y CONFIG_IP_PIMSM_V1=y CONFIG_IP_PIMSM_V2=y # CONFIG_ARPD is not set @@ -802,6 +806,7 @@ CONFIG_IP_VS_PROTO_UDP=y CONFIG_IP_VS_PROTO_AH_ESP=y CONFIG_IP_VS_PROTO_ESP=y CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y # # IPVS scheduler @@ -988,6 +993,8 @@ CONFIG_NET_SCH_GRED=m CONFIG_NET_SCH_DSMARK=m CONFIG_NET_SCH_NETEM=m CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_QFQ=m CONFIG_NET_SCH_INGRESS=m # @@ -1026,6 +1033,7 @@ CONFIG_NET_ACT_SKBEDIT=m CONFIG_NET_CLS_IND=y CONFIG_NET_SCH_FIFO=y CONFIG_DCB=y +CONFIG_NETPRIO_CGROUP=y # # Network testing @@ -1096,7 +1104,7 @@ CONFIG_CFG80211=m CONFIG_CFG80211_DEFAULT_PS=y CONFIG_CFG80211_DEFAULT_PS_VALUE=1 # CONFIG_CFG80211_DEBUGFS is not set -# CONFIG_WIRELESS_OLD_REGULATORY is not set +# CONFIG_CFG80211_INTERNAL_REGDB is not set CONFIG_WIRELESS_EXT=y CONFIG_WIRELESS_EXT_SYSFS=y CONFIG_LIB80211=m @@ -1105,10 +1113,12 @@ CONFIG_LIB80211_CRYPT_CCMP=m CONFIG_LIB80211_CRYPT_TKIP=m # CONFIG_LIB80211_DEBUG is not set CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y # CONFIG_MAC80211_RC_DEFAULT_PID is not set CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y -CONFIG_MAC80211_RC_DEFAULT="minstrel" +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set @@ -1291,6 +1301,7 @@ CONFIG_BLK_DEV=y CONFIG_BLK_DEV_FD=m # CONFIG_BLK_DEV_XD is not set # CONFIG_PARIDE is not set +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m # CONFIG_BLK_CPQ_DA is not set CONFIG_BLK_CPQ_CISS_DA=m CONFIG_CISS_SCSI_TAPE=y @@ -1379,7 +1390,6 @@ CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_SAS_LIBSAS=m CONFIG_SCSI_SAS_ATA=y CONFIG_SCSI_SAS_HOST_SMP=y -# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set CONFIG_SCSI_SRP_ATTRS=m CONFIG_SCSI_SRP_TGT_ATTRS=y CONFIG_SCSI_LOWLEVEL=y @@ -1477,6 +1487,7 @@ CONFIG_SCSI_DEBUG=m CONFIG_SCSI_PMCRAID=m CONFIG_SCSI_SRP=m CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_VIRTIO=m CONFIG_SCSI_LOWLEVEL_PCMCIA=y # CONFIG_PCMCIA_AHA152X is not set CONFIG_PCMCIA_FDOMAIN=m @@ -1577,8 +1588,13 @@ CONFIG_MD_RAID456=m CONFIG_MD_FAULTY=m CONFIG_BLK_DEV_DM=m CONFIG_DM_DEBUG=y +CONFIG_DM_BUFIO=m +CONFIG_DM_PERSISTENT_DATA=m CONFIG_DM_CRYPT=m CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set +# CONFIG_DM_DEBUG_SPACE_MAPS is not set CONFIG_DM_MIRROR=m CONFIG_DM_RAID=m CONFIG_DM_LOG_USERSPACE=m @@ -1596,7 +1612,6 @@ 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 @@ -1783,6 +1798,7 @@ CONFIG_ATL1=m CONFIG_ATL1E=m CONFIG_ATL1C=m CONFIG_JME=m +CONFIG_PCH_GBE=m CONFIG_NETDEV_10000=y CONFIG_MDIO=m CONFIG_CHELSIO_T1=m @@ -1848,21 +1864,24 @@ CONFIG_P54_USB=m CONFIG_P54_PCI=m CONFIG_P54_LEDS=y CONFIG_ATH_COMMON=m +# CONFIG_ATH_DEBUG is not set CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +# CONFIG_ATH5K_TRACER is not set +CONFIG_ATH5K_PCI=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m CONFIG_ATH9K=m -# CONFIG_ATH9K_DEBUG is not set +CONFIG_ATH9K_PCI=y +# CONFIG_ATH9K_AHB is not set +# CONFIG_ATH9K_DEBUGFS is not set +CONFIG_ATH9K_RATE_CONTROL=y +# CONFIG_ATH9K_HTC is not set CONFIG_AR9170_USB=m CONFIG_AR9170_LEDS=y CONFIG_IPW2100=m CONFIG_IPW2100_MONITOR=y # CONFIG_IPW2100_DEBUG is not set -CONFIG_IPW2200=m -CONFIG_IPW2200_MONITOR=y -CONFIG_IPW2200_RADIOTAP=y -CONFIG_IPW2200_PROMISCUOUS=y -CONFIG_IPW2200_QOS=y -# CONFIG_IPW2200_DEBUG is not set CONFIG_LIBIPW=m # CONFIG_LIBIPW_DEBUG is not set CONFIG_IWLWIFI=m @@ -1872,9 +1891,15 @@ CONFIG_IWLWIFI=m # # CONFIG_IWLWIFI_DEBUG is not set # CONFIG_IWLWIFI_DEVICE_TRACING is not set -CONFIG_IWLAGN=m -CONFIG_IWL4965=y -CONFIG_IWL5000=y +# CONFIG_IWLWIFI_DEVICE_SVTOOL is not set +CONFIG_IWLWIFI_LEGACY=m + +# +# Debugging Options +# +# CONFIG_IWLWIFI_LEGACY_DEBUG is not set +# CONFIG_IWLWIFI_LEGACY_DEVICE_TRACING is not set +CONFIG_IWL4965=m CONFIG_IWL3945=m CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y @@ -1883,16 +1908,18 @@ CONFIG_HOSTAP_PLX=m CONFIG_HOSTAP_PCI=m CONFIG_HOSTAP_CS=m CONFIG_B43=m +CONFIG_B43_SSB=y CONFIG_B43_PCI_AUTOSELECT=y CONFIG_B43_PCICORE_AUTOSELECT=y CONFIG_B43_PCMCIA=y CONFIG_B43_SDIO=y CONFIG_B43_PIO=y +# CONFIG_B43_PHY_N is not set CONFIG_B43_PHY_LP=y +# CONFIG_B43_PHY_HT is not set CONFIG_B43_LEDS=y CONFIG_B43_HWRNG=y CONFIG_B43_DEBUG=y -# CONFIG_B43_FORCE_PIO is not set CONFIG_B43LEGACY=m CONFIG_B43LEGACY_PCI_AUTOSELECT=y CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y @@ -1910,6 +1937,7 @@ CONFIG_RT2X00=m CONFIG_RT2400PCI=m CONFIG_RT2500PCI=m CONFIG_RT61PCI=m +# CONFIG_RT2800PCI is not set CONFIG_RT2500USB=m CONFIG_RT73USB=m # CONFIG_RT2800USB is not set @@ -1928,11 +1956,15 @@ CONFIG_NORTEL_HERMES=m CONFIG_PCI_HERMES=m CONFIG_PCMCIA_HERMES=m CONFIG_PCMCIA_SPECTRUM=m -CONFIG_WL12XX=m CONFIG_WL1251=m CONFIG_WL1251_SDIO=m +CONFIG_WL12XX_MENU=m +CONFIG_WL12XX=m +# CONFIG_WL12XX_SDIO is not set +CONFIG_WL12XX_PLATFORM_DATA=y CONFIG_IWM=m # CONFIG_IWM_DEBUG is not set +# CONFIG_IWM_TRACING is not set # # WiMAX Wireless Broadband devices @@ -3106,7 +3138,7 @@ CONFIG_AGP_VIA=y CONFIG_AGP_EFFICEON=y CONFIG_VGA_ARB=y CONFIG_VGA_ARB_MAX_GPUS=64 -# CONFIG_VGA_SWITCHEROO is not set +CONFIG_VGA_SWITCHEROO=y CONFIG_DRM=m CONFIG_DRM_KMS_HELPER=m CONFIG_DRM_TTM=m @@ -3257,8 +3289,9 @@ CONFIG_SND_JACK=y CONFIG_SND_SEQUENCER=m CONFIG_SND_SEQ_DUMMY=m CONFIG_SND_OSSEMUL=y -# CONFIG_SND_MIXER_OSS is not set -# CONFIG_SND_PCM_OSS is not set +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_HRTIMER=m CONFIG_SND_SEQ_HRTIMER_DEFAULT=y @@ -3268,13 +3301,15 @@ CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set CONFIG_SND_VMASTER=y +CONFIG_SND_KCTL_JACK=y CONFIG_SND_DMA_SGBUF=y CONFIG_SND_RAWMIDI_SEQ=m -# CONFIG_SND_OPL3_LIB_SEQ is not set +CONFIG_SND_OPL3_LIB_SEQ=m CONFIG_SND_OPL4_LIB_SEQ=m # CONFIG_SND_SBAWE_SEQ is not set CONFIG_SND_EMU10K1_SEQ=m CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m CONFIG_SND_OPL4_LIB=m CONFIG_SND_VX_LIB=m CONFIG_SND_AC97_CODEC=m @@ -3340,7 +3375,7 @@ CONFIG_SND_AU8830=m CONFIG_SND_BT87X=m # CONFIG_SND_BT87X_OVERCLOCK is not set CONFIG_SND_CA0106=m -# CONFIG_SND_CMIPCI is not set +CONFIG_SND_CMIPCI=m CONFIG_SND_OXYGEN_LIB=m CONFIG_SND_OXYGEN=m # CONFIG_SND_CS4281 is not set @@ -3483,6 +3518,7 @@ CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_XHCI=y CONFIG_USB=y # CONFIG_USB_DEBUG is not set CONFIG_USB_ANNOUNCE_NEW_DEVICES=y @@ -3675,7 +3711,7 @@ CONFIG_SDIO_UART=m # CONFIG_MMC_SDHCI=m CONFIG_MMC_SDHCI_PCI=m -CONFIG_MMC_RICOH_MMC=m +CONFIG_MMC_RICOH_MMC=y CONFIG_MMC_SDHCI_PLTFM=m # CONFIG_MMC_WBSD is not set # CONFIG_MMC_AT91 is not set @@ -4131,7 +4167,6 @@ CONFIG_NFS_V4_1=y CONFIG_PNFS_FILE_LAYOUT=m CONFIG_NFS_FSCACHE=y CONFIG_NFS_USE_LEGACY_DNS=y -# CONFIG_NFS_USE_NEW_IDMAPPER is not set CONFIG_NFSD=m CONFIG_NFSD_DEPRECATED=y CONFIG_NFSD_V2_ACL=y @@ -4341,6 +4376,7 @@ CONFIG_RING_BUFFER_BENCHMARK=m CONFIG_BUILD_DOCSRC=y CONFIG_DYNAMIC_DEBUG=y # CONFIG_DMA_API_DEBUG is not set +CONFIG_ASYNC_RAID6_TEST=m # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y CONFIG_KGDB=y @@ -4576,3 +4612,4 @@ CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y CONFIG_CHECK_SIGNATURE=y CONFIG_NLATTR=y +CONFIG_AVERAGE=y 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 fe060e7..8ce6a10 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 -# Tue Dec 20 15:42:19 2011 +# Thu Jun 21 04:00:46 2012 # CONFIG_64BIT=y # CONFIG_X86_32 is not set @@ -56,6 +56,8 @@ CONFIG_X86_TRAMPOLINE=y # CONFIG_KTIME_SCALAR is not set CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y +CONFIG_HAVE_IRQ_WORK=y +CONFIG_IRQ_WORK=y # # General setup @@ -391,6 +393,7 @@ CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 CONFIG_X86_PAT=y CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_ARCH_RANDOM=y CONFIG_EFI=y # CONFIG_SECCOMP is not set CONFIG_CC_STACKPROTECTOR=y @@ -573,6 +576,7 @@ CONFIG_IA32_EMULATION=y CONFIG_COMPAT=y CONFIG_COMPAT_FOR_U64_ALIGNMENT=y CONFIG_SYSVIPC_COMPAT=y +CONFIG_KEYS_COMPAT=y CONFIG_NET=y CONFIG_COMPAT_NETLINK_MESSAGES=y @@ -604,6 +608,7 @@ CONFIG_NET_IPIP=m CONFIG_NET_IPGRE=m CONFIG_NET_IPGRE_BROADCAST=y CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y CONFIG_IP_PIMSM_V1=y CONFIG_IP_PIMSM_V2=y # CONFIG_ARPD is not set @@ -777,6 +782,7 @@ CONFIG_IP_VS_PROTO_UDP=y CONFIG_IP_VS_PROTO_AH_ESP=y CONFIG_IP_VS_PROTO_ESP=y CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y # # IPVS scheduler @@ -963,6 +969,8 @@ CONFIG_NET_SCH_GRED=m CONFIG_NET_SCH_DSMARK=m CONFIG_NET_SCH_NETEM=m CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_QFQ=m CONFIG_NET_SCH_INGRESS=m # @@ -1001,6 +1009,7 @@ CONFIG_NET_ACT_SKBEDIT=m CONFIG_NET_CLS_IND=y CONFIG_NET_SCH_FIFO=y CONFIG_DCB=y +CONFIG_NETPRIO_CGROUP=y # # Network testing @@ -1070,7 +1079,7 @@ CONFIG_CFG80211=m CONFIG_CFG80211_DEFAULT_PS=y CONFIG_CFG80211_DEFAULT_PS_VALUE=1 # CONFIG_CFG80211_DEBUGFS is not set -# CONFIG_WIRELESS_OLD_REGULATORY is not set +# CONFIG_CFG80211_INTERNAL_REGDB is not set CONFIG_WIRELESS_EXT=y CONFIG_WIRELESS_EXT_SYSFS=y CONFIG_LIB80211=m @@ -1079,10 +1088,12 @@ CONFIG_LIB80211_CRYPT_CCMP=m CONFIG_LIB80211_CRYPT_TKIP=m # CONFIG_LIB80211_DEBUG is not set CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y # CONFIG_MAC80211_RC_DEFAULT_PID is not set CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y -CONFIG_MAC80211_RC_DEFAULT="minstrel" +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set @@ -1261,6 +1272,7 @@ CONFIG_PNPACPI=y CONFIG_BLK_DEV=y CONFIG_BLK_DEV_FD=m # CONFIG_PARIDE is not set +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m # CONFIG_BLK_CPQ_DA is not set CONFIG_BLK_CPQ_CISS_DA=m CONFIG_CISS_SCSI_TAPE=y @@ -1352,7 +1364,6 @@ CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_SAS_LIBSAS=m CONFIG_SCSI_SAS_ATA=y CONFIG_SCSI_SAS_HOST_SMP=y -# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set CONFIG_SCSI_SRP_ATTRS=m CONFIG_SCSI_SRP_TGT_ATTRS=y CONFIG_SCSI_LOWLEVEL=y @@ -1435,6 +1446,7 @@ CONFIG_SCSI_DEBUG=m CONFIG_SCSI_PMCRAID=m CONFIG_SCSI_SRP=m CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_VIRTIO=m CONFIG_SCSI_LOWLEVEL_PCMCIA=y # CONFIG_PCMCIA_FDOMAIN is not set # CONFIG_PCMCIA_QLOGIC is not set @@ -1527,8 +1539,13 @@ CONFIG_MD_RAID456=m CONFIG_MD_FAULTY=m CONFIG_BLK_DEV_DM=m CONFIG_DM_DEBUG=y +CONFIG_DM_BUFIO=m +CONFIG_DM_PERSISTENT_DATA=m CONFIG_DM_CRYPT=m CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set +# CONFIG_DM_DEBUG_SPACE_MAPS is not set CONFIG_DM_MIRROR=m CONFIG_DM_RAID=m CONFIG_DM_LOG_USERSPACE=m @@ -1546,7 +1563,6 @@ 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 @@ -1704,6 +1720,7 @@ CONFIG_ATL1=m CONFIG_ATL1E=m CONFIG_ATL1C=m CONFIG_JME=m +CONFIG_PCH_GBE=m CONFIG_NETDEV_10000=y CONFIG_MDIO=m CONFIG_CHELSIO_T1=m @@ -1769,21 +1786,24 @@ CONFIG_P54_USB=m CONFIG_P54_PCI=m CONFIG_P54_LEDS=y CONFIG_ATH_COMMON=m +# CONFIG_ATH_DEBUG is not set CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +# CONFIG_ATH5K_TRACER is not set +CONFIG_ATH5K_PCI=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m CONFIG_ATH9K=m -# CONFIG_ATH9K_DEBUG is not set +CONFIG_ATH9K_PCI=y +# CONFIG_ATH9K_AHB is not set +# CONFIG_ATH9K_DEBUGFS is not set +CONFIG_ATH9K_RATE_CONTROL=y +# CONFIG_ATH9K_HTC is not set CONFIG_AR9170_USB=m CONFIG_AR9170_LEDS=y CONFIG_IPW2100=m CONFIG_IPW2100_MONITOR=y # CONFIG_IPW2100_DEBUG is not set -CONFIG_IPW2200=m -CONFIG_IPW2200_MONITOR=y -CONFIG_IPW2200_RADIOTAP=y -CONFIG_IPW2200_PROMISCUOUS=y -CONFIG_IPW2200_QOS=y -# CONFIG_IPW2200_DEBUG is not set CONFIG_LIBIPW=m # CONFIG_LIBIPW_DEBUG is not set CONFIG_IWLWIFI=m @@ -1793,9 +1813,15 @@ CONFIG_IWLWIFI=m # # CONFIG_IWLWIFI_DEBUG is not set # CONFIG_IWLWIFI_DEVICE_TRACING is not set -CONFIG_IWLAGN=m -CONFIG_IWL4965=y -CONFIG_IWL5000=y +# CONFIG_IWLWIFI_DEVICE_SVTOOL is not set +CONFIG_IWLWIFI_LEGACY=m + +# +# Debugging Options +# +# CONFIG_IWLWIFI_LEGACY_DEBUG is not set +# CONFIG_IWLWIFI_LEGACY_DEVICE_TRACING is not set +CONFIG_IWL4965=m CONFIG_IWL3945=m CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y @@ -1804,16 +1830,18 @@ CONFIG_HOSTAP_PLX=m CONFIG_HOSTAP_PCI=m CONFIG_HOSTAP_CS=m CONFIG_B43=m +CONFIG_B43_SSB=y CONFIG_B43_PCI_AUTOSELECT=y CONFIG_B43_PCICORE_AUTOSELECT=y CONFIG_B43_PCMCIA=y CONFIG_B43_SDIO=y CONFIG_B43_PIO=y +# CONFIG_B43_PHY_N is not set CONFIG_B43_PHY_LP=y +# CONFIG_B43_PHY_HT is not set CONFIG_B43_LEDS=y CONFIG_B43_HWRNG=y CONFIG_B43_DEBUG=y -# CONFIG_B43_FORCE_PIO is not set CONFIG_B43LEGACY=m CONFIG_B43LEGACY_PCI_AUTOSELECT=y CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y @@ -1831,6 +1859,7 @@ CONFIG_RT2X00=m CONFIG_RT2400PCI=m CONFIG_RT2500PCI=m CONFIG_RT61PCI=m +# CONFIG_RT2800PCI is not set CONFIG_RT2500USB=m CONFIG_RT73USB=m # CONFIG_RT2800USB is not set @@ -1849,11 +1878,15 @@ CONFIG_NORTEL_HERMES=m CONFIG_PCI_HERMES=m CONFIG_PCMCIA_HERMES=m CONFIG_PCMCIA_SPECTRUM=m -CONFIG_WL12XX=m CONFIG_WL1251=m CONFIG_WL1251_SDIO=m +CONFIG_WL12XX_MENU=m +CONFIG_WL12XX=m +# CONFIG_WL12XX_SDIO is not set +CONFIG_WL12XX_PLATFORM_DATA=y CONFIG_IWM=m # CONFIG_IWM_DEBUG is not set +# CONFIG_IWM_TRACING is not set # # WiMAX Wireless Broadband devices @@ -2297,7 +2330,7 @@ CONFIG_IPWIRELESS=m CONFIG_RAW_DRIVER=y CONFIG_MAX_RAW_DEVS=8192 CONFIG_HPET=y -# CONFIG_HPET_MMAP is not set +CONFIG_HPET_MMAP=y CONFIG_HANGCHECK_TIMER=m CONFIG_UV_MMTIMER=m CONFIG_TCG_TPM=y @@ -2970,7 +3003,7 @@ CONFIG_AGP_SIS=y CONFIG_AGP_VIA=y CONFIG_VGA_ARB=y CONFIG_VGA_ARB_MAX_GPUS=64 -# CONFIG_VGA_SWITCHEROO is not set +CONFIG_VGA_SWITCHEROO=y CONFIG_DRM=m CONFIG_DRM_KMS_HELPER=m CONFIG_DRM_TTM=m @@ -3116,8 +3149,9 @@ CONFIG_SND_JACK=y CONFIG_SND_SEQUENCER=m CONFIG_SND_SEQ_DUMMY=m CONFIG_SND_OSSEMUL=y -# CONFIG_SND_MIXER_OSS is not set -# CONFIG_SND_PCM_OSS is not set +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_HRTIMER=m CONFIG_SND_SEQ_HRTIMER_DEFAULT=y @@ -3127,13 +3161,15 @@ CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set CONFIG_SND_VMASTER=y +CONFIG_SND_KCTL_JACK=y CONFIG_SND_DMA_SGBUF=y CONFIG_SND_RAWMIDI_SEQ=m -# CONFIG_SND_OPL3_LIB_SEQ is not set +CONFIG_SND_OPL3_LIB_SEQ=m # CONFIG_SND_OPL4_LIB_SEQ is not set # CONFIG_SND_SBAWE_SEQ is not set CONFIG_SND_EMU10K1_SEQ=m CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m CONFIG_SND_VX_LIB=m CONFIG_SND_AC97_CODEC=m CONFIG_SND_DRIVERS=y @@ -3165,7 +3201,7 @@ CONFIG_SND_AU8830=m CONFIG_SND_BT87X=m # CONFIG_SND_BT87X_OVERCLOCK is not set CONFIG_SND_CA0106=m -# CONFIG_SND_CMIPCI is not set +CONFIG_SND_CMIPCI=m CONFIG_SND_OXYGEN_LIB=m CONFIG_SND_OXYGEN=m # CONFIG_SND_CS4281 is not set @@ -3307,6 +3343,7 @@ CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_XHCI=y CONFIG_USB=y # CONFIG_USB_DEBUG is not set CONFIG_USB_ANNOUNCE_NEW_DEVICES=y @@ -3499,7 +3536,7 @@ CONFIG_SDIO_UART=m # CONFIG_MMC_SDHCI=m CONFIG_MMC_SDHCI_PCI=m -CONFIG_MMC_RICOH_MMC=m +CONFIG_MMC_RICOH_MMC=y CONFIG_MMC_SDHCI_PLTFM=m # CONFIG_MMC_WBSD is not set # CONFIG_MMC_AT91 is not set @@ -3957,7 +3994,6 @@ CONFIG_NFS_V4_1=y CONFIG_PNFS_FILE_LAYOUT=m CONFIG_NFS_FSCACHE=y CONFIG_NFS_USE_LEGACY_DNS=y -# CONFIG_NFS_USE_NEW_IDMAPPER is not set CONFIG_NFSD=m CONFIG_NFSD_DEPRECATED=y CONFIG_NFSD_V2_ACL=y @@ -4172,6 +4208,7 @@ CONFIG_PROVIDE_OHCI1394_DMA_INIT=y CONFIG_BUILD_DOCSRC=y CONFIG_DYNAMIC_DEBUG=y # CONFIG_DMA_API_DEBUG is not set +CONFIG_ASYNC_RAID6_TEST=m # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y CONFIG_KGDB=y @@ -4411,3 +4448,4 @@ CONFIG_HAS_DMA=y CONFIG_CHECK_SIGNATURE=y CONFIG_CPUMASK_OFFSTACK=y CONFIG_NLATTR=y +CONFIG_AVERAGE=y 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 54b51cb..8c79b40 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 @@ -33,8 +33,8 @@ 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,12 @@ static inline void __generic_make_reques - if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) - goto end_io; + goto end_io; + } + /* this is cfs's dev_rdonly check */ + if (bio_rw(bio) == WRITE && dev_check_rdonly(bio->bi_bdev)) { @@ -154,9 +154,9 @@ Index: linux-2.6.32-131.0.15.el6.x86_64/fs/block_dev.c victim = bdev->bd_contains; bdev->bd_contains = NULL; + dev_clear_rdonly(bdev); - } - unlock_kernel(); - mutex_unlock(&bdev->bd_mutex); + + put_disk(disk); + module_put(owner); 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/raid5-mmp-unplug-dev-rhel6.patch b/lustre/kernel_patches/patches/raid5-mmp-unplug-dev-rhel6.patch index 891411a..4879a67 100644 --- a/lustre/kernel_patches/patches/raid5-mmp-unplug-dev-rhel6.patch +++ b/lustre/kernel_patches/patches/raid5-mmp-unplug-dev-rhel6.patch @@ -13,9 +13,9 @@ Index: linux-2.6.32-131.0.15.el6.x86_64/drivers/md/raid5.c bi->bi_phys_segments++; + if (bio_rw_flagged(bi, BIO_RW_SYNCIO) && !forwrite) + clear_bit(R5_UPTODATE, &sh->dev[dd_idx].flags); /* force to read from disk. */ - spin_unlock_irq(&conf->device_lock); - spin_unlock(&sh->lock); + if (forwrite) { + /* check if page is covered */ @@ -4132,6 +4134,9 @@ static int make_request(mddev_t *mddev, bio_endio(bi, 0); } diff --git a/lustre/kernel_patches/targets/2.6-rhel6.target.in b/lustre/kernel_patches/targets/2.6-rhel6.target.in index 20ea5dd..a704800 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="220.17.1.el6" +lnxrel="279.2.1.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 a2abaef..61ba850 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-238.19.1.el5 -2.6-rhel6 RHEL6: 2.6.32-220.17.1.el6 +2.6-rhel6 RHEL6: 2.6.32-279.2.1.el6 CLIENT SUPPORT FOR UNPATCHED KERNELS: 2.6.18-238.19.1.el5 (RHEL5) - 2.6.32-220.17.1.el6 (RHEL6) + 2.6.32-279.2.1.el6 (RHEL6) 2.6.16.60-0.69.1 (SLES10) 2.6.27.19-5 (SLES11) diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index 00e3408..3cc6ec3 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -3877,9 +3877,9 @@ static struct dt_it *osd_it_ea_init(const struct lu_env *env, it->oie_file.f_pos = 0; it->oie_file.f_dentry = obj_dentry; if (attr & LUDA_64BITHASH) - it->oie_file.f_flags = O_64BITHASH; + it->oie_file.f_mode |= FMODE_64BITHASH; else - it->oie_file.f_flags = O_32BITHASH; + it->oie_file.f_mode |= FMODE_32BITHASH; it->oie_file.f_mapping = obj->oo_inode->i_mapping; it->oie_file.f_op = obj->oo_inode->i_fop; it->oie_file.private_data = NULL; @@ -4064,7 +4064,7 @@ static int osd_it_ea_next(const struct lu_env *env, struct dt_it *di) it->oie_it_dirent++; RETURN(0); } else { - if (it->oie_file.f_pos == LDISKFS_HTREE_EOF) + if (it->oie_file.f_pos == ldiskfs_get_htree_eof(&it->oie_file)) rc = +1; else rc = osd_ldiskfs_it_fill(env, di); diff --git a/lustre/osd-ldiskfs/osd_internal.h b/lustre/osd-ldiskfs/osd_internal.h index de8a83b..6617c25 100644 --- a/lustre/osd-ldiskfs/osd_internal.h +++ b/lustre/osd-ldiskfs/osd_internal.h @@ -868,5 +868,24 @@ extern const struct dt_index_operations osd_acct_index_ops; int osd_acct_obj_lookup(struct osd_thread_info *info, struct osd_device *osd, const struct lu_fid *fid, struct osd_inode_id *id); +/* copy from fs/ext4/dir.c */ +static inline int is_32bit_api(void) +{ +#ifdef CONFIG_COMPAT + return is_compat_task(); +#else + return (BITS_PER_LONG == 32); +#endif +} + +static inline loff_t ldiskfs_get_htree_eof(struct file *filp) +{ + if ((filp->f_mode & FMODE_32BITHASH) || + (!(filp->f_mode & FMODE_64BITHASH) && is_32bit_api())) + return LDISKFS_HTREE_EOF_32BIT; + else + return LDISKFS_HTREE_EOF_64BIT; +} + #endif /* __KERNEL__ */ #endif /* _OSD_INTERNAL_H */ -- 1.8.3.1