Whamcloud - gitweb
branch: b1_5
authorericm <ericm>
Wed, 15 Mar 2006 19:12:21 +0000 (19:12 +0000)
committerericm <ericm>
Wed, 15 Mar 2006 19:12:21 +0000 (19:12 +0000)
update from b1_4.

26 files changed:
ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch
ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.12.patch
ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch
lustre/ChangeLog
lustre/include/obd_class.h
lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686-smp.config
lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686.config
lustre/kernel_patches/patches/export-log-2.6-rhel4.patch [new file with mode: 0644]
lustre/kernel_patches/patches/export_symbols-2.6-rhel4.patch
lustre/kernel_patches/patches/export_symbols-2.6-suse.patch
lustre/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch
lustre/kernel_patches/patches/ext3-mballoc2-2.6.12.patch
lustre/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch
lustre/kernel_patches/patches/nfs-cifs-intent-2.6-rhel4.patch
lustre/kernel_patches/patches/tcp-zero-copy-2.6.9-rhel4.patch
lustre/kernel_patches/patches/vfs_intent-2.6-rhel4.patch
lustre/kernel_patches/patches/vfs_nointent-2.6-rhel4.patch
lustre/kernel_patches/patches/vfs_nointent-2.6-suse.patch
lustre/kernel_patches/series/2.6-rhel4.series
lustre/kernel_patches/targets/2.6-rhel4.target.in
lustre/ldlm/ldlm_lock.c
lustre/liblustre/llite_lib.c
lustre/liblustre/rw.c
lustre/liblustre/tests/sanity.c
lustre/tests/conf-sanity.sh
lustre/tests/test-framework.sh

index bb9928a..1d8a4af 100644 (file)
@@ -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);
index a2b9caf..0c2f445 100644 (file)
@@ -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);
index d12c678..5ff3d3b 100644 (file)
@@ -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;
 +      }
index 424862c..3c37955 100644 (file)
@@ -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. <info@clusterfs.com>
index 9823584..a8a9f75 100644 (file)
@@ -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);
         }
 
index 2b18f96..8629266 100644 (file)
@@ -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
index 25a3848..aad9e59 100644 (file)
@@ -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 (file)
index 0000000..5bfc154
--- /dev/null
@@ -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);
index 8d9ab40..a2b07f8 100644 (file)
@@ -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
index de1bf20..fbaf63d 100644 (file)
@@ -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);
index bb9928a..1d8a4af 100644 (file)
@@ -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);
index a2b9caf..0c2f445 100644 (file)
@@ -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);
index d12c678..5ff3d3b 100644 (file)
@@ -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;
 +      }
index 9c66a2a..4707842 100644 (file)
@@ -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 */
index c8596b6..799b89f 100644 (file)
                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);
 +      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;
        TCP_CHECK_TIMER(sk);
        release_sock(sk);
        return res;
-@@ -1528,6 +1578,202 @@
+@@ -1528,6 +1578,194 @@
        goto out;
  }
  
 +
 +              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 ||
 +                                              offset++;
 +                                              used--;
 +                                      }
-+                              } else          /* truncate read */
++                              } else {                /* truncate read */
 +                                      used = urg_offset;
++                              }
 +                      }
 +              }
 +
 +              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;
 +              if (!exhausted)
 +                      continue;
 +
-+              if (skb->h.th->fin)
-+              {
++              if (skb->h.th->fin) {
 +                      tp->copied_seq++;
 +                      if (!eaten)
 +                              sk_eat_skb (sk, skb);
index 75d587e..674e6c1 100644 (file)
@@ -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 <linux/list.h>
  #include <linux/spinlock.h>
  #include <linux/cache.h>
-@@ -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)
index 173689a..c0e0c3d 100644 (file)
@@ -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;
 +      }
index 8817678..184fa49 100644 (file)
@@ -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;
index 8374bbc..6053eb7 100644 (file)
@@ -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
index db5c9fa..b89f5a8 100644 (file)
@@ -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
index 0dab5b9..ba6f7b4 100644 (file)
@@ -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;
                                 }
index b8450b8..72b1c44 100644 (file)
@@ -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 */
index 1f60bd5..244271b 100644 (file)
@@ -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);
 }
index 566a4c9..bd3c04f 100644 (file)
@@ -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);
index b9fab27..577aba3 100644 (file)
@@ -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
 }
index af5ec05..3b10909 100644 (file)
@@ -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