From: yangsheng Date: Thu, 26 Jul 2012 16:52:18 +0000 (+0800) Subject: LU-1477 kernel: Kernel update [RHEL6.3 2.6.32-279.2.1.el6] X-Git-Tag: 2.1.3-RC1~1 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=ed5da34995b73e247e8759632d87912ab1306acb;p=fs%2Flustre-release.git 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: yang sheng Change-Id: I1db26247beff1af667d23858a65e0b8d85888485 Reviewed-on: http://review.whamcloud.com/3467 Tested-by: Hudson Reviewed-by: Fan Yong Reviewed-by: James Simmons Tested-by: Maloo Reviewed-by: Oleg Drokin --- 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-mmp-rhel6.patch b/ldiskfs/kernel_patches/patches/ext4-mmp-rhel6.patch index 8d932232..2a8859e 100644 --- a/ldiskfs/kernel_patches/patches/ext4-mmp-rhel6.patch +++ b/ldiskfs/kernel_patches/patches/ext4-mmp-rhel6.patch @@ -45,15 +45,15 @@ Index: linux-stage/fs/ext4/ext4.h __le32 s_raid_stripe_width; /* blocks on all data disks (N*stride)*/ __u8 s_log_groups_per_flex; /* FLEX_BG group size */ @@ -1145,6 +1145,9 @@ struct ext4_sb_info { - struct ext4_li_request *s_li_request; - /* Wait multiplier for lazy initialization thread */ - unsigned int s_li_wait_mult; + struct ext4_li_request *s_li_request; + /* Wait multiplier for lazy initialization thread */ + unsigned int s_li_wait_mult; + + /* Kernel thread for multiple mount protection */ + struct task_struct *s_mmp_tsk; - }; - static inline struct ext4_sb_info *EXT4_SB(struct super_block *sb) + /* record the last minlen when FITRIM is called. */ + atomic_t s_last_trim_minblks; @@ -1283,7 +1286,8 @@ EXT4_INODE_BIT_FNS(state, state_flags) EXT4_FEATURE_INCOMPAT_META_BG| \ EXT4_FEATURE_INCOMPAT_EXTENTS| \ diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series index be350d4..2c64eda 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 @@ -29,6 +29,5 @@ ext4_data_in_dirent-rhel6.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-store-tree-generation-at-find.patch diff --git a/lustre/ChangeLog b/lustre/ChangeLog index c7c7d13..8dcff72 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -2,11 +2,11 @@ * version 2.1.2 * Server support for kernels: 2.6.18-308.11.1.el5 (RHEL5) - 2.6.32-220.17.1.el6 (RHEL6) + 2.6.32-279.2.1.el6 (RHEL6) * Client support for unpatched kernels: (see http://wiki.lustre.org/index.php?title=Patchless_Client) 2.6.18-308.11.1.el5 (RHEL5) - 2.6.32-220.13.1.el6 (RHEL6) + 2.6.32-279.2.1.el6 (RHEL6) 2.6.29.4-167.fc11 (FC11) 2.6.16.60-0.69.1 (SLES10) 2.6.27.19-5 (SLES11) @@ -18,6 +18,10 @@ mounted with "32bitapi" mount option Severity : enhancement +Jira : LU-1477 +Description: Update RHEL6.3 kernel to 2.6.32-279.2.1.el6. + +Severity : enhancement Jira : LU-1511 Description: Kernel update [RHEL5.8 2.6.18-308.11.1.el5] diff --git a/lustre/include/linux/obd_class.h b/lustre/include/linux/obd_class.h index 8f027dc..43ca53b 100644 --- a/lustre/include/linux/obd_class.h +++ b/lustre/include/linux/obd_class.h @@ -72,7 +72,7 @@ struct ldiskfs_dx_hash_info u32 *seed; }; -# define LDISKFS_HTREE_EOF 0x7fffffff +# define LDISKFS_HTREE_EOF_32BIT 0x7fffffff int ldiskfsfs_dirhash(const char *name, int len, struct ldiskfs_dx_hash_info *hinfo); 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 e48692d..5894729 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 @@ -4340,6 +4375,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 @@ -4575,3 +4611,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 68ab2df..f2ee3a8 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 @@ -4171,6 +4207,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 @@ -4410,3 +4447,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 f6e7129..6301850 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 @@ -31,8 +31,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,21 @@ 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)) { @@ -161,9 +161,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 d725e07..e8dc562 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-308.11.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-308.4.1.el5 (RHEL5) - 2.6.32-220.17.1.el6 (RHEL6) + 2.6.18-308.11.1.el5 (RHEL5) + 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/obdclass/hash.c b/lustre/obdclass/hash.c index 5ad1e91..d49aece 100644 --- a/lustre/obdclass/hash.c +++ b/lustre/obdclass/hash.c @@ -226,8 +226,8 @@ int ldiskfsfs_dirhash(const char *name, int len, struct ldiskfs_dx_hash_info *hi return -1; } hash = hash & ~1; - if (hash == (LDISKFS_HTREE_EOF << 1)) - hash = (LDISKFS_HTREE_EOF-1) << 1; + if (hash == (LDISKFS_HTREE_EOF_32BIT << 1)) + hash = (LDISKFS_HTREE_EOF_32BIT-1) << 1; hinfo->hash = hash; hinfo->minor_hash = minor_hash; return 0; diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index 9a052be..58e4771 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -3462,9 +3462,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; @@ -3637,7 +3637,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(di); diff --git a/lustre/osd-ldiskfs/osd_internal.h b/lustre/osd-ldiskfs/osd_internal.h index ea559e3..14a96a3 100644 --- a/lustre/osd-ldiskfs/osd_internal.h +++ b/lustre/osd-ldiskfs/osd_internal.h @@ -343,5 +343,24 @@ static inline int osd_fid_is_igif(const struct lu_fid *fid) return fid_is_igif(fid) || osd_fid_is_root(fid); } +/* 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 */