From: ericm Date: Wed, 15 Mar 2006 19:12:21 +0000 (+0000) Subject: branch: b1_5 X-Git-Tag: v1_7_140~1^12~3^2~11 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=15ddc65e40ee6872b72b89d34ba0e3e8a85ad42a;p=fs%2Flustre-release.git branch: b1_5 update from b1_4. --- diff --git a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch index bb9928a..1d8a4af 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch @@ -1679,7 +1679,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + */ + + /*if (ac.ac_found > ext3_mb_max_to_scan) -+ printk(KERN_ERR "EXT3-fs: too long searching at " ++ printk(KERN_DEBUG "EXT3-fs: too long searching at " + "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len, + ac.ac_g_ex.fe_len);*/ + ext3_mb_try_best_found(&ac, &e3b); @@ -1688,8 +1688,8 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + * Someone more lucky has already allocated it. + * The only thing we can do is just take first + * found block(s) ++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n"); + */ -+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n"); + ac.ac_b_ex.fe_group = 0; + ac.ac_b_ex.fe_start = 0; + ac.ac_b_ex.fe_len = 0; @@ -1708,9 +1708,9 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + *errp = -ENOSPC; + block = 0; +#if 1 -+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n", ++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n", + ac.ac_status, ac.ac_flags); -+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n", ++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n", + ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group, + ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr); + printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n", @@ -2083,12 +2083,12 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + + sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL); + if (sbi->s_group_info[i] == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n"); ++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n"); + goto err_out; + } + desc = ext3_get_group_desc(sb, i, NULL); + if (desc == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i); ++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i); + goto err_out; + } + memset(sbi->s_group_info[i], 0, len); @@ -2605,7 +2605,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + char str[32]; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_STATS_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2639,7 +2639,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2678,7 +2678,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2704,7 +2704,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + + proc_root_ext3 = proc_mkdir(EXT3_ROOT, proc_root_fs); + if (proc_root_ext3 == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", EXT3_ROOT); ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", EXT3_ROOT); + return -EIO; + } + @@ -2712,7 +2712,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + proc_ext3_mb_stats = create_proc_entry(EXT3_MB_STATS_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_stats == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_STATS_NAME); + remove_proc_entry(EXT3_ROOT, proc_root_fs); + return -EIO; @@ -2727,7 +2727,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + EXT3_MB_MAX_TO_SCAN_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_max_to_scan == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_MAX_TO_SCAN_NAME); + remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3); + remove_proc_entry(EXT3_ROOT, proc_root_fs); @@ -2743,7 +2743,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + EXT3_MB_MIN_TO_SCAN_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_min_to_scan == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_MIN_TO_SCAN_NAME); + remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, proc_root_ext3); + remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3); diff --git a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.12.patch b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.12.patch index a2b9caf..0c2f445 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.12.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.12.patch @@ -1674,7 +1674,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + */ + + /*if (ac.ac_found > ext3_mb_max_to_scan) -+ printk(KERN_ERR "EXT3-fs: too long searching at " ++ printk(KERN_DEBUG "EXT3-fs: too long searching at " + "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len, + ac.ac_g_ex.fe_len);*/ + ext3_mb_try_best_found(&ac, &e3b); @@ -1683,8 +1683,8 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + * Someone more lucky has already allocated it. + * The only thing we can do is just take first + * found block(s) ++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n"); + */ -+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n"); + ac.ac_b_ex.fe_group = 0; + ac.ac_b_ex.fe_start = 0; + ac.ac_b_ex.fe_len = 0; @@ -1703,9 +1703,9 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + *errp = -ENOSPC; + block = 0; +#if 1 -+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n", ++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n", + ac.ac_status, ac.ac_flags); -+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n", ++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n", + ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group, + ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr); + printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n", @@ -2078,12 +2078,12 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + + sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL); + if (sbi->s_group_info[i] == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n"); ++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n"); + goto err_out; + } + desc = ext3_get_group_desc(sb, i, NULL); + if (desc == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i); ++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i); + goto err_out; + } + memset(sbi->s_group_info[i], 0, len); @@ -2599,7 +2599,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + char str[32]; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_STATS_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2633,7 +2633,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2672,7 +2672,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2698,7 +2698,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + + proc_root_ext3 = proc_mkdir(EXT3_ROOT, proc_root_fs); + if (proc_root_ext3 == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", EXT3_ROOT); ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", EXT3_ROOT); + return -EIO; + } + @@ -2706,7 +2706,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + proc_ext3_mb_stats = create_proc_entry(EXT3_MB_STATS_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_stats == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_STATS_NAME); + remove_proc_entry(EXT3_ROOT, proc_root_fs); + return -EIO; @@ -2721,7 +2721,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + EXT3_MB_MAX_TO_SCAN_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_max_to_scan == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_MAX_TO_SCAN_NAME); + remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3); + remove_proc_entry(EXT3_ROOT, proc_root_fs); @@ -2737,7 +2737,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + EXT3_MB_MIN_TO_SCAN_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_min_to_scan == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_MIN_TO_SCAN_NAME); + remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, proc_root_ext3); + remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3); diff --git a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch index d12c678..5ff3d3b 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch @@ -1693,7 +1693,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + */ + + /*if (ac.ac_found > ext3_mb_max_to_scan) -+ printk(KERN_ERR "EXT3-fs: too long searching at " ++ printk(KERN_DEBUG "EXT3-fs: too long searching at " + "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len, + ac.ac_g_ex.fe_len);*/ + ext3_mb_try_best_found(&ac, &e3b); @@ -1702,8 +1702,8 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + * Someone more lucky has already allocated it. + * The only thing we can do is just take first + * found block(s) ++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n"); + */ -+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n"); + ac.ac_b_ex.fe_group = 0; + ac.ac_b_ex.fe_start = 0; + ac.ac_b_ex.fe_len = 0; @@ -1722,9 +1722,9 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + *errp = -ENOSPC; + block = 0; +#if 1 -+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n", ++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n", + ac.ac_status, ac.ac_flags); -+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n", ++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n", + ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group, + ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr); + printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n", @@ -2097,12 +2097,12 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + + sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL); + if (sbi->s_group_info[i] == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n"); ++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n"); + goto err_out; + } + desc = ext3_get_group_desc(sb, i, NULL); + if (desc == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i); ++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i); + goto err_out; + } + memset(sbi->s_group_info[i], 0, len); @@ -2618,7 +2618,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + char str[32]; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_STATS_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2652,7 +2652,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2691,7 +2691,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3: %s string too long, max %u bytes\n", + EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 424862c..3c37955 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -14,6 +14,33 @@ Details : If a server is under heavy load and cannot reply to new code, and ensure that only a single connection will be processed for a given client UUID, even if the lock is dropped. +Severity : enhancement +Bugzilla : 3627 +Description: add TCP zero-copy support to kernel +Details : Add support to the kernel TCP stack to allow zero-copy bulk + sends if the hardware supports scatter-gather and checksumming. + This allows socklnd to do client-write and server-read more + efficiently and reduce CPU utilization from skbuf copying. + +Severity : minor +Frequency : only if NFS exporting from client +Bugzilla : 10258 +Description: NULL pointer deref in ll_iocontrol() if chattr mknod file +Details : If setting attributes on a file created under NFS that had + never been opened it would be possible to oops the client + if the file had no objects. + +Severity : minor +Frequency : always for liblustre +Bugzilla : 10290 +Description: liblustre client does MDS+OSTs setattr RPC for each write +Details : When doing a write from a liblustre client, the client + incorrectly issued an RPC to the MDS and each OST the file was + striped over in order to update the timestamps. When writing + with small chunks and many clients this could overwhelm the MDS + with RPCs. In all cases it would slow down the write because + these RPCs are unnecessary. + ------------------------------------------------------------------------------ 02-14-2006 Cluster File Systems, Inc. diff --git a/lustre/include/obd_class.h b/lustre/include/obd_class.h index 9823584..a8a9f75 100644 --- a/lustre/include/obd_class.h +++ b/lustre/include/obd_class.h @@ -534,7 +534,7 @@ static inline int obd_del_conn(struct obd_import *imp, struct obd_uuid *uuid) RETURN(rc); } -static inline int obd_connect(struct lustre_handle *conn, struct obd_device *obd, +static inline int obd_connect(struct lustre_handle *conn,struct obd_device *obd, struct obd_uuid *cluuid, struct obd_connect_data *d) { @@ -1053,7 +1053,7 @@ static inline int obd_notify(struct obd_device *obd, ENTRY; OBD_CHECK_DEV(obd); if (!obd->obd_set_up) { - CERROR("obd %s not set up\n", obd->obd_name); + CDEBUG(D_HA, "obd %s not set up\n", obd->obd_name); RETURN(-EINVAL); } diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686-smp.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686-smp.config index 2b18f96..8629266 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686-smp.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686-smp.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.9-prep.qp2.2.5.11.3qsnet -# Thu Oct 27 17:02:11 2005 +# Sat Mar 11 23:36:27 2006 # CONFIG_X86=y CONFIG_MMU=y @@ -132,6 +132,7 @@ CONFIG_X86_CPUID=m # Firmware Drivers # CONFIG_EDD=m +CONFIG_DELL_RBU=m # CONFIG_NOHIGHMEM is not set # CONFIG_HIGHMEM4G is not set CONFIG_HIGHMEM64G=y @@ -533,6 +534,8 @@ CONFIG_SCSI_LOGGING=y CONFIG_SCSI_SPI_ATTRS=m CONFIG_SCSI_FC_ATTRS=m CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SAS_CLASS=m +# CONFIG_SAS_DEBUG is not set # # SCSI low-level drivers @@ -550,6 +553,7 @@ CONFIG_AIC7XXX_RESET_DELAY_MS=15000 # CONFIG_AIC7XXX_DEBUG_ENABLE is not set CONFIG_AIC7XXX_DEBUG_MASK=0 # CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set +# CONFIG_SCSI_AIC94XX is not set CONFIG_SCSI_AIC7XXX_OLD=m CONFIG_SCSI_AIC79XX=m CONFIG_AIC79XX_CMDS_PER_DEVICE=4 @@ -563,6 +567,7 @@ CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_MEGARAID_NEWGEN=y CONFIG_MEGARAID_MM=m CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_SAS=m CONFIG_SCSI_SATA=y CONFIG_SCSI_SATA_AHCI=m CONFIG_SCSI_SATA_SVW=m @@ -658,10 +663,14 @@ CONFIG_DM_MULTIPATH_EMC=m # # Fusion MPT device support # -CONFIG_FUSION=m +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m CONFIG_FUSION_MAX_SGE=40 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m +CONFIG_FUSION_OLD_MODULE_COMPAT=m # # IEEE 1394 (FireWire) support @@ -1110,9 +1119,11 @@ CONFIG_NS83820=m # CONFIG_YELLOWFIN is not set CONFIG_R8169=m CONFIG_R8169_NAPI=y +CONFIG_SKY2=m CONFIG_SK98LIN=m CONFIG_VIA_VELOCITY=m CONFIG_TIGON3=m +CONFIG_BNX2=m # # Ethernet (10000 Mbit) @@ -1386,6 +1397,14 @@ CONFIG_ISDN_CAPI_CAPIDRV=m # Active AVM cards # CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_T1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_C4=m # # Active Eicon DIVA Server cards @@ -1501,6 +1520,7 @@ CONFIG_SERIAL_8250_RSA=y # CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set CONFIG_UNIX98_PTYS=y # CONFIG_LEGACY_PTYS is not set CONFIG_CRASH=m @@ -2113,6 +2133,38 @@ CONFIG_USB_SPEEDTOUCH=m # CONFIG_USB_GADGET is not set # +# InfiniBand support +# +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_MTHCA=m +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set +CONFIG_INFINIBAND_IPOIB=m +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set +CONFIG_INFINIBAND_SDP=m +# CONFIG_INFINIBAND_SDP_DEBUG is not set +CONFIG_INFINIBAND_SRP=m + +# +# EDAC - error detection and reporting (RAS) +# +CONFIG_EDAC=m + +# +# Reporting subsystems +# +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_MM_EDAC=m +CONFIG_EDAC_AMD76X=m +CONFIG_EDAC_E7XXX=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_I82875P=m +CONFIG_EDAC_I82860=m +CONFIG_EDAC_R82600=m +CONFIG_EDAC_POLL=y + +# # File systems # CONFIG_EXT2_FS=y @@ -2206,15 +2258,20 @@ CONFIG_VXFS_FS=m # CONFIG_NFS_FS=m CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y CONFIG_NFS_DIRECTIO=y CONFIG_NFSD=m +CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y CONFIG_NFSD_V4=y CONFIG_NFSD_TCP=y CONFIG_LOCKD=m CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=m +CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y CONFIG_SUNRPC=m CONFIG_SUNRPC_GSS=m CONFIG_RPCSEC_GSS_KRB5=m @@ -2308,7 +2365,7 @@ CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_SPINLOCK=y CONFIG_DEBUG_SPINLOCK_SLEEP=y CONFIG_DEBUG_HIGHMEM=y -# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_INFO=y # CONFIG_FRAME_POINTER is not set CONFIG_EARLY_PRINTK=y CONFIG_DEBUG_STACKOVERFLOW=y diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686.config index 25a3848..aad9e59 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.9-prep.qp2.2.5.11.3qsnet -# Thu Oct 27 17:01:23 2005 +# Sat Mar 11 23:44:45 2006 # CONFIG_X86=y CONFIG_MMU=y @@ -14,6 +14,7 @@ CONFIG_GENERIC_IOMAP=y # CONFIG_EXPERIMENTAL=y CONFIG_CLEAN_COMPILE=y +CONFIG_BROKEN_ON_SMP=y # # General setup @@ -56,22 +57,19 @@ CONFIG_MODVERSIONS=y CONFIG_MODULE_SIG=y # CONFIG_MODULE_SIG_FORCE is not set CONFIG_KMOD=y -CONFIG_STOP_MACHINE=y # # Processor type and features # -CONFIG_MEM_MIRROR=y -# CONFIG_X86_PC is not set +CONFIG_X86_PC=y # CONFIG_X86_ELAN is not set # CONFIG_X86_VOYAGER is not set # CONFIG_X86_NUMAQ is not set # CONFIG_X86_SUMMIT is not set # CONFIG_X86_BIGSMP is not set # CONFIG_X86_VISWS is not set -CONFIG_X86_GENERICARCH=y +# CONFIG_X86_GENERICARCH is not set # CONFIG_X86_ES7000 is not set -CONFIG_X86_CYCLONE_TIMER=y # CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set @@ -111,17 +109,13 @@ CONFIG_X86_USE_PPRO_CHECKSUM=y # CONFIG_X86_HIGH_ENTRY is not set CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y -CONFIG_SMP=y -CONFIG_NR_CPUS=32 -CONFIG_SCHED_SMT=y +# CONFIG_SMP is not set # CONFIG_PREEMPT is not set CONFIG_PREEMPT_VOLUNTARY=y -CONFIG_X86_LOCAL_APIC=y -CONFIG_X86_IO_APIC=y +# CONFIG_X86_UP_APIC is not set CONFIG_X86_TSC=y CONFIG_X86_MCE=y # CONFIG_X86_MCE_NONFATAL is not set -CONFIG_X86_MCE_P4THERMAL=y CONFIG_TOSHIBA=m CONFIG_I8K=m CONFIG_MICROCODE=m @@ -132,18 +126,15 @@ CONFIG_X86_CPUID=m # Firmware Drivers # CONFIG_EDD=m +CONFIG_DELL_RBU=m # CONFIG_NOHIGHMEM is not set -# CONFIG_HIGHMEM4G is not set -CONFIG_HIGHMEM64G=y +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set CONFIG_HIGHMEM=y -CONFIG_X86_PAE=y -# CONFIG_NUMA is not set CONFIG_HIGHPTE=y # CONFIG_MATH_EMULATION is not set CONFIG_MTRR=y # CONFIG_EFI is not set -# CONFIG_IRQBALANCE is not set -CONFIG_HAVE_DEC_LOCK=y CONFIG_REGPARM=y CONFIG_IOPROC=y CONFIG_PTRACK=y @@ -237,7 +228,6 @@ CONFIG_PCI_GOANY=y CONFIG_PCI_BIOS=y CONFIG_PCI_DIRECT=y CONFIG_PCI_MMCONFIG=y -CONFIG_PCI_MSI=y CONFIG_PCI_LEGACY_PROC=y # CONFIG_PCI_NAMES is not set CONFIG_ISA=y @@ -265,7 +255,6 @@ CONFIG_HOTPLUG_PCI=y # CONFIG_HOTPLUG_PCI_FAKE is not set CONFIG_HOTPLUG_PCI_COMPAQ=m # CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set -CONFIG_HOTPLUG_PCI_IBM=m CONFIG_HOTPLUG_PCI_ACPI=m CONFIG_HOTPLUG_PCI_ACPI_IBM=m # CONFIG_HOTPLUG_PCI_CPCI is not set @@ -533,6 +522,8 @@ CONFIG_SCSI_LOGGING=y CONFIG_SCSI_SPI_ATTRS=m CONFIG_SCSI_FC_ATTRS=m CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SAS_CLASS=m +# CONFIG_SAS_DEBUG is not set # # SCSI low-level drivers @@ -550,6 +541,7 @@ CONFIG_AIC7XXX_RESET_DELAY_MS=15000 # CONFIG_AIC7XXX_DEBUG_ENABLE is not set CONFIG_AIC7XXX_DEBUG_MASK=0 # CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set +# CONFIG_SCSI_AIC94XX is not set CONFIG_SCSI_AIC7XXX_OLD=m CONFIG_SCSI_AIC79XX=m CONFIG_AIC79XX_CMDS_PER_DEVICE=4 @@ -563,6 +555,7 @@ CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_MEGARAID_NEWGEN=y CONFIG_MEGARAID_MM=m CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_SAS=m CONFIG_SCSI_SATA=y CONFIG_SCSI_SATA_AHCI=m CONFIG_SCSI_SATA_SVW=m @@ -658,10 +651,14 @@ CONFIG_DM_MULTIPATH_EMC=m # # Fusion MPT device support # -CONFIG_FUSION=m +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m CONFIG_FUSION_MAX_SGE=40 CONFIG_FUSION_CTL=m CONFIG_FUSION_LAN=m +CONFIG_FUSION_OLD_MODULE_COMPAT=m # # IEEE 1394 (FireWire) support @@ -673,13 +670,14 @@ CONFIG_IEEE1394=m # # CONFIG_IEEE1394_VERBOSEDEBUG is not set # CONFIG_IEEE1394_OUI_DB is not set -# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set +CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y +CONFIG_IEEE1394_CONFIG_ROM_IP1394=y # # Device Drivers # CONFIG_IEEE1394_PCILYNX=m -CONFIG_IEEE1394_OHCI1394=y +CONFIG_IEEE1394_OHCI1394=m # # Protocol Drivers @@ -1040,6 +1038,7 @@ CONFIG_NET_VENDOR_SMC=y # CONFIG_ULTRA is not set CONFIG_SMC9194=m CONFIG_NET_VENDOR_RACAL=y +# CONFIG_NI5010 is not set # CONFIG_NI52 is not set # CONFIG_NI65 is not set @@ -1056,6 +1055,7 @@ CONFIG_DE4X5=m CONFIG_WINBOND_840=m CONFIG_DM9102=m CONFIG_PCMCIA_XIRCOM=m +# CONFIG_PCMCIA_XIRTULIP is not set # CONFIG_AT1700 is not set # CONFIG_DEPCA is not set CONFIG_HP100=m @@ -1109,9 +1109,11 @@ CONFIG_NS83820=m # CONFIG_YELLOWFIN is not set CONFIG_R8169=m CONFIG_R8169_NAPI=y +CONFIG_SKY2=m CONFIG_SK98LIN=m CONFIG_VIA_VELOCITY=m CONFIG_TIGON3=m +CONFIG_BNX2=m # # Ethernet (10000 Mbit) @@ -1286,6 +1288,7 @@ CONFIG_ISDN_TTY_FAX=y # # ISDN feature submodules # +CONFIG_ISDN_DRV_LOOP=m # # ISDN4Linux hardware drivers @@ -1365,6 +1368,8 @@ CONFIG_ISDN_DRV_PCBIT=m CONFIG_ISDN_DRV_SC=m CONFIG_ISDN_DRV_ACT2000=m CONFIG_ISDN_DRV_TPAM=m +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y # # CAPI subsystem @@ -1385,6 +1390,14 @@ CONFIG_ISDN_CAPI_CAPIDRV=m # Active AVM cards # CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_T1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_C4=m # # Active Eicon DIVA Server cards @@ -1473,12 +1486,25 @@ CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set # CONFIG_ROCKETPORT is not set # CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set CONFIG_SYNCLINK=m CONFIG_SYNCLINKMP=m CONFIG_N_HDLC=m +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set CONFIG_STALDRV=y +# CONFIG_STALLION is not set +# CONFIG_ISTALLION is not set # # Serial drivers @@ -1500,6 +1526,7 @@ CONFIG_SERIAL_8250_RSA=y # CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set CONFIG_UNIX98_PTYS=y # CONFIG_LEGACY_PTYS is not set CONFIG_CRASH=m @@ -1575,6 +1602,7 @@ CONFIG_SONYPI=m # # Ftape, the floppy tape device driver # +# CONFIG_FTAPE is not set CONFIG_AGP=y CONFIG_AGP_ALI=y CONFIG_AGP_ATI=y @@ -1628,6 +1656,7 @@ CONFIG_I2C_ALI1563=m CONFIG_I2C_ALI15X3=m CONFIG_I2C_AMD756=m CONFIG_I2C_AMD8111=m +# CONFIG_I2C_ELEKTOR is not set CONFIG_I2C_I801=m CONFIG_I2C_I810=m CONFIG_I2C_ISA=m @@ -1717,6 +1746,7 @@ CONFIG_VIDEO_DEV=m # CONFIG_TUNER_3036 is not set # CONFIG_VIDEO_STRADIS is not set # CONFIG_VIDEO_ZORAN is not set +# CONFIG_VIDEO_MEYE is not set # CONFIG_VIDEO_SAA7134 is not set # CONFIG_VIDEO_MXB is not set # CONFIG_VIDEO_DPC is not set @@ -2052,6 +2082,7 @@ CONFIG_USB_USS720=m CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_WHITEHEAT=m CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m CONFIG_USB_SERIAL_EMPEG=m CONFIG_USB_SERIAL_FTDI_SIO=m @@ -2112,6 +2143,38 @@ CONFIG_USB_SPEEDTOUCH=m # CONFIG_USB_GADGET is not set # +# InfiniBand support +# +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_MTHCA=m +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set +CONFIG_INFINIBAND_IPOIB=m +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set +CONFIG_INFINIBAND_SDP=m +# CONFIG_INFINIBAND_SDP_DEBUG is not set +CONFIG_INFINIBAND_SRP=m + +# +# EDAC - error detection and reporting (RAS) +# +CONFIG_EDAC=m + +# +# Reporting subsystems +# +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_MM_EDAC=m +CONFIG_EDAC_AMD76X=m +CONFIG_EDAC_E7XXX=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_I82875P=m +CONFIG_EDAC_I82860=m +CONFIG_EDAC_R82600=m +CONFIG_EDAC_POLL=y + +# # File systems # CONFIG_EXT2_FS=y @@ -2205,15 +2268,20 @@ CONFIG_VXFS_FS=m # CONFIG_NFS_FS=m CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y CONFIG_NFS_DIRECTIO=y CONFIG_NFSD=m +CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y CONFIG_NFSD_V4=y CONFIG_NFSD_TCP=y CONFIG_LOCKD=m CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=m +CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y CONFIG_SUNRPC=m CONFIG_SUNRPC_GSS=m CONFIG_RPCSEC_GSS_KRB5=m @@ -2307,7 +2375,7 @@ CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_SPINLOCK=y CONFIG_DEBUG_SPINLOCK_SLEEP=y CONFIG_DEBUG_HIGHMEM=y -# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_INFO=y # CONFIG_FRAME_POINTER is not set CONFIG_EARLY_PRINTK=y CONFIG_DEBUG_STACKOVERFLOW=y @@ -2316,8 +2384,6 @@ CONFIG_DEBUG_STACK_USAGE=y # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_4KSTACKS is not set # CONFIG_SCHEDSTATS is not set -CONFIG_X86_FIND_SMP_CONFIG=y -CONFIG_X86_MPPARSE=y # # Security options @@ -2374,8 +2440,5 @@ CONFIG_CRC32=y CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=m -CONFIG_X86_SMP=y -CONFIG_X86_HT=y CONFIG_X86_BIOS_REBOOT=y -CONFIG_X86_TRAMPOLINE=y CONFIG_PC=y diff --git a/lustre/kernel_patches/patches/export-log-2.6-rhel4.patch b/lustre/kernel_patches/patches/export-log-2.6-rhel4.patch new file mode 100644 index 0000000..5bfc154 --- /dev/null +++ b/lustre/kernel_patches/patches/export-log-2.6-rhel4.patch @@ -0,0 +1,12 @@ +Index: linux-2.6.3/fs/jbd/journal.c +=================================================================== +--- linux-2.6.3.orig/fs/jbd/journal.c 2004-01-08 22:59:10.000000000 -0800 ++++ linux-2.6.3/fs/jbd/journal.c 2004-02-23 20:09:34.000000000 -0800 +@@ -71,6 +71,7 @@ + EXPORT_SYMBOL(journal_errno); + EXPORT_SYMBOL(journal_ack_err); + EXPORT_SYMBOL(journal_clear_err); ++EXPORT_SYMBOL(log_start_commit); + EXPORT_SYMBOL(log_wait_commit); + EXPORT_SYMBOL(journal_start_commit); + EXPORT_SYMBOL(journal_wipe); diff --git a/lustre/kernel_patches/patches/export_symbols-2.6-rhel4.patch b/lustre/kernel_patches/patches/export_symbols-2.6-rhel4.patch index 8d9ab40..a2b07f8 100644 --- a/lustre/kernel_patches/patches/export_symbols-2.6-rhel4.patch +++ b/lustre/kernel_patches/patches/export_symbols-2.6-rhel4.patch @@ -42,15 +42,6 @@ Index: linux-2.6.9-5.0.3.EL/include/linux/ext2_fs_sb.h /* * second extended-fs super-block data in memory */ -Index: linux-2.6.9-5.0.3.EL/kernel/kallsyms.c -=================================================================== ---- linux-2.6.9-5.0.3.EL.orig/kernel/kallsyms.c 2005-02-26 13:24:35.479811840 +0200 -+++ linux-2.6.9-5.0.3.EL/kernel/kallsyms.c 2005-02-26 13:53:13.799587528 +0200 -@@ -310,3 +310,4 @@ - __initcall(kallsyms_init); - - EXPORT_SYMBOL(__print_symbol); -+EXPORT_SYMBOL(kernel_text_address); Index: linux-2.6.9-5.0.3.EL/net/core/sock.c =================================================================== --- linux-2.6.9-5.0.3.EL.orig/net/core/sock.c 2005-02-26 13:24:35.490810168 +0200 diff --git a/lustre/kernel_patches/patches/export_symbols-2.6-suse.patch b/lustre/kernel_patches/patches/export_symbols-2.6-suse.patch index de1bf20..fbaf63d 100644 --- a/lustre/kernel_patches/patches/export_symbols-2.6-suse.patch +++ b/lustre/kernel_patches/patches/export_symbols-2.6-suse.patch @@ -64,12 +64,3 @@ Index: linux-2.6.5-12.1/kernel/exit.c static inline void __put_fs_struct(struct fs_struct *fs) { /* No need to hold fs->lock if we are killing it */ -Index: linux-2.6.4-51.0/kernel/kallsyms.c -=================================================================== ---- linux-2.6.4-51.0.orig/kernel/kallsyms.c 2004-04-05 12:42:08.000000000 -0400 -+++ linux-2.6.4-51.0/kernel/kallsyms.c 2004-04-15 15:00:56.000000000 -0400 -@@ -329,3 +329,4 @@ - - EXPORT_SYMBOL(kallsyms_lookup); - EXPORT_SYMBOL(__print_symbol); -+EXPORT_SYMBOL(kernel_text_address); diff --git a/lustre/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch b/lustre/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch index bb9928a..1d8a4af 100644 --- a/lustre/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch +++ b/lustre/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch @@ -1679,7 +1679,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + */ + + /*if (ac.ac_found > ext3_mb_max_to_scan) -+ printk(KERN_ERR "EXT3-fs: too long searching at " ++ printk(KERN_DEBUG "EXT3-fs: too long searching at " + "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len, + ac.ac_g_ex.fe_len);*/ + ext3_mb_try_best_found(&ac, &e3b); @@ -1688,8 +1688,8 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + * Someone more lucky has already allocated it. + * The only thing we can do is just take first + * found block(s) ++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n"); + */ -+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n"); + ac.ac_b_ex.fe_group = 0; + ac.ac_b_ex.fe_start = 0; + ac.ac_b_ex.fe_len = 0; @@ -1708,9 +1708,9 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + *errp = -ENOSPC; + block = 0; +#if 1 -+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n", ++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n", + ac.ac_status, ac.ac_flags); -+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n", ++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n", + ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group, + ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr); + printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n", @@ -2083,12 +2083,12 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + + sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL); + if (sbi->s_group_info[i] == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n"); ++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n"); + goto err_out; + } + desc = ext3_get_group_desc(sb, i, NULL); + if (desc == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i); ++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i); + goto err_out; + } + memset(sbi->s_group_info[i], 0, len); @@ -2605,7 +2605,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + char str[32]; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_STATS_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2639,7 +2639,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2678,7 +2678,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2704,7 +2704,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + + proc_root_ext3 = proc_mkdir(EXT3_ROOT, proc_root_fs); + if (proc_root_ext3 == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", EXT3_ROOT); ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", EXT3_ROOT); + return -EIO; + } + @@ -2712,7 +2712,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + proc_ext3_mb_stats = create_proc_entry(EXT3_MB_STATS_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_stats == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_STATS_NAME); + remove_proc_entry(EXT3_ROOT, proc_root_fs); + return -EIO; @@ -2727,7 +2727,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + EXT3_MB_MAX_TO_SCAN_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_max_to_scan == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_MAX_TO_SCAN_NAME); + remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3); + remove_proc_entry(EXT3_ROOT, proc_root_fs); @@ -2743,7 +2743,7 @@ Index: linux-2.6.5-7.201/fs/ext3/mballoc.c + EXT3_MB_MIN_TO_SCAN_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_min_to_scan == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_MIN_TO_SCAN_NAME); + remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, proc_root_ext3); + remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3); diff --git a/lustre/kernel_patches/patches/ext3-mballoc2-2.6.12.patch b/lustre/kernel_patches/patches/ext3-mballoc2-2.6.12.patch index a2b9caf..0c2f445 100644 --- a/lustre/kernel_patches/patches/ext3-mballoc2-2.6.12.patch +++ b/lustre/kernel_patches/patches/ext3-mballoc2-2.6.12.patch @@ -1674,7 +1674,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + */ + + /*if (ac.ac_found > ext3_mb_max_to_scan) -+ printk(KERN_ERR "EXT3-fs: too long searching at " ++ printk(KERN_DEBUG "EXT3-fs: too long searching at " + "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len, + ac.ac_g_ex.fe_len);*/ + ext3_mb_try_best_found(&ac, &e3b); @@ -1683,8 +1683,8 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + * Someone more lucky has already allocated it. + * The only thing we can do is just take first + * found block(s) ++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n"); + */ -+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n"); + ac.ac_b_ex.fe_group = 0; + ac.ac_b_ex.fe_start = 0; + ac.ac_b_ex.fe_len = 0; @@ -1703,9 +1703,9 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + *errp = -ENOSPC; + block = 0; +#if 1 -+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n", ++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n", + ac.ac_status, ac.ac_flags); -+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n", ++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n", + ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group, + ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr); + printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n", @@ -2078,12 +2078,12 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + + sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL); + if (sbi->s_group_info[i] == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n"); ++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n"); + goto err_out; + } + desc = ext3_get_group_desc(sb, i, NULL); + if (desc == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i); ++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i); + goto err_out; + } + memset(sbi->s_group_info[i], 0, len); @@ -2599,7 +2599,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + char str[32]; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_STATS_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2633,7 +2633,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2672,7 +2672,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2698,7 +2698,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + + proc_root_ext3 = proc_mkdir(EXT3_ROOT, proc_root_fs); + if (proc_root_ext3 == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", EXT3_ROOT); ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", EXT3_ROOT); + return -EIO; + } + @@ -2706,7 +2706,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + proc_ext3_mb_stats = create_proc_entry(EXT3_MB_STATS_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_stats == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_STATS_NAME); + remove_proc_entry(EXT3_ROOT, proc_root_fs); + return -EIO; @@ -2721,7 +2721,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + EXT3_MB_MAX_TO_SCAN_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_max_to_scan == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_MAX_TO_SCAN_NAME); + remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3); + remove_proc_entry(EXT3_ROOT, proc_root_fs); @@ -2737,7 +2737,7 @@ Index: linux-2.6.12.6/fs/ext3/mballoc.c + EXT3_MB_MIN_TO_SCAN_NAME, + S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); + if (proc_ext3_mb_min_to_scan == NULL) { -+ printk(KERN_ERR "EXT3: Unable to create %s\n", ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", + EXT3_MB_MIN_TO_SCAN_NAME); + remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, proc_root_ext3); + remove_proc_entry(EXT3_MB_STATS_NAME, proc_root_ext3); diff --git a/lustre/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch b/lustre/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch index d12c678..5ff3d3b 100644 --- a/lustre/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch +++ b/lustre/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch @@ -1693,7 +1693,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + */ + + /*if (ac.ac_found > ext3_mb_max_to_scan) -+ printk(KERN_ERR "EXT3-fs: too long searching at " ++ printk(KERN_DEBUG "EXT3-fs: too long searching at " + "%u (%d/%d)\n", cr, ac.ac_b_ex.fe_len, + ac.ac_g_ex.fe_len);*/ + ext3_mb_try_best_found(&ac, &e3b); @@ -1702,8 +1702,8 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + * Someone more lucky has already allocated it. + * The only thing we can do is just take first + * found block(s) ++ printk(KERN_DEBUG "EXT3-fs: someone won our chunk\n"); + */ -+ printk(KERN_ERR "EXT3-fs: and someone won our chunk\n"); + ac.ac_b_ex.fe_group = 0; + ac.ac_b_ex.fe_start = 0; + ac.ac_b_ex.fe_len = 0; @@ -1722,9 +1722,9 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + *errp = -ENOSPC; + block = 0; +#if 1 -+ printk(KERN_ERR "EXT3-fs: cant allocate: status %d, flags %d\n", ++ printk(KERN_ERR "EXT3-fs: can't allocate: status %d flags %d\n", + ac.ac_status, ac.ac_flags); -+ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d, cr %d\n", ++ printk(KERN_ERR "EXT3-fs: goal %d, best found %d/%d/%d cr %d\n", + ac.ac_g_ex.fe_len, ac.ac_b_ex.fe_group, + ac.ac_b_ex.fe_start, ac.ac_b_ex.fe_len, cr); + printk(KERN_ERR "EXT3-fs: %lu block reserved, %d found\n", @@ -2097,12 +2097,12 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + + sbi->s_group_info[i] = kmalloc(len, GFP_KERNEL); + if (sbi->s_group_info[i] == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant allocate mem for buddy\n"); ++ printk(KERN_ERR "EXT3-fs: can't allocate buddy mem\n"); + goto err_out; + } + desc = ext3_get_group_desc(sb, i, NULL); + if (desc == NULL) { -+ printk(KERN_ERR "EXT3-fs: cant read descriptor %u\n", i); ++ printk(KERN_ERR"EXT3-fs: can't read descriptor %u\n",i); + goto err_out; + } + memset(sbi->s_group_info[i], 0, len); @@ -2618,7 +2618,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + char str[32]; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_STATS_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2652,7 +2652,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", + EXT3_MB_MAX_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } @@ -2691,7 +2691,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + long value; + + if (count >= sizeof(str)) { -+ printk(KERN_ERR "EXT3: %s string to long, max %u bytes\n", ++ printk(KERN_ERR "EXT3: %s string too long, max %u bytes\n", + EXT3_MB_MIN_TO_SCAN_NAME, (int)sizeof(str)); + return -EOVERFLOW; + } diff --git a/lustre/kernel_patches/patches/nfs-cifs-intent-2.6-rhel4.patch b/lustre/kernel_patches/patches/nfs-cifs-intent-2.6-rhel4.patch index 9c66a2a..4707842 100644 --- a/lustre/kernel_patches/patches/nfs-cifs-intent-2.6-rhel4.patch +++ b/lustre/kernel_patches/patches/nfs-cifs-intent-2.6-rhel4.patch @@ -1,8 +1,49 @@ -Index: linux-2.6.9-5.0.3.EL/fs/nfs/dir.c -=================================================================== ---- linux-2.6.9-5.0.3.EL.orig/fs/nfs/dir.c 2005-02-25 13:43:42.454529040 +0200 -+++ linux-2.6.9-5.0.3.EL/fs/nfs/dir.c 2005-02-25 13:46:04.832884240 +0200 -@@ -791,7 +791,7 @@ +diff -urp a/fs/cifs/dir.c b/fs/cifs/dir.c +--- a/fs/cifs/dir.c 2006-03-10 18:50:15.000000000 -0800 ++++ b/fs/cifs/dir.c 2006-03-10 18:50:44.000000000 -0800 +@@ -146,23 +146,23 @@ cifs_create(struct inode *inode, struct + } + + if(nd) { +- if ((nd->intent.open.flags & O_ACCMODE) == O_RDONLY) ++ if ((nd->intent.it_flags & O_ACCMODE) == O_RDONLY) + desiredAccess = GENERIC_READ; +- else if ((nd->intent.open.flags & O_ACCMODE) == O_WRONLY) { ++ else if ((nd->intent.it_flags & O_ACCMODE) == O_WRONLY) { + desiredAccess = GENERIC_WRITE; + write_only = TRUE; +- } else if ((nd->intent.open.flags & O_ACCMODE) == O_RDWR) { ++ } else if ((nd->intent.it_flags & O_ACCMODE) == O_RDWR) { + /* GENERIC_ALL is too much permission to request */ + /* can cause unnecessary access denied on create */ + /* desiredAccess = GENERIC_ALL; */ + desiredAccess = GENERIC_READ | GENERIC_WRITE; + } + +- if((nd->intent.open.flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) ++ if((nd->intent.it_flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) + disposition = FILE_CREATE; +- else if((nd->intent.open.flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC)) ++ else if((nd->intent.it_flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC)) + disposition = FILE_OVERWRITE_IF; +- else if((nd->intent.open.flags & O_CREAT) == O_CREAT) ++ else if((nd->intent.it_flags & O_CREAT) == O_CREAT) + disposition = FILE_OPEN_IF; + else { + cFYI(1,("Create flag not set in create function")); +diff -urp a/fs/nfs/dir.c b/fs/nfs/dir.c +--- a/fs/nfs/dir.c 2006-03-10 19:07:50.000000000 -0800 ++++ b/fs/nfs/dir.c 2006-03-10 17:27:15.000000000 -0800 +@@ -752,7 +752,7 @@ int nfs_is_exclusive_create(struct inode + return 0; + if (!nd || (nd->flags & LOOKUP_CONTINUE) || !(nd->flags & LOOKUP_CREATE)) + return 0; +- return (nd->intent.open.flags & O_EXCL) != 0; ++ return (nd->intent.it_flags & O_EXCL) != 0; + } + + static struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *nd) +@@ -827,7 +827,7 @@ static int is_atomic_open(struct inode * if (nd->flags & LOOKUP_DIRECTORY) return 0; /* Are we trying to write to a read only partition? */ @@ -11,7 +52,7 @@ Index: linux-2.6.9-5.0.3.EL/fs/nfs/dir.c return 0; return 1; } -@@ -812,7 +812,7 @@ +@@ -848,7 +848,7 @@ static struct dentry *nfs_atomic_lookup( dentry->d_op = NFS_PROTO(dir)->dentry_ops; /* Let vfs_create() deal with O_EXCL */ @@ -20,16 +61,16 @@ Index: linux-2.6.9-5.0.3.EL/fs/nfs/dir.c goto no_entry; /* Open the file on the server */ -@@ -820,7 +820,7 @@ - /* Revalidate parent directory attribute cache */ - nfs_revalidate_inode(NFS_SERVER(dir), dir); +@@ -860,7 +860,7 @@ static struct dentry *nfs_atomic_lookup( + goto out; + } - if (nd->intent.open.flags & O_CREAT) { + if (nd->intent.it_flags & O_CREAT) { nfs_begin_data_update(dir); inode = nfs4_atomic_open(dir, dentry, nd); nfs_end_data_update(dir); -@@ -836,7 +836,7 @@ +@@ -876,7 +876,7 @@ static struct dentry *nfs_atomic_lookup( break; /* This turned out not to be a regular file */ case -ELOOP: @@ -38,7 +79,7 @@ Index: linux-2.6.9-5.0.3.EL/fs/nfs/dir.c goto no_open; /* case -EISDIR: */ /* case -EINVAL: */ -@@ -875,7 +875,7 @@ +@@ -915,7 +915,7 @@ static int nfs_open_revalidate(struct de /* NFS only supports OPEN on regular files */ if (!S_ISREG(inode->i_mode)) goto no_open; @@ -47,11 +88,19 @@ Index: linux-2.6.9-5.0.3.EL/fs/nfs/dir.c /* We cannot do exclusive creation on a positive dentry */ if ((openflags & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL)) goto no_open; -Index: linux-2.6.9-5.0.3.EL/fs/nfs/nfs4proc.c -=================================================================== ---- linux-2.6.9-5.0.3.EL.orig/fs/nfs/nfs4proc.c 2004-10-19 00:54:40.000000000 +0300 -+++ linux-2.6.9-5.0.3.EL/fs/nfs/nfs4proc.c 2005-02-25 13:44:27.537675360 +0200 -@@ -775,17 +775,17 @@ +@@ -1080,7 +1080,7 @@ static int nfs_create(struct inode *dir, + attr.ia_valid = ATTR_MODE; + + if (nd && (nd->flags & LOOKUP_CREATE)) +- open_flags = nd->intent.open.flags; ++ open_flags = nd->intent.it_flags; + + /* + * The 0 argument passed into the create function should one day +diff -urp a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c +--- a/fs/nfs/nfs4proc.c 2006-03-10 17:19:45.000000000 -0800 ++++ b/fs/nfs/nfs4proc.c 2006-03-10 17:19:58.000000000 -0800 +@@ -776,17 +776,17 @@ nfs4_atomic_open(struct inode *dir, stru struct nfs4_state *state; if (nd->flags & LOOKUP_CREATE) { @@ -72,46 +121,3 @@ Index: linux-2.6.9-5.0.3.EL/fs/nfs/nfs4proc.c put_rpccred(cred); if (IS_ERR(state)) return (struct inode *)state; -Index: linux-2.6.9-5.0.3.EL/fs/cifs/dir.c -=================================================================== ---- linux-2.6.9-5.0.3.EL.orig/fs/cifs/dir.c 2004-10-19 00:54:37.000000000 +0300 -+++ linux-2.6.9-5.0.3.EL/fs/cifs/dir.c 2005-02-25 13:44:27.539675056 +0200 -@@ -199,23 +199,23 @@ - } - - if(nd) { -- if ((nd->intent.open.flags & O_ACCMODE) == O_RDONLY) -+ if ((nd->intent.it_flags & O_ACCMODE) == O_RDONLY) - desiredAccess = GENERIC_READ; -- else if ((nd->intent.open.flags & O_ACCMODE) == O_WRONLY) { -+ else if ((nd->intent.it_flags & O_ACCMODE) == O_WRONLY) { - desiredAccess = GENERIC_WRITE; - write_only = TRUE; -- } else if ((nd->intent.open.flags & O_ACCMODE) == O_RDWR) { -+ } else if ((nd->intent.it_flags & O_ACCMODE) == O_RDWR) { - /* GENERIC_ALL is too much permission to request */ - /* can cause unnecessary access denied on create */ - /* desiredAccess = GENERIC_ALL; */ - desiredAccess = GENERIC_READ | GENERIC_WRITE; - } - -- if((nd->intent.open.flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) -+ if((nd->intent.it_flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) - disposition = FILE_CREATE; -- else if((nd->intent.open.flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC)) -+ else if((nd->intent.it_flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC)) - disposition = FILE_OVERWRITE_IF; -- else if((nd->intent.open.flags & O_CREAT) == O_CREAT) -+ else if((nd->intent.it_flags & O_CREAT) == O_CREAT) - disposition = FILE_OPEN_IF; - else { - cFYI(1,("Create flag not set in create function")); -@@ -400,7 +400,7 @@ - parent_dir_inode, direntry->d_name.name, direntry)); - - if(nd) { /* BB removeme */ -- cFYI(1,("In lookup nd flags 0x%x open intent flags 0x%x",nd->flags,nd->intent.open.flags)); -+ cFYI(1,("In lookup nd flags 0x%x open intent flags 0x%x",nd->flags,nd->intent.it_flags)); - } /* BB removeme BB */ - /* BB Add check of incoming data - e.g. frame not longer than maximum SMB - let server check the namelen BB */ - diff --git a/lustre/kernel_patches/patches/tcp-zero-copy-2.6.9-rhel4.patch b/lustre/kernel_patches/patches/tcp-zero-copy-2.6.9-rhel4.patch index c8596b6..799b89f1 100644 --- a/lustre/kernel_patches/patches/tcp-zero-copy-2.6.9-rhel4.patch +++ b/lustre/kernel_patches/patches/tcp-zero-copy-2.6.9-rhel4.patch @@ -162,13 +162,13 @@ i = skb_shinfo(skb)->nr_frags; + + if (zccd != NULL && /* this is a zcc I/O */ -+ skb_shinfo(skb)->zccd != NULL && /* skb is part of a zcc I/O */ -+ skb_shinfo(skb)->zccd2 != NULL && -+ skb_shinfo(skb)->zccd != zccd && /* not the same one */ -+ skb_shinfo(skb)->zccd2 != zccd) ++ skb_shinfo(skb)->zccd != NULL && /* skb part of a zcc I/O */ ++ skb_shinfo(skb)->zccd2 != NULL && ++ skb_shinfo(skb)->zccd != zccd && /* not the same one */ ++ skb_shinfo(skb)->zccd2 != zccd) + { -+ tcp_mark_push (tp, skb); -+ goto new_segment; ++ tcp_mark_push (tp, skb); ++ goto new_segment; + } + can_coalesce = skb_can_coalesce(skb, i, page, offset); @@ -206,8 +206,8 @@ + return res; +} + -+ssize_t tcp_sendpage_zccd(struct socket *sock, struct page *page, int offset, size_t size, -+ int flags, zccd_t *zccd) ++ssize_t tcp_sendpage_zccd(struct socket *sock, struct page *page, int offset, ++ size_t size, int flags, zccd_t *zccd) +{ + ssize_t res; + struct sock *sk = sock->sk; @@ -228,7 +228,7 @@ TCP_CHECK_TIMER(sk); release_sock(sk); return res; -@@ -1528,6 +1578,202 @@ +@@ -1528,6 +1578,194 @@ goto out; } @@ -279,8 +279,7 @@ + + skb = skb_peek(&sk->sk_receive_queue); + -+ if (skb == NULL) /* nothing ready */ -+ { ++ if (skb == NULL) { /* nothing ready */ + if (copied) { + if (sk->sk_err || + sk->sk_state == TCP_CLOSE || @@ -341,8 +340,9 @@ + offset++; + used--; + } -+ } else /* truncate read */ ++ } else { /* truncate read */ + used = urg_offset; ++ } + } + } + @@ -350,39 +350,32 @@ + if (len < used) + used = len; + -+ if (used == 0) ++ if (used == 0) { + exhausted = 1; -+ else -+ { -+ if (skb_is_nonlinear (skb)) -+ { ++ } else { ++ if (skb_is_nonlinear (skb)) { + int rc = skb_linearize (skb, GFP_KERNEL); + + printk ("tcp_recvpackets(): linearising: %d\n", rc); + -+ if (rc) -+ { ++ if (rc) { + if (!copied) + copied = rc; + break; + } + } + -+ if ((offset + used) == skb->len) /* consuming the whole packet */ -+ { ++ if ((offset + used) == skb->len) { /* consuming the whole packet */ + __skb_unlink (skb, &sk->sk_receive_queue); + dst_release (skb->dst); + skb_orphan (skb); + __skb_pull (skb, offset); + __skb_queue_tail (packets, skb); + exhausted = eaten = 1; -+ } -+ else /* consuming only part of the packet */ -+ { ++ } else { /* consuming only part of the packet */ + struct sk_buff *skb2 = skb_clone (skb, GFP_KERNEL); + -+ if (skb2 == NULL) -+ { ++ if (skb2 == NULL) { + if (!copied) + copied = -ENOMEM; + break; @@ -407,8 +400,7 @@ + if (!exhausted) + continue; + -+ if (skb->h.th->fin) -+ { ++ if (skb->h.th->fin) { + tp->copied_seq++; + if (!eaten) + sk_eat_skb (sk, skb); diff --git a/lustre/kernel_patches/patches/vfs_intent-2.6-rhel4.patch b/lustre/kernel_patches/patches/vfs_intent-2.6-rhel4.patch index 75d587e..674e6c1 100644 --- a/lustre/kernel_patches/patches/vfs_intent-2.6-rhel4.patch +++ b/lustre/kernel_patches/patches/vfs_intent-2.6-rhel4.patch @@ -1,8 +1,7 @@ -Index: linux-2.6.9-22.0.2.EL/fs/exec.c -=================================================================== ---- linux-2.6.9-22.0.2.EL.orig/fs/exec.c 2006-01-25 23:40:13.000000000 -0500 -+++ linux-2.6.9-22.0.2.EL/fs/exec.c 2006-01-26 18:46:33.000000000 -0500 -@@ -125,9 +125,10 @@ +diff -urp a/fs/exec.c b/fs/exec.c +--- a/fs/exec.c 2006-03-10 14:59:58.000000000 -0800 ++++ b/fs/exec.c 2006-03-10 18:09:26.000000000 -0800 +@@ -125,9 +125,10 @@ asmlinkage long sys_uselib(const char __ struct file * file; struct nameidata nd; int error; @@ -15,7 +14,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/exec.c if (error) goto out; -@@ -139,7 +140,7 @@ +@@ -139,7 +140,7 @@ asmlinkage long sys_uselib(const char __ if (error) goto exit; @@ -24,7 +23,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/exec.c error = PTR_ERR(file); if (IS_ERR(file)) goto out; -@@ -488,8 +489,9 @@ +@@ -488,8 +489,9 @@ struct file *open_exec(const char *name) int err; struct file *file; @@ -36,7 +35,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/exec.c file = ERR_PTR(err); if (!err) { -@@ -502,7 +504,7 @@ +@@ -502,7 +504,7 @@ struct file *open_exec(const char *name) err = -EACCES; file = ERR_PTR(err); if (!err) { @@ -45,11 +44,21 @@ Index: linux-2.6.9-22.0.2.EL/fs/exec.c if (!IS_ERR(file)) { err = deny_write_access(file); if (err) { -Index: linux-2.6.9-22.0.2.EL/fs/namei.c -=================================================================== ---- linux-2.6.9-22.0.2.EL.orig/fs/namei.c 2006-01-25 23:40:13.000000000 -0500 -+++ linux-2.6.9-22.0.2.EL/fs/namei.c 2006-01-26 18:46:33.000000000 -0500 -@@ -274,8 +274,19 @@ +diff -urp a/fs/inode.c b/fs/inode.c +--- a/fs/inode.c 2006-03-10 14:59:59.000000000 -0800 ++++ b/fs/inode.c 2006-03-10 14:59:59.000000000 -0800 +@@ -235,6 +235,7 @@ void __iget(struct inode * inode) + inodes_stat.nr_unused--; + } + ++EXPORT_SYMBOL(__iget); + /** + * clear_inode - clear an inode + * @inode: inode to clear +diff -urp a/fs/namei.c b/fs/namei.c +--- a/fs/namei.c 2006-03-10 14:59:59.000000000 -0800 ++++ b/fs/namei.c 2006-03-10 16:42:11.000000000 -0800 +@@ -274,8 +274,19 @@ int deny_write_access(struct file * file return 0; } @@ -69,7 +78,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c dput(nd->dentry); mntput(nd->mnt); } -@@ -367,7 +378,10 @@ +@@ -367,7 +378,10 @@ static struct dentry * real_lookup(struc { struct dentry * result; struct inode *dir = parent->d_inode; @@ -80,7 +89,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c down(&dir->i_sem); /* * First re-do the cached lookup just in case it was created -@@ -406,7 +420,10 @@ +@@ -406,7 +420,10 @@ static struct dentry * real_lookup(struc if (result->d_op && result->d_op->d_revalidate) { if (!result->d_op->d_revalidate(result, nd) && !d_invalidate(result)) { dput(result); @@ -92,7 +101,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c } } return result; -@@ -436,7 +453,9 @@ +@@ -436,7 +453,9 @@ walk_init_root(const char *name, struct static inline int __vfs_follow_link(struct nameidata *nd, const char *link) { int res = 0; @@ -102,7 +111,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c if (IS_ERR(link)) goto fail; -@@ -446,6 +465,9 @@ +@@ -446,6 +465,9 @@ static inline int __vfs_follow_link(stru /* weird __emul_prefix() stuff did it */ goto out; } @@ -112,7 +121,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c res = link_path_walk(link, nd); out: if (nd->depth || res || nd->last_type!=LAST_NORM) -@@ -654,6 +676,33 @@ +@@ -654,6 +676,33 @@ fail: return PTR_ERR(dentry); } @@ -146,7 +155,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c /* * Name resolution. * This is the basic name resolution function, turning a pathname into -@@ -755,8 +804,12 @@ +@@ -755,8 +804,12 @@ static fastcall int __link_path_walk(con goto out_dput; if (inode->i_op->follow_link) { @@ -159,7 +168,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c dput(next.dentry); mntput(next.mnt); if (err) -@@ -795,14 +848,34 @@ +@@ -795,14 +848,34 @@ last_component: inode = nd->dentry->d_inode; /* fallthrough */ case 1: @@ -194,7 +203,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c if (err) break; follow_mount(&next.mnt, &next.dentry); -@@ -1053,7 +1126,7 @@ +@@ -1053,7 +1126,7 @@ struct dentry * lookup_hash(struct qstr } /* SMP-safe */ @@ -203,7 +212,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c { unsigned long hash; struct qstr this; -@@ -1073,11 +1146,16 @@ +@@ -1073,11 +1146,16 @@ struct dentry * lookup_one_len(const cha } this.hash = end_name_hash(hash); @@ -221,7 +230,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c /* * namei() * -@@ -1089,7 +1167,7 @@ +@@ -1089,7 +1167,7 @@ access: * that namei follows links, while lnamei does not. * SMP-safe */ @@ -230,7 +239,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c { char *tmp = getname(name); int err = PTR_ERR(tmp); -@@ -1101,6 +1179,12 @@ +@@ -1101,6 +1179,12 @@ int fastcall __user_walk(const char __us return err; } @@ -243,7 +252,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c /* * It's inline, so penalty for filesystems that don't use sticky bit is * minimal. -@@ -1387,8 +1471,8 @@ +@@ -1387,8 +1471,8 @@ int open_namei(const char * pathname, in acc_mode |= MAY_APPEND; /* Fill in the open() intent data */ @@ -254,7 +263,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c /* * The simplest case - just a plain lookup. -@@ -1403,6 +1487,7 @@ +@@ -1403,6 +1487,7 @@ int open_namei(const char * pathname, in /* * Create - we need to know the parent. */ @@ -262,7 +271,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c error = path_lookup(pathname, LOOKUP_PARENT|LOOKUP_OPEN|LOOKUP_CREATE, nd); if (error) return error; -@@ -1419,7 +1504,9 @@ +@@ -1419,7 +1504,9 @@ int open_namei(const char * pathname, in dir = nd->dentry; nd->flags &= ~LOOKUP_PARENT; down(&dir->d_inode->i_sem); @@ -272,7 +281,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c do_last: error = PTR_ERR(dentry); -@@ -1532,7 +1619,9 @@ +@@ -1532,7 +1619,9 @@ do_link: } dir = nd->dentry; down(&dir->d_inode->i_sem); @@ -282,11 +291,10 @@ Index: linux-2.6.9-22.0.2.EL/fs/namei.c __putname(nd->last.name); goto do_last; } -Index: linux-2.6.9-22.0.2.EL/fs/namespace.c -=================================================================== ---- linux-2.6.9-22.0.2.EL.orig/fs/namespace.c 2006-01-25 23:40:13.000000000 -0500 -+++ linux-2.6.9-22.0.2.EL/fs/namespace.c 2006-01-26 18:46:32.000000000 -0500 -@@ -61,6 +61,7 @@ +diff -urp a/fs/namespace.c b/fs/namespace.c +--- a/fs/namespace.c 2006-03-10 15:00:00.000000000 -0800 ++++ b/fs/namespace.c 2006-03-10 17:04:09.000000000 -0800 +@@ -61,6 +61,7 @@ struct vfsmount *alloc_vfsmnt(const char INIT_LIST_HEAD(&mnt->mnt_mounts); INIT_LIST_HEAD(&mnt->mnt_list); INIT_LIST_HEAD(&mnt->mnt_fslink); @@ -294,7 +302,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namespace.c if (name) { int size = strlen(name)+1; char *newname = kmalloc(size, GFP_KERNEL); -@@ -114,6 +115,7 @@ +@@ -114,6 +115,7 @@ static inline int check_mnt(struct vfsmo static void detach_mnt(struct vfsmount *mnt, struct nameidata *old_nd) { @@ -302,7 +310,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namespace.c old_nd->dentry = mnt->mnt_mountpoint; old_nd->mnt = mnt->mnt_parent; mnt->mnt_parent = mnt; -@@ -177,6 +179,9 @@ +@@ -177,6 +179,9 @@ void __mntput(struct vfsmount *mnt) { struct super_block *sb = mnt->mnt_sb; dput(mnt->mnt_root); @@ -312,7 +320,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namespace.c free_vfsmnt(mnt); deactivate_super(sb); } -@@ -403,6 +408,8 @@ +@@ -403,6 +408,8 @@ static int do_umount(struct vfsmount *mn */ lock_kernel(); @@ -321,7 +329,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namespace.c if( (flags&MNT_FORCE) && sb->s_op->umount_begin) sb->s_op->umount_begin(sb); unlock_kernel(); -@@ -627,6 +634,7 @@ +@@ -627,6 +634,7 @@ static int do_loopback(struct nameidata return err; if (!old_name || !*old_name) return -EINVAL; @@ -329,7 +337,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namespace.c err = path_lookup(old_name, LOOKUP_FOLLOW, &old_nd); if (err) return err; -@@ -701,6 +709,7 @@ +@@ -701,6 +709,7 @@ static int do_move_mount(struct nameidat return -EPERM; if (!old_name || !*old_name) return -EINVAL; @@ -337,7 +345,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/namespace.c err = path_lookup(old_name, LOOKUP_FOLLOW, &old_nd); if (err) return err; -@@ -1012,6 +1021,7 @@ +@@ -1012,6 +1021,7 @@ long do_mount(char * dev_name, char * di int retval = 0; int mnt_flags = 0; @@ -345,11 +353,10 @@ Index: linux-2.6.9-22.0.2.EL/fs/namespace.c /* Discard magic */ if ((flags & MS_MGC_MSK) == MS_MGC_VAL) flags &= ~MS_MGC_MSK; -Index: linux-2.6.9-22.0.2.EL/fs/open.c -=================================================================== ---- linux-2.6.9-22.0.2.EL.orig/fs/open.c 2006-01-25 23:40:13.000000000 -0500 -+++ linux-2.6.9-22.0.2.EL/fs/open.c 2006-01-26 18:46:33.000000000 -0500 -@@ -216,12 +216,12 @@ +diff -urp a/fs/open.c b/fs/open.c +--- a/fs/open.c 2006-03-10 15:00:01.000000000 -0800 ++++ b/fs/open.c 2006-03-10 18:09:51.000000000 -0800 +@@ -216,12 +216,12 @@ static inline long do_sys_truncate(const struct nameidata nd; struct inode * inode; int error; @@ -364,7 +371,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/open.c if (error) goto out; inode = nd.dentry->d_inode; -@@ -475,6 +475,7 @@ +@@ -475,6 +475,7 @@ asmlinkage long sys_access(const char __ int old_fsuid, old_fsgid; kernel_cap_t old_cap; int res; @@ -372,7 +379,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/open.c if (mode & ~S_IRWXO) /* where's F_OK, X_OK, W_OK, R_OK? */ return -EINVAL; -@@ -499,13 +500,14 @@ +@@ -499,13 +500,14 @@ asmlinkage long sys_access(const char __ else current->cap_effective = current->cap_permitted; @@ -388,7 +395,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/open.c path_release(&nd); } -@@ -520,8 +522,9 @@ +@@ -520,8 +522,9 @@ asmlinkage long sys_chdir(const char __u { struct nameidata nd; int error; @@ -399,7 +406,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/open.c if (error) goto out; -@@ -573,8 +576,9 @@ +@@ -573,8 +576,9 @@ asmlinkage long sys_chroot(const char __ { struct nameidata nd; int error; @@ -410,45 +417,88 @@ Index: linux-2.6.9-22.0.2.EL/fs/open.c if (error) goto out; -@@ -755,27 +759,8 @@ - * for the internal routines (ie open_namei()/follow_link() etc). 00 is - * used by symlinks. - */ --struct file *filp_open(const char * filename, int flags, int mode) --{ -- int namei_flags, error; -- struct nameidata nd; +@@ -741,8 +745,6 @@ asmlinkage long sys_fchown(unsigned int + return error; + } + +-static struct file *__dentry_open(struct dentry *, struct vfsmount *, int, struct file *); - -- namei_flags = flags; -- if ((namei_flags+1) & O_ACCMODE) -- namei_flags++; -- if (namei_flags & O_TRUNC) -- namei_flags |= 2; + /* + * Note that while the flag value (low two bits) for sys_open means: + * 00 - read-only +@@ -760,8 +762,9 @@ static struct file *__dentry_open(struct + struct file *filp_open(const char * filename, int flags, int mode) + { + int namei_flags, error; ++ struct file * temp_filp; + struct nameidata nd; +- struct file *f; ++ intent_init(&nd.intent, IT_OPEN); + + namei_flags = flags; + if ((namei_flags+1) & O_ACCMODE) +@@ -769,16 +772,11 @@ struct file *filp_open(const char * file + if (namei_flags & O_TRUNC) + namei_flags |= 2; + +- error = -ENFILE; +- f = get_empty_filp(); +- if (f == NULL) +- return ERR_PTR(error); - -- error = open_namei(filename, namei_flags, mode, &nd); + error = open_namei(filename, namei_flags, mode, &nd); - if (!error) -- return dentry_open(nd.dentry, nd.mnt, flags); +- return __dentry_open(nd.dentry, nd.mnt, flags, f); - -- return ERR_PTR(error); --} -- --EXPORT_SYMBOL(filp_open); +- put_filp(f); ++ if (!error) { ++ temp_filp = dentry_open_it(nd.dentry, nd.mnt, flags, &nd.intent); ++ return temp_filp; ++ } + return ERR_PTR(error); + } + +@@ -786,29 +784,27 @@ EXPORT_SYMBOL(filp_open); + + struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags) + { +- int error; +- struct file *f; - --struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags) -+struct file *dentry_open_it(struct dentry *dentry, struct vfsmount *mnt, int flags, -+ struct lookup_intent *it) +- error = -ENFILE; +- f = get_empty_filp(); +- if (f == NULL) { +- dput(dentry); +- mntput(mnt); +- return ERR_PTR(error); +- } ++ struct lookup_intent it; ++ intent_init(&it, IT_LOOKUP); + +- return __dentry_open(dentry, mnt, flags, f); ++ return dentry_open_it(dentry, mnt, flags, &it); + } + + EXPORT_SYMBOL(dentry_open); + +-static struct file *__dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags, struct file *f) ++struct file *dentry_open_it(struct dentry *dentry, struct vfsmount *mnt, int flags, struct lookup_intent *it) { - struct file * f; ++ struct file *f; struct inode *inode; -@@ -787,6 +772,7 @@ - goto cleanup_dentry; + int error; + ++ error = -ENFILE; ++ f = get_empty_filp(); ++ if (!f) ++ goto cleanup_dentry; f->f_flags = flags; f->f_mode = ((flags+1) & O_ACCMODE) | FMODE_LSEEK | FMODE_PREAD | FMODE_PWRITE; + f->f_it = it; inode = dentry->d_inode; if (f->f_mode & FMODE_WRITE) { error = get_write_access(inode); -@@ -805,6 +791,7 @@ +@@ -827,6 +823,7 @@ static struct file *__dentry_open(struct error = f->f_op->open(inode,f); if (error) goto cleanup_all; @@ -456,56 +506,19 @@ Index: linux-2.6.9-22.0.2.EL/fs/open.c } f->f_flags &= ~(O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC); -@@ -830,6 +817,7 @@ +@@ -851,6 +848,8 @@ cleanup_all: + f->f_vfsmnt = NULL; cleanup_file: put_filp(f); - cleanup_dentry: ++cleanup_dentry: + intent_release(it); dput(dentry); mntput(mnt); return ERR_PTR(error); -@@ -837,6 +825,36 @@ - - EXPORT_SYMBOL(dentry_open); - -+struct file *filp_open(const char * filename, int flags, int mode) -+{ -+ int namei_flags, error; -+ struct file * temp_filp; -+ struct nameidata nd; -+ intent_init(&nd.intent, IT_OPEN); -+ -+ namei_flags = flags; -+ if ((namei_flags+1) & O_ACCMODE) -+ namei_flags++; -+ if (namei_flags & O_TRUNC) -+ namei_flags |= 2; -+ -+ error = open_namei(filename, namei_flags, mode, &nd); -+ if (!error) { -+ temp_filp = dentry_open_it(nd.dentry, nd.mnt, flags, &nd.intent); -+ return temp_filp; -+ } -+ return ERR_PTR(error); -+} -+ -+ -+struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags) -+{ -+ struct lookup_intent it; -+ intent_init(&it, IT_LOOKUP); -+ -+ return dentry_open_it(dentry, mnt, flags, &it); -+} -+ - /* - * Find an empty file descriptor entry, and mark it busy. - */ -Index: linux-2.6.9-22.0.2.EL/fs/stat.c -=================================================================== ---- linux-2.6.9-22.0.2.EL.orig/fs/stat.c 2006-01-25 23:40:13.000000000 -0500 -+++ linux-2.6.9-22.0.2.EL/fs/stat.c 2006-01-25 23:40:55.000000000 -0500 -@@ -37,7 +37,7 @@ +diff -urp a/fs/stat.c b/fs/stat.c +--- a/fs/stat.c 2006-03-10 15:00:01.000000000 -0800 ++++ b/fs/stat.c 2006-03-10 15:00:02.000000000 -0800 +@@ -37,7 +37,7 @@ void generic_fillattr(struct inode *inod EXPORT_SYMBOL(generic_fillattr); @@ -514,7 +527,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/stat.c { struct inode *inode = dentry->d_inode; int retval; -@@ -46,6 +46,8 @@ +@@ -46,6 +46,8 @@ int vfs_getattr(struct vfsmount *mnt, st if (retval) return retval; @@ -523,7 +536,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/stat.c if (inode->i_op->getattr) return inode->i_op->getattr(mnt, dentry, stat); -@@ -62,14 +64,20 @@ +@@ -62,14 +64,20 @@ int vfs_getattr(struct vfsmount *mnt, st EXPORT_SYMBOL(vfs_getattr); @@ -546,7 +559,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/stat.c path_release(&nd); } return error; -@@ -81,10 +89,11 @@ +@@ -81,10 +89,11 @@ int vfs_lstat(char __user *name, struct { struct nameidata nd; int error; @@ -560,7 +573,7 @@ Index: linux-2.6.9-22.0.2.EL/fs/stat.c path_release(&nd); } return error; -@@ -96,9 +105,12 @@ +@@ -96,9 +105,12 @@ int vfs_fstat(unsigned int fd, struct ks { struct file *f = fget(fd); int error = -EBADF; @@ -574,44 +587,9 @@ Index: linux-2.6.9-22.0.2.EL/fs/stat.c fput(f); } return error; -Index: linux-2.6.9-22.0.2.EL/fs/nfs/dir.c -=================================================================== ---- linux-2.6.9-22.0.2.EL.orig/fs/nfs/dir.c 2006-01-25 23:40:13.000000000 -0500 -+++ linux-2.6.9-22.0.2.EL/fs/nfs/dir.c 2006-01-26 18:46:32.000000000 -0500 -@@ -726,7 +726,7 @@ - return 0; - if (!nd || (nd->flags & LOOKUP_CONTINUE) || !(nd->flags & LOOKUP_CREATE)) - return 0; -- return (nd->intent.open.flags & O_EXCL) != 0; -+ return (nd->intent.it_flags & O_EXCL) != 0; - } - - static struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *nd) -@@ -1057,7 +1057,7 @@ - attr.ia_valid = ATTR_MODE; - - if (nd && (nd->flags & LOOKUP_CREATE)) -- open_flags = nd->intent.open.flags; -+ open_flags = nd->intent.it_flags; - - /* - * The 0 argument passed into the create function should one day -Index: linux-2.6.9-22.0.2.EL/fs/inode.c -=================================================================== ---- linux-2.6.9-22.0.2.EL.orig/fs/inode.c 2006-01-25 23:40:13.000000000 -0500 -+++ linux-2.6.9-22.0.2.EL/fs/inode.c 2006-01-25 23:40:55.000000000 -0500 -@@ -235,6 +235,7 @@ - inodes_stat.nr_unused--; - } - -+EXPORT_SYMBOL(__iget); - /** - * clear_inode - clear an inode - * @inode: inode to clear -Index: linux-2.6.9-22.0.2.EL/include/linux/dcache.h -=================================================================== ---- linux-2.6.9-22.0.2.EL.orig/include/linux/dcache.h 2006-01-25 23:40:13.000000000 -0500 -+++ linux-2.6.9-22.0.2.EL/include/linux/dcache.h 2006-01-26 18:46:32.000000000 -0500 +diff -urp a/include/linux/dcache.h b/include/linux/dcache.h +--- a/include/linux/dcache.h 2006-03-10 15:00:02.000000000 -0800 ++++ b/include/linux/dcache.h 2006-03-10 17:01:52.000000000 -0800 @@ -4,6 +4,7 @@ #ifdef __KERNEL__ @@ -620,7 +598,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/dcache.h #include #include #include -@@ -37,6 +38,8 @@ +@@ -37,6 +38,8 @@ struct qstr { const unsigned char *name; }; @@ -629,11 +607,10 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/dcache.h struct dentry_stat_t { int nr_dentry; int nr_unused; -Index: linux-2.6.9-22.0.2.EL/include/linux/fs.h -=================================================================== ---- linux-2.6.9-22.0.2.EL.orig/include/linux/fs.h 2006-01-25 23:40:13.000000000 -0500 -+++ linux-2.6.9-22.0.2.EL/include/linux/fs.h 2006-01-26 18:46:33.000000000 -0500 -@@ -75,6 +75,7 @@ +diff -urp a/include/linux/fs.h b/include/linux/fs.h +--- a/include/linux/fs.h 2006-03-10 15:00:02.000000000 -0800 ++++ b/include/linux/fs.h 2006-03-10 17:05:51.000000000 -0800 +@@ -75,6 +75,7 @@ extern int leases_enable, dir_notify_ena #define FMODE_READ 1 #define FMODE_WRITE 2 @@ -641,7 +618,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/fs.h /* Internal kernel extensions */ #define FMODE_LSEEK 4 -@@ -259,6 +260,8 @@ +@@ -259,6 +260,8 @@ typedef void (dio_iodone_t)(struct inode #define ATTR_ATTR_FLAG 1024 #define ATTR_KILL_SUID 2048 #define ATTR_KILL_SGID 4096 @@ -650,7 +627,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/fs.h /* * This is the Inode Attributes structure, used for notify_change(). It -@@ -457,6 +460,7 @@ +@@ -457,6 +460,7 @@ struct inode { struct block_device *i_bdev; struct cdev *i_cdev; int i_cindex; @@ -658,7 +635,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/fs.h __u32 i_generation; -@@ -590,6 +594,7 @@ +@@ -590,6 +594,7 @@ struct file { spinlock_t f_ep_lock; #endif /* #ifdef CONFIG_EPOLL */ struct address_space *f_mapping; @@ -666,7 +643,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/fs.h }; extern spinlock_t files_lock; #define file_list_lock() spin_lock(&files_lock); -@@ -960,7 +965,9 @@ +@@ -962,7 +967,9 @@ struct inode_operations { void (*truncate) (struct inode *); int (*permission) (struct inode *, int, struct nameidata *); int (*setattr) (struct dentry *, struct iattr *); @@ -676,7 +653,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/fs.h int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); ssize_t (*listxattr) (struct dentry *, char *, size_t); -@@ -1000,6 +1007,7 @@ +@@ -1002,6 +1009,7 @@ struct super_operations { int (*remount_fs) (struct super_block *, int *, char *); void (*clear_inode) (struct inode *); void (*umount_begin) (struct super_block *); @@ -684,7 +661,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/fs.h int (*show_options)(struct seq_file *, struct vfsmount *); }; -@@ -1192,6 +1200,7 @@ +@@ -1194,6 +1202,7 @@ extern int unregister_filesystem(struct extern struct vfsmount *kern_mount(struct file_system_type *); extern int may_umount_tree(struct vfsmount *); extern int may_umount(struct vfsmount *); @@ -692,7 +669,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/fs.h extern long do_mount(char *, char *, char *, unsigned long, void *); extern int vfs_statfs(struct super_block *, struct kstatfs *); -@@ -1256,6 +1265,7 @@ +@@ -1258,6 +1267,7 @@ static inline int break_lease(struct ino extern int do_truncate(struct dentry *, loff_t start); extern struct file *filp_open(const char *, int, int); extern struct file * dentry_open(struct dentry *, struct vfsmount *, int); @@ -700,10 +677,21 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/fs.h extern int filp_close(struct file *, fl_owner_t id); extern char * getname(const char __user *); -Index: linux-2.6.9-22.0.2.EL/include/linux/namei.h -=================================================================== ---- linux-2.6.9-22.0.2.EL.orig/include/linux/namei.h 2006-01-25 23:40:13.000000000 -0500 -+++ linux-2.6.9-22.0.2.EL/include/linux/namei.h 2006-01-25 23:40:55.000000000 -0500 +diff -urp a/include/linux/mount.h b/include/linux/mount.h +--- a/include/linux/mount.h 2006-03-10 15:00:03.000000000 -0800 ++++ b/include/linux/mount.h 2006-03-10 15:00:03.000000000 -0800 +@@ -34,6 +34,8 @@ struct vfsmount + struct list_head mnt_list; + struct list_head mnt_fslink; /* link in fs-specific expiry list */ + struct namespace *mnt_namespace; /* containing namespace */ ++ struct list_head mnt_lustre_list; /* GNS mount list */ ++ unsigned long mnt_last_used; /* for GNS auto-umount (jiffies) */ + }; + + static inline struct vfsmount *mntget(struct vfsmount *mnt) +diff -urp a/include/linux/namei.h b/include/linux/namei.h +--- a/include/linux/namei.h 2006-03-10 15:00:03.000000000 -0800 ++++ b/include/linux/namei.h 2006-03-10 15:00:03.000000000 -0800 @@ -2,14 +2,48 @@ #define _LINUX_NAMEI_H @@ -756,7 +744,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/namei.h enum { MAX_NESTED_LINKS = 8 }; struct nameidata { -@@ -21,10 +55,7 @@ +@@ -21,10 +55,7 @@ struct nameidata { unsigned depth; char *saved_names[MAX_NESTED_LINKS + 1]; @@ -768,7 +756,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/namei.h }; /* -@@ -47,6 +78,8 @@ +@@ -47,6 +78,8 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LA #define LOOKUP_NOALT 32 #define LOOKUP_ATOMIC 64 #define LOOKUP_REVAL 128 @@ -777,7 +765,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/namei.h /* * Intent data -@@ -56,6 +89,12 @@ +@@ -56,6 +89,12 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LA #define LOOKUP_ACCESS (0x0400) extern int FASTCALL(__user_walk(const char __user *, unsigned, struct nameidata *)); @@ -790,7 +778,7 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/namei.h #define user_path_walk(name,nd) \ __user_walk(name, LOOKUP_FOLLOW, nd) #define user_path_walk_link(name,nd) \ -@@ -68,7 +107,6 @@ +@@ -68,7 +107,6 @@ extern void path_release_on_umount(struc extern struct dentry * lookup_one_len(const char *, struct dentry *, int); extern struct dentry * lookup_hash(struct qstr *, struct dentry *); @@ -798,16 +786,3 @@ Index: linux-2.6.9-22.0.2.EL/include/linux/namei.h extern int follow_down(struct vfsmount **, struct dentry **); extern int follow_up(struct vfsmount **, struct dentry **); -Index: linux-2.6.9-22.0.2.EL/include/linux/mount.h -=================================================================== ---- linux-2.6.9-22.0.2.EL.orig/include/linux/mount.h 2006-01-25 23:40:13.000000000 -0500 -+++ linux-2.6.9-22.0.2.EL/include/linux/mount.h 2006-01-25 23:40:55.000000000 -0500 -@@ -34,6 +34,8 @@ - struct list_head mnt_list; - struct list_head mnt_fslink; /* link in fs-specific expiry list */ - struct namespace *mnt_namespace; /* containing namespace */ -+ struct list_head mnt_lustre_list; /* GNS mount list */ -+ unsigned long mnt_last_used; /* for GNS auto-umount (jiffies) */ - }; - - static inline struct vfsmount *mntget(struct vfsmount *mnt) diff --git a/lustre/kernel_patches/patches/vfs_nointent-2.6-rhel4.patch b/lustre/kernel_patches/patches/vfs_nointent-2.6-rhel4.patch index 173689a..c0e0c3d 100644 --- a/lustre/kernel_patches/patches/vfs_nointent-2.6-rhel4.patch +++ b/lustre/kernel_patches/patches/vfs_nointent-2.6-rhel4.patch @@ -325,7 +325,7 @@ Index: linux-2.6.9-5.0.3.EL/fs/open.c + newattrs.ia_valid = ATTR_MODE | ATTR_CTIME; + newattrs.ia_valid |= ATTR_RAW; + error = op->setattr_raw(inode, &newattrs); -+ /* the file system wants to use normal vfs path now */ ++ /* the file system wants to use the normal vfs path now */ + if (error != -EOPNOTSUPP) + goto out; + } diff --git a/lustre/kernel_patches/patches/vfs_nointent-2.6-suse.patch b/lustre/kernel_patches/patches/vfs_nointent-2.6-suse.patch index 8817678..184fa49 100644 --- a/lustre/kernel_patches/patches/vfs_nointent-2.6-suse.patch +++ b/lustre/kernel_patches/patches/vfs_nointent-2.6-suse.patch @@ -304,7 +304,7 @@ Index: linux-2.6.5-12.1/fs/open.c + + if (inode->i_op->setattr_raw) { + struct inode_operations *op = dentry->d_inode->i_op; -+ ++ + newattrs.ia_mode = mode; + newattrs.ia_valid = ATTR_MODE | ATTR_CTIME; + newattrs.ia_valid |= ATTR_RAW; diff --git a/lustre/kernel_patches/series/2.6-rhel4.series b/lustre/kernel_patches/series/2.6-rhel4.series index 8374bbc..6053eb7 100644 --- a/lustre/kernel_patches/series/2.6-rhel4.series +++ b/lustre/kernel_patches/series/2.6-rhel4.series @@ -8,7 +8,7 @@ iopen-misc-2.6-suse.patch export-truncate-2.6-suse.patch export_symbols-2.6-rhel4.patch dev_read_only-2.6-suse.patch -export-2.6-suse.patch +export-log-2.6-rhel4.patch lookup_bdev_init_intent.patch remove-suid-2.6-suse.patch export-show_task-2.6-vanilla.patch diff --git a/lustre/kernel_patches/targets/2.6-rhel4.target.in b/lustre/kernel_patches/targets/2.6-rhel4.target.in index db5c9fa..b89f5a8 100644 --- a/lustre/kernel_patches/targets/2.6-rhel4.target.in +++ b/lustre/kernel_patches/targets/2.6-rhel4.target.in @@ -1,5 +1,5 @@ lnxmaj="2.6.9" -lnxrel="22.0.2.EL" +lnxrel="34.EL" KERNEL=linux-${lnxmaj}-${lnxrel}.tar.bz2 SERIES=2.6-rhel4.series diff --git a/lustre/ldlm/ldlm_lock.c b/lustre/ldlm/ldlm_lock.c index 0dab5b9..ba6f7b4 100644 --- a/lustre/ldlm/ldlm_lock.c +++ b/lustre/ldlm/ldlm_lock.c @@ -745,6 +745,10 @@ int ldlm_lock_match(struct ldlm_namespace *ns, int flags, LDLM_FL_WAIT_NOREPROC, NULL); if (err) { + if (flags & LDLM_FL_TEST_LOCK) + LDLM_LOCK_PUT(lock); + else + ldlm_lock_decref_internal(lock, mode); rc = 0; goto out2; } diff --git a/lustre/liblustre/llite_lib.c b/lustre/liblustre/llite_lib.c index b8450b8..72b1c44 100644 --- a/lustre/liblustre/llite_lib.c +++ b/lustre/liblustre/llite_lib.c @@ -126,6 +126,7 @@ int liblustre_process_log(struct config_llog_instance *cfg, if (ocd == NULL) GOTO(out_cleanup, rc = -ENOMEM); + ocd->ocd_connect_flags = OBD_CONNECT_VERSION; ocd->ocd_version = LUSTRE_VERSION_CODE; /* Disable initial recovery on this import */ diff --git a/lustre/liblustre/rw.c b/lustre/liblustre/rw.c index 1f60bd5..244271b 100644 --- a/lustre/liblustre/rw.c +++ b/lustre/liblustre/rw.c @@ -797,19 +797,8 @@ int llu_iop_read(struct inode *ino, int llu_iop_write(struct inode *ino, struct ioctx *ioctx) { - struct iattr iattr; - int rc; - - memset(&iattr, 0, sizeof(iattr)); - iattr.ia_mtime = iattr.ia_atime = CURRENT_TIME; - iattr.ia_valid = ATTR_MTIME | ATTR_ATIME | ATTR_RAW; - - liblustre_wait_event(0); - rc = llu_setattr_raw(ino, &iattr); - if (rc) { - CERROR("failed to set mtime/atime during write: %d", rc); - /* XXX should continue or return error? */ - } + struct intnl_stat *st = llu_i2stat(ino); + st->st_mtime = st->st_ctime = CURRENT_TIME; return llu_file_rwx(ino, ioctx, 0); } diff --git a/lustre/liblustre/tests/sanity.c b/lustre/liblustre/tests/sanity.c index 566a4c9..bd3c04f 100644 --- a/lustre/liblustre/tests/sanity.c +++ b/lustre/liblustre/tests/sanity.c @@ -468,7 +468,7 @@ int t18(char *name) char buf[128]; int fd, i; struct stat statbuf[3]; - ENTRY("write should change mtime/atime"); + ENTRY("write should change mtime/ctime"); snprintf(file, MAX_PATH_LENGTH, "%s/test_t18_file", lustre_path); for (i = 0; i < 3; i++) { @@ -486,13 +486,13 @@ int t18(char *name) printf("Error stat\n"); return(1); } - printf("atime %lu, mtime %lu\n", - statbuf[i].st_atime, statbuf[i].st_mtime); + printf("ctime %lu, mtime %lu\n", + statbuf[i].st_ctime, statbuf[i].st_mtime); sleep(2); } for (i = 1; i < 3; i++) { - if ((statbuf[i].st_atime <= statbuf[i-1].st_atime) || + if ((statbuf[i].st_ctime <= statbuf[i-1].st_ctime) || (statbuf[i].st_mtime <= statbuf[i-1].st_mtime)) { printf("time error\n"); return(-1); diff --git a/lustre/tests/conf-sanity.sh b/lustre/tests/conf-sanity.sh index b9fab27..577aba3 100644 --- a/lustre/tests/conf-sanity.sh +++ b/lustre/tests/conf-sanity.sh @@ -10,7 +10,7 @@ set -e ONLY=${ONLY:-"$*"} -# bug number for skipped test: +# bug number for skipped test: ALWAYS_EXCEPT=" $CONF_SANITY_EXCEPT" # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT! @@ -267,7 +267,7 @@ test_5d() { [ -d $MOUNT ] || mkdir -p $MOUNT $LCONF --nosetup --node client_facet $XMLCONFIG > /dev/null - llmount -o nettype=$NETTYPE,$MOUNTOPT `facet_nid mds`://mds_svc/client_facet $MOUNT || return 1 + llmount -o nettype=$NETTYPE,$MOUNTOPT `facet_nid mds`://mds_svc/client_facet $MOUNT || return 1 umount_client $MOUNT || return 2 @@ -326,18 +326,18 @@ test_9() { start_mds mount_client $MOUNT CHECK_PTLDEBUG="`do_facet mds sysctl lnet.debug | sed -e 's/.* = //'`" - if [ "$CHECK_PTLDEBUG" = "1" ]; then + if [ "$CHECK_PTLDEBUG" ] && [ $CHECK_PTLDEBUG -eq 1 ]; then echo "lmc --debug success" else echo "lmc --debug: want 1, have $CHECK_PTLDEBUG" return 1 fi # again with the pdsh prefix - CHECK_SUBSYSTEM="`do_facet mds sysctl lnet.subsystem_debug | cut -d= -f2`" - if [ "$CHECK_SUBSYSTEM" = "2" ]; then + CHECK_SUBSYS="`do_facet mds sysctl lnet.subsystem_debug|cut -d= -f2`" + if [ "$CHECK_SUBSYS" ] && [ $CHECK_SUBSYS -eq 2 ]; then echo "lmc --subsystem success" else - echo "lmc --subsystem: want 2, have $CHECK_SUBSYSTEM" + echo "lmc --subsystem: want 2, have $CHECK_SUBSYS" return 1 fi check_mount || return 41 @@ -351,14 +351,14 @@ test_9() { start_ost start_mds CHECK_PTLDEBUG="`do_facet mds sysctl lnet.debug | cut -d= -f2`" - if [ $CHECK_PTLDEBUG = "3" ]; then + if [ "$CHECK_PTLDEBUG" ] && [ $CHECK_PTLDEBUG -eq 3 ]; then echo "lconf --debug success" else echo "lconf --debug: want 3, have $CHECK_PTLDEBUG" return 1 fi CHECK_SUBSYS="`do_facet mds sysctl lnet.subsystem_debug | cut -d= -f2`" - if [ $CHECK_SUBSYS = "20" ]; then + if [ "$CHECK_SUBSYS" ] && [ $CHECK_SUBSYS -eq 20 ]; then echo "lconf --subsystem success" else echo "lconf --subsystem: want 20, have $CHECK_SUBSYS" @@ -639,7 +639,7 @@ run_test 15 "zconf-mount without /sbin/mount.lustre (should return error)" test_16() { TMPMTPT="/mnt/conf16" - + if [ ! -f "$MDSDEV" ]; then echo "no $MDSDEV existing, so mount Lustre to create one" start_ost @@ -648,7 +648,7 @@ test_16() { check_mount || return 41 cleanup || return $? fi - + echo "change the mode of $MDSDEV/OBJECTS,LOGS,PENDING to 555" do_facet mds "[ -d $TMPMTPT ] || mkdir -p $TMPMTPT; mount -o loop -t ext3 $MDSDEV $TMPMTPT || return \$?; @@ -661,30 +661,30 @@ test_16() { mount_client $MOUNT check_mount || return 41 cleanup || return $? - + echo "read the mode of OBJECTS/LOGS/PENDING and check if they has been changed properly" - EXPECTEDOBJECTSMODE=`do_facet mds "debugfs -R 'stat OBJECTS' $MDSDEV 2> /dev/null" | awk '/Mode: /{print $NF}'` - EXPECTEDLOGSMODE=`do_facet mds "debugfs -R 'stat LOGS' $MDSDEV 2> /dev/null" | awk '/Mode: /{print $NF}'` - EXPECTEDPENDINGMODE=`do_facet mds "debugfs -R 'stat PENDING' $MDSDEV 2> /dev/null" | awk '/Mode: /{print $NF}'` + EXPECTEDOBJECTSMODE=`do_facet mds "debugfs -R 'stat OBJECTS' $MDSDEV 2> /dev/null" | grep 'Mode: ' | sed -e "s/.*Mode: *//" -e "s/ *Flags:.*//"` + EXPECTEDLOGSMODE=`do_facet mds "debugfs -R 'stat LOGS' $MDSDEV 2> /dev/null" | grep 'Mode: ' | sed -e "s/.*Mode: *//" -e "s/ *Flags:.*//"` + EXPECTEDPENDINGMODE=`do_facet mds "debugfs -R 'stat PENDING' $MDSDEV 2> /dev/null" | grep 'Mode: ' | sed -e "s/.*Mode: *//" -e "s/ *Flags:.*//"` if [ "$EXPECTEDOBJECTSMODE" = "0777" ]; then echo "Success:Lustre change the mode of OBJECTS correctly" else - echo "Error: Lustre does not change the mode of OBJECTS properly" + echo "Error: Lustre does not change mode of OBJECTS properly" return 1 fi - + if [ "$EXPECTEDLOGSMODE" = "0777" ]; then echo "Success:Lustre change the mode of LOGS correctly" else - echo "Error: Lustre does not change the mode of LOGS properly" + echo "Error: Lustre does not change mode of LOGS properly" return 1 fi - + if [ "$EXPECTEDPENDINGMODE" = "0777" ]; then echo "Success:Lustre change the mode of PENDING correctly" else - echo "Error: Lustre does not change the mode of PENDING properly" + echo "Error: Lustre does not change mode of PENDING properly" return 1 fi } @@ -717,13 +717,13 @@ test_18() { OLDMDSSIZE=$MDSSIZE MDSSIZE=2000000 gen_config - + echo "mount lustre system..." start_ost start_mds mount_client $MOUNT check_mount || return 41 - + echo "check journal size..." FOUNDJOURNALSIZE=`do_facet mds "debugfs -R 'stat <8>' $MDSDEV" | awk '/Size: / { print $NF; exit;}'` if [ "$FOUNDJOURNALSIZE" = "79691776" ]; then @@ -733,9 +733,9 @@ test_18() { echo "expected journal size: 79691776(76M), found journal size: $FOUNDJOURNALSIZE" return 1 fi - + cleanup || return $? - + MDSSIZE=$OLDMDSSIZE gen_config } diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index af5ec05..3b10909 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -554,7 +554,7 @@ pgcache_empty() { ################################## # Test interface error() { - sysctl -w lustre.fail_loc=0 || true + sysctl -w lustre.fail_loc=0 2> /dev/null || true echo "${TESTSUITE}: **** FAIL:" $@ log "FAIL: $@" exit 1