Whamcloud - gitweb
LU-1477 kernel: Kernel update [RHEL6.3 2.6.32-279.2.1.el6]
authoryangsheng <ys@whamcloud.com>
Tue, 10 Jul 2012 16:03:00 +0000 (00:03 +0800)
committerOleg Drokin <green@whamcloud.com>
Tue, 31 Jul 2012 15:27:11 +0000 (11:27 -0400)
Add support for RHEL6.3 kernel 2.6.32-279.2.1.el6.

Signed-off-by: James Simmons <uja.ornl@gmail.com>
Signed-off-by: yang sheng <ys@whamcloud.com>
Change-Id: I792b174c77d635100cd02dbbddef568b550d6ed1
Reviewed-on: http://review.whamcloud.com/3033
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Fan Yong <yong.fan@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
15 files changed:
ldiskfs/kernel_patches/patches/ext4-export-64bit-name-hash.patch
ldiskfs/kernel_patches/patches/ext4-journal-callback.patch
ldiskfs/kernel_patches/patches/ext4-update-sles11-rhel6.patch
ldiskfs/kernel_patches/patches/ext4_pdirop-rhel6.patch
ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series
lustre/ChangeLog
lustre/include/linux/obd_class.h
lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-rhel6-i686.config
lustre/kernel_patches/kernel_configs/kernel-2.6.32-2.6-rhel6-x86_64.config
lustre/kernel_patches/patches/dev_read_only-2.6.32-rhel6.patch
lustre/kernel_patches/patches/raid5-mmp-unplug-dev-rhel6.patch
lustre/kernel_patches/targets/2.6-rhel6.target.in
lustre/kernel_patches/which_patch
lustre/osd-ldiskfs/osd_handler.c
lustre/osd-ldiskfs/osd_internal.h

index c7e01f4..f916733 100644 (file)
@@ -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;
  }
 
        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
 +
  /*
   * 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
   *
 - * 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.
 - * 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)
 +{
 +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
 +      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)
 +{
 +}
 +
 +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
 +      else
-+              return (((pos >> 32) << 1) & 0xffffffff);
++              return ((pos >> 32) << 1) & 0xffffffff;
 +}
 +
 +static inline __u32 pos2min_hash(struct file *filp, loff_t pos)
 +{
 +}
 +
 +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
 +      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
  
  /*
   * 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;
  }
  
        return p;
  }
  
-@@ -422,7 +451,7 @@
+@@ -427,7 +469,7 @@ static int call_filldir(struct file *fil
                       "null fname?!?\n");
                return 0;
        }
                       "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,
        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) {
        int     ret;
  
        if (!info) {
@@ -102,7 +115,14 @@ Index: linux-stage/fs/ext4/dir.c
                if (!info)
                        return -ENOMEM;
                filp->private_data = info;
                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;
                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
 +
 +#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
  
 +#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;
index b177e2e..4d0afe1 100644 (file)
@@ -157,7 +157,7 @@ Index: linux-stage/fs/ext4/mballoc.c
        return 0;
  }
  
        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.
   */
   * 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);
  
 +      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);
 +                              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 */
  
 -              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);
 -
 -              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()
 -              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);
 +
 +      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()
 +      if (!db->bb_free_root.rb_node) {
 +              /* No more items in the per group rb tree
 +               * balance refcounts from ext4_mb_free_metadata()
index 5071b23..8ee9ad5 100644 (file)
@@ -1,6 +1,6 @@
 diff -urpN linux-stage.orig/fs/ext4/balloc.c linux-stage/fs/ext4/balloc.c
 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. */
 @@ -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
                                   (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);
 @@ -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
                                           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
  
 @@ -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
  /*
   * 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 <linux/quota.h>
  #include <linux/rwsem.h>
 @@ -23,6 +23,7 @@
  #include <linux/quota.h>
  #include <linux/rwsem.h>
@@ -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,
  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
 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);
 @@ -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
                                           "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;
  
 @@ -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
  
                /*
 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. */
 @@ -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
        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);
 @@ -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
                                        " 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;
 @@ -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.
  /*
   * 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 +
 -                      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");
 -                      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);
                }
                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);
        }
  
        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)) {
  
        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
                           "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) {
  
        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;
                                "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) {
  
                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;
                                        "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)) {
  
                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;
                }
                                        "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)) {
        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;
                            "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)) {
  
            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
                           "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;
  
 @@ -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;
                        "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       |-------|
         */
 @@ -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
                                        "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 &&
 @@ -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);
                           "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))) {
  
                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;
                }
                        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)
        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;
                                     "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)) {
                        !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);
                             "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)
                                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);
                                                   "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))
        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++;
                             "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) {
                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;
                             "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) {
                }
        }
        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
                                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);
 @@ -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
                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"
 @@ -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
        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));
 @@ -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));
index c777a95..bd7ec3b 100644 (file)
        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
        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);
 -      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.
   */
 @@ -1616,7 +1966,7 @@ out:
   * the entry, as someone else might have used it while you slept.
   */
index 416916f..88d8000 100644 (file)
@@ -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-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
 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-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
 ext4-vmalloc-rhel6.patch
 ext4-journal-callback.patch
 ext4-store-tree-generation-at-find.patch
index f5358a9..94a72b2 100644 (file)
@@ -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:
        * 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:
        * 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)
          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
          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
 
 Jira       : LU-1424
 Description: Update RHEL6.2 kernel to 2.6.32-220.17.1.el6
 
index b2f2474..8cc4fc8 100644 (file)
 #include <linux/timer.h>
 #endif
 
 #include <linux/timer.h>
 #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);
 /* obdo.c */
 #ifdef __KERNEL__
 void obdo_from_la(struct obdo *dst, struct lu_attr *la, __u64 valid);
index 32c3d9d..96b4cd8 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.32
 #
 # 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
 #
 # 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_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
 
 #
 # 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_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
 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_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
 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_AH_ESP=y
 CONFIG_IP_VS_PROTO_ESP=y
 CONFIG_IP_VS_PROTO_AH=y
+CONFIG_IP_VS_PROTO_SCTP=y
 
 #
 # IPVS scheduler
 
 #
 # 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_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
 
 #
 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_NET_CLS_IND=y
 CONFIG_NET_SCH_FIFO=y
 CONFIG_DCB=y
+CONFIG_NETPRIO_CGROUP=y
 
 #
 # Network testing
 
 #
 # 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_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
 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_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=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_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
 # 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_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
 # 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=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
 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_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
 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_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_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
 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_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_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_ATL1E=m
 CONFIG_ATL1C=m
 CONFIG_JME=m
+CONFIG_PCH_GBE=m
 CONFIG_NETDEV_10000=y
 CONFIG_MDIO=m
 CONFIG_CHELSIO_T1=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_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=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=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_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
 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_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
 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_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_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_LP=y
+# CONFIG_B43_PHY_HT is not set
 CONFIG_B43_LEDS=y
 CONFIG_B43_HWRNG=y
 CONFIG_B43_DEBUG=y
 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
 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_RT2400PCI=m
 CONFIG_RT2500PCI=m
 CONFIG_RT61PCI=m
+# CONFIG_RT2800PCI is not set
 CONFIG_RT2500USB=m
 CONFIG_RT73USB=m
 # CONFIG_RT2800USB 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_PCI_HERMES=m
 CONFIG_PCMCIA_HERMES=m
 CONFIG_PCMCIA_SPECTRUM=m
-CONFIG_WL12XX=m
 CONFIG_WL1251=m
 CONFIG_WL1251_SDIO=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=m
 # CONFIG_IWM_DEBUG is not set
+# CONFIG_IWM_TRACING is not set
 
 #
 # WiMAX Wireless Broadband devices
 
 #
 # 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_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
 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_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
 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_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_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_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
 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_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
 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_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
 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_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
 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_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
 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_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
 # 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_HAS_DMA=y
 CONFIG_CHECK_SIGNATURE=y
 CONFIG_NLATTR=y
+CONFIG_AVERAGE=y
index fe060e7..8ce6a10 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.32
 #
 # 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
 #
 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_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
 
 #
 # 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_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
 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_COMPAT=y
 CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
 CONFIG_SYSVIPC_COMPAT=y
+CONFIG_KEYS_COMPAT=y
 CONFIG_NET=y
 CONFIG_COMPAT_NETLINK_MESSAGES=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_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
 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_AH_ESP=y
 CONFIG_IP_VS_PROTO_ESP=y
 CONFIG_IP_VS_PROTO_AH=y
+CONFIG_IP_VS_PROTO_SCTP=y
 
 #
 # IPVS scheduler
 
 #
 # 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_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
 
 #
 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_NET_CLS_IND=y
 CONFIG_NET_SCH_FIFO=y
 CONFIG_DCB=y
+CONFIG_NETPRIO_CGROUP=y
 
 #
 # Network testing
 
 #
 # 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_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
 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_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=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_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
 # 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=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
 # 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=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
 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_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
 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_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_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
 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_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_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_ATL1E=m
 CONFIG_ATL1C=m
 CONFIG_JME=m
+CONFIG_PCH_GBE=m
 CONFIG_NETDEV_10000=y
 CONFIG_MDIO=m
 CONFIG_CHELSIO_T1=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_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=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=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_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
 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_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
 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_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_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_LP=y
+# CONFIG_B43_PHY_HT is not set
 CONFIG_B43_LEDS=y
 CONFIG_B43_HWRNG=y
 CONFIG_B43_DEBUG=y
 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
 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_RT2400PCI=m
 CONFIG_RT2500PCI=m
 CONFIG_RT61PCI=m
+# CONFIG_RT2800PCI is not set
 CONFIG_RT2500USB=m
 CONFIG_RT73USB=m
 # CONFIG_RT2800USB 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_PCI_HERMES=m
 CONFIG_PCMCIA_HERMES=m
 CONFIG_PCMCIA_SPECTRUM=m
-CONFIG_WL12XX=m
 CONFIG_WL1251=m
 CONFIG_WL1251_SDIO=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=m
 # CONFIG_IWM_DEBUG is not set
+# CONFIG_IWM_TRACING is not set
 
 #
 # WiMAX Wireless Broadband devices
 
 #
 # WiMAX Wireless Broadband devices
@@ -2297,7 +2330,7 @@ CONFIG_IPWIRELESS=m
 CONFIG_RAW_DRIVER=y
 CONFIG_MAX_RAW_DEVS=8192
 CONFIG_HPET=y
 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
 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_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
 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_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
 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_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_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_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
 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_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
 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_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
 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_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
 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_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
 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_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
 # 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_CHECK_SIGNATURE=y
 CONFIG_CPUMASK_OFFSTACK=y
 CONFIG_NLATTR=y
+CONFIG_AVERAGE=y
index 54b51cb..8c79b40 100644 (file)
@@ -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
   * 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)) {
  
 +              /* 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);
                        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
 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
index 891411a..4879a67 100644 (file)
@@ -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. */
        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);
        }
 @@ -4132,6 +4134,9 @@ static int make_request(mddev_t *mddev, 
                bio_endio(bi, 0);
        }
index 20ea5dd..a704800 100644 (file)
@@ -1,5 +1,5 @@
 lnxmaj="2.6.32"
 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
 
 KERNEL_SRPM=kernel-${lnxmaj}-${lnxrel}.src.rpm
 SERIES=2.6-rhel6.series
index a2abaef..61ba850 100644 (file)
@@ -2,10 +2,10 @@ SERIES                VERSION                  COMMENT
 
 SUPPORTED KERNELS:
 2.6-rhel5             RHEL5: 2.6.18-238.19.1.el5
 
 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)
 
 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)
          2.6.16.60-0.69.1 (SLES10)
          2.6.27.19-5      (SLES11)
index 00e3408..3cc6ec3 100644 (file)
@@ -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_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
         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;
         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 {
                 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);
                         rc = +1;
                 else
                         rc = osd_ldiskfs_it_fill(env, di);
index de8a83b..6617c25 100644 (file)
@@ -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);
 
 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 */
 #endif /* __KERNEL__ */
 #endif /* _OSD_INTERNAL_H */