Whamcloud - gitweb
Branch b1_8
authoryangsheng <yangsheng>
Thu, 2 Jul 2009 03:48:40 +0000 (03:48 +0000)
committeryangsheng <yangsheng>
Thu, 2 Jul 2009 03:48:40 +0000 (03:48 +0000)
b=19846

i=shadow, johann

Update kernel to 2.6.18-128.1.14.el5.

lustre/ChangeLog
lustre/kernel_patches/patches/i_filter_data.patch
lustre/kernel_patches/patches/jbd-journal-chksum-2.6.18-vanilla.patch
lustre/kernel_patches/patches/jbd-stats-2.6-rhel5.patch
lustre/kernel_patches/patches/md-mmp-unplug-dev.patch
lustre/kernel_patches/patches/md-rebuild-policy.patch
lustre/kernel_patches/patches/quota-large-limits-rhel5.patch
lustre/kernel_patches/patches/raid5-zerocopy-rhel5.patch
lustre/kernel_patches/patches/sd_iostats-2.6-rhel5.patch
lustre/kernel_patches/targets/2.6-rhel5.target.in
lustre/kernel_patches/which_patch

index c89e113..90a1a3a 100644 (file)
@@ -3,7 +3,7 @@ tbd Sun Microsystems, Inc.
        * Support for kernels:
          2.6.16.60-0.37 (SLES 10),
          2.6.27.23-0.1 (SLES11),
-         2.6.18-128.1.6.el5 (RHEL 5)
+         2.6.18-128.1.14.el5 (RHEL 5)
        * Client support for unpatched kernels:
          (see http://wiki.lustre.org/index.php?title=Patchless_Client)
          2.6.16 - 2.6.27 vanilla (kernel.org)
@@ -15,6 +15,10 @@ tbd Sun Microsystems, Inc.
          more information, please refer to bugzilla 17630.
 
 Severity   : enhancement
+Bugzilla   : 19846
+Description: Update kernel to RHEL5 2.6.18-128.1.14.el5.
+
+Severity   : enhancement
 Bugzilla   : 19848
 Description: Update kernel to SLES11 2.6.27.23-0.1.
 
index 8a21a9e..516d57f 100644 (file)
@@ -1,10 +1,10 @@
-Index: linux-2.6.18.8/include/linux/fs.h
+Index: linux-2.6.18-128.1.14/include/linux/fs.h
 ===================================================================
---- linux-2.6.18.8.orig/include/linux/fs.h     2007-06-05 12:55:19.000000000 +0200
-+++ linux-2.6.18.8/include/linux/fs.h  2007-06-05 12:55:44.000000000 +0200
-@@ -533,6 +533,7 @@ struct inode {
-       struct block_device     *i_bdev;
-       struct cdev             *i_cdev;
+--- linux-2.6.18-128.1.14.orig/include/linux/fs.h      2009-06-19 12:33:13.000000000 -0600
++++ linux-2.6.18-128.1.14/include/linux/fs.h   2009-06-19 12:33:26.000000000 -0600
+@@ -580,6 +580,7 @@
+               struct cdev             *i_cdev;
+       };
        int                     i_cindex;
 +      void                    *i_filterdata;
  
index 2dca1c1..a132395 100644 (file)
@@ -1,7 +1,7 @@
-Index: linux-2.6.18.8/fs/jbd/commit.c
+Index: linux-2.6.18-128.1.14/fs/jbd/commit.c
 ===================================================================
---- linux-2.6.18.8.orig/fs/jbd/commit.c
-+++ linux-2.6.18.8/fs/jbd/commit.c
+--- linux-2.6.18-128.1.14.orig/fs/jbd/commit.c 2009-06-19 12:34:22.000000000 -0600
++++ linux-2.6.18-128.1.14/fs/jbd/commit.c      2009-06-19 12:35:11.000000000 -0600
 @@ -22,6 +22,7 @@
  #include <linux/mm.h>
  #include <linux/pagemap.h>
@@ -10,7 +10,7 @@ Index: linux-2.6.18.8/fs/jbd/commit.c
  
  
  /*
-@@ -95,19 +96,23 @@ static int inverted_lock(journal_t *jour
+@@ -95,19 +96,23 @@
        return 1;
  }
  
@@ -38,7 +38,7 @@ Index: linux-2.6.18.8/fs/jbd/commit.c
        int barrier_done = 0;
  
        if (is_journal_aborted(journal))
-@@ -119,21 +124,35 @@ static int journal_write_commit_record(j
+@@ -119,21 +124,35 @@
  
        bh = jh2bh(descriptor);
  
@@ -83,7 +83,7 @@ Index: linux-2.6.18.8/fs/jbd/commit.c
        /* is it possible for another commit to fail at roughly
         * the same time as this one?  If so, we don't want to
         * trust the barrier flag in the super, but instead want
-@@ -154,12 +173,70 @@ static int journal_write_commit_record(j
+@@ -154,12 +173,70 @@
                clear_buffer_ordered(bh);
                set_buffer_uptodate(bh);
                set_buffer_dirty(bh);
@@ -158,8 +158,8 @@ Index: linux-2.6.18.8/fs/jbd/commit.c
  }
  
  void journal_do_submit_data(struct buffer_head **wbuf, int bufs)
-@@ -273,6 +350,20 @@ write_out_data:
-       journal_do_submit_data(wbuf, bufs);
+@@ -282,6 +359,20 @@
+       return err;
  }
  
 +static inline __u32 jbd_checksum_data(__u32 crc32_sum, struct buffer_head *bh)
@@ -179,7 +179,7 @@ Index: linux-2.6.18.8/fs/jbd/commit.c
  /*
   * journal_commit_transaction
   *
-@@ -296,6 +387,8 @@ void journal_commit_transaction(journal_
+@@ -305,6 +396,8 @@
        int first_tag = 0;
        int tag_flag;
        int i;
@@ -188,8 +188,8 @@ Index: linux-2.6.18.8/fs/jbd/commit.c
  
        /*
         * First job: lock down the current transaction and wait for
-@@ -439,39 +532,14 @@ void journal_commit_transaction(journal_
-       journal_submit_data_buffers(journal, commit_transaction);
+@@ -431,39 +524,14 @@
+       err = journal_submit_data_buffers(journal, commit_transaction);
  
        /*
 -       * Wait for all previously submitted IO to complete.
@@ -234,7 +234,7 @@ Index: linux-2.6.18.8/fs/jbd/commit.c
        spin_unlock(&journal->j_list_lock);
  
        if (err)
-@@ -643,6 +712,16 @@ void journal_commit_transaction(journal_
+@@ -642,6 +710,16 @@
  start_journal_io:
                        for (i = 0; i < bufs; i++) {
                                struct buffer_head *bh = wbuf[i];
@@ -251,7 +251,7 @@ Index: linux-2.6.18.8/fs/jbd/commit.c
                                lock_buffer(bh);
                                clear_buffer_dirty(bh);
                                set_buffer_uptodate(bh);
-@@ -659,6 +738,23 @@ start_journal_io:
+@@ -658,6 +736,23 @@
                }
        }
  
@@ -275,8 +275,8 @@ Index: linux-2.6.18.8/fs/jbd/commit.c
        /* Lo and behold: we have just managed to send a transaction to
             the log.  Before we can commit it, wait for the IO so far to
             complete.  Control buffers being written are on the
-@@ -757,9 +853,15 @@ wait_for_iobuf:
-       }
+@@ -759,9 +854,15 @@
+               journal_abort(journal, err);
  
        jbd_debug(3, "JBD: commit phase 6\n");
 -
@@ -293,12 +293,12 @@ Index: linux-2.6.18.8/fs/jbd/commit.c
 +      err = journal_wait_on_commit_record(cbh);
  
        if (err)
-               __journal_abort_hard(journal);
-Index: linux-2.6.18.8/include/linux/jbd.h
+               journal_abort(journal, err);
+Index: linux-2.6.18-128.1.14/include/linux/jbd.h
 ===================================================================
---- linux-2.6.18.8.orig/include/linux/jbd.h
-+++ linux-2.6.18.8/include/linux/jbd.h
-@@ -148,6 +148,29 @@ typedef struct journal_header_s
+--- linux-2.6.18-128.1.14.orig/include/linux/jbd.h     2009-06-19 12:34:22.000000000 -0600
++++ linux-2.6.18-128.1.14/include/linux/jbd.h  2009-06-19 12:35:11.000000000 -0600
+@@ -148,6 +148,29 @@
        __be32          h_sequence;
  } journal_header_t;
  
@@ -328,7 +328,7 @@ Index: linux-2.6.18.8/include/linux/jbd.h
  
  /* 
   * The block tag: used to describe a single buffer in the journal 
-@@ -234,12 +257,16 @@ typedef struct journal_superblock_s
+@@ -234,12 +257,16 @@
        ((j)->j_format_version >= 2 &&                                  \
         ((j)->j_superblock->s_feature_incompat & cpu_to_be32((mask))))
  
@@ -348,7 +348,7 @@ Index: linux-2.6.18.8/include/linux/jbd.h
  
  #ifdef __KERNEL__
  
-@@ -1053,6 +1080,8 @@ extern int          journal_check_available_fe
+@@ -1053,6 +1080,8 @@
                   (journal_t *, unsigned long, unsigned long, unsigned long);
  extern int       journal_set_features 
                   (journal_t *, unsigned long, unsigned long, unsigned long);
@@ -356,11 +356,11 @@ Index: linux-2.6.18.8/include/linux/jbd.h
 +                 (journal_t *, unsigned long, unsigned long, unsigned long);
  extern int       journal_create     (journal_t *);
  extern int       journal_load       (journal_t *journal);
- extern void      journal_destroy    (journal_t *);
-Index: linux-2.6.18.8/fs/jbd/recovery.c
+ #ifndef __GENKSYMS__
+Index: linux-2.6.18-128.1.14/fs/jbd/recovery.c
 ===================================================================
---- linux-2.6.18.8.orig/fs/jbd/recovery.c
-+++ linux-2.6.18.8/fs/jbd/recovery.c
+--- linux-2.6.18-128.1.14.orig/fs/jbd/recovery.c       2009-06-19 12:33:10.000000000 -0600
++++ linux-2.6.18-128.1.14/fs/jbd/recovery.c    2009-06-19 12:35:11.000000000 -0600
 @@ -21,6 +21,7 @@
  #include <linux/jbd.h>
  #include <linux/errno.h>
@@ -369,7 +369,7 @@ Index: linux-2.6.18.8/fs/jbd/recovery.c
  #endif
  
  /*
-@@ -307,6 +308,38 @@ int journal_skip_recovery(journal_t *jou
+@@ -310,6 +311,38 @@
        return err;
  }
  
@@ -408,7 +408,7 @@ Index: linux-2.6.18.8/fs/jbd/recovery.c
  static int do_one_pass(journal_t *journal,
                        struct recovery_info *info, enum passtype pass)
  {
-@@ -318,6 +351,7 @@ static int do_one_pass(journal_t *journa
+@@ -321,6 +354,7 @@
        struct buffer_head *    bh;
        unsigned int            sequence;
        int                     blocktype;
@@ -416,7 +416,7 @@ Index: linux-2.6.18.8/fs/jbd/recovery.c
  
        /* Precompute the maximum metadata descriptors in a descriptor block */
        int                     MAX_BLOCKS_PER_DESC;
-@@ -409,9 +443,24 @@ static int do_one_pass(journal_t *journa
+@@ -412,9 +446,24 @@
                switch(blocktype) {
                case JFS_DESCRIPTOR_BLOCK:
                        /* If it is a valid descriptor block, replay it
@@ -443,7 +443,7 @@ Index: linux-2.6.18.8/fs/jbd/recovery.c
                                next_log_block +=
                                        count_tags(bh, journal->j_blocksize);
                                wrap(journal, next_log_block);
-@@ -506,9 +555,97 @@ static int do_one_pass(journal_t *journa
+@@ -509,9 +558,97 @@
                        continue;
  
                case JFS_COMMIT_BLOCK:
@@ -543,7 +543,7 @@ Index: linux-2.6.18.8/fs/jbd/recovery.c
                        brelse(bh);
                        next_commit_ID++;
                        continue;
-@@ -544,9 +681,10 @@ static int do_one_pass(journal_t *journa
+@@ -547,9 +684,10 @@
         * transaction marks the end of the valid log.
         */
  
@@ -557,11 +557,11 @@ Index: linux-2.6.18.8/fs/jbd/recovery.c
                /* It's really bad news if different passes end up at
                 * different places (but possible due to IO errors). */
                if (info->end_transaction != next_commit_ID) {
-Index: linux-2.6.18.8/fs/jbd/journal.c
+Index: linux-2.6.18-128.1.14/fs/jbd/journal.c
 ===================================================================
---- linux-2.6.18.8.orig/fs/jbd/journal.c
-+++ linux-2.6.18.8/fs/jbd/journal.c
-@@ -67,6 +67,7 @@ EXPORT_SYMBOL(journal_update_format);
+--- linux-2.6.18-128.1.14.orig/fs/jbd/journal.c        2009-06-19 12:34:22.000000000 -0600
++++ linux-2.6.18-128.1.14/fs/jbd/journal.c     2009-06-19 12:35:11.000000000 -0600
+@@ -67,6 +67,7 @@
  EXPORT_SYMBOL(journal_check_used_features);
  EXPORT_SYMBOL(journal_check_available_features);
  EXPORT_SYMBOL(journal_set_features);
@@ -569,7 +569,7 @@ Index: linux-2.6.18.8/fs/jbd/journal.c
  EXPORT_SYMBOL(journal_create);
  EXPORT_SYMBOL(journal_load);
  EXPORT_SYMBOL(journal_destroy);
-@@ -1573,6 +1574,33 @@ int journal_set_features (journal_t *jou
+@@ -1583,6 +1584,33 @@
        return 1;
  }
  
@@ -603,11 +603,11 @@ Index: linux-2.6.18.8/fs/jbd/journal.c
  
  /**
   * int journal_update_format () - Update on-disk journal structure.
-Index: linux-2.6.18.8/fs/Kconfig
+Index: linux-2.6.18-128.1.14/fs/Kconfig
 ===================================================================
---- linux-2.6.18.8.orig/fs/Kconfig
-+++ linux-2.6.18.8/fs/Kconfig
-@@ -140,6 +140,7 @@ config EXT3_FS_SECURITY
+--- linux-2.6.18-128.1.14.orig/fs/Kconfig      2009-06-19 12:33:10.000000000 -0600
++++ linux-2.6.18-128.1.14/fs/Kconfig   2009-06-19 12:35:11.000000000 -0600
+@@ -206,6 +206,7 @@
  
  config JBD
        tristate
@@ -615,11 +615,11 @@ Index: linux-2.6.18.8/fs/Kconfig
        help
          This is a generic journaling layer for block devices.  It is
          currently used by the ext3 and OCFS2 file systems, but it could
-Index: linux-2.6.18.8/Documentation/filesystems/ext3.txt
+Index: linux-2.6.18-128.1.14/Documentation/filesystems/ext3.txt
 ===================================================================
---- linux-2.6.18.8.orig/Documentation/filesystems/ext3.txt
-+++ linux-2.6.18.8/Documentation/filesystems/ext3.txt
-@@ -14,6 +14,16 @@ Options
+--- linux-2.6.18-128.1.14.orig/Documentation/filesystems/ext3.txt      2009-06-19 12:33:10.000000000 -0600
++++ linux-2.6.18-128.1.14/Documentation/filesystems/ext3.txt   2009-06-19 12:35:11.000000000 -0600
+@@ -14,6 +14,16 @@
  When mounting an ext3 filesystem, the following option are accepted:
  (*) == default
  
index c770722..e3de36f 100644 (file)
@@ -1,8 +1,8 @@
-Index: linux-2.6.18-8.1.8/include/linux/jbd.h
+Index: linux-2.6.18-128.1.14/include/linux/jbd.h
 ===================================================================
---- linux-2.6.18-8.1.8.orig/include/linux/jbd.h        2007-08-28 22:22:10.000000000 +0200
-+++ linux-2.6.18-8.1.8/include/linux/jbd.h     2007-08-28 22:22:29.000000000 +0200
-@@ -455,6 +455,16 @@ struct handle_s 
+--- linux-2.6.18-128.1.14.orig/include/linux/jbd.h     2009-06-19 12:33:38.000000000 -0600
++++ linux-2.6.18-128.1.14/include/linux/jbd.h  2009-06-19 12:34:22.000000000 -0600
+@@ -428,6 +428,16 @@
  };
  
  
@@ -19,7 +19,7 @@ Index: linux-2.6.18-8.1.8/include/linux/jbd.h
  /* The transaction_t type is the guts of the journaling mechanism.  It
   * tracks a compound transaction through its various states:
   *
-@@ -592,6 +602,21 @@ struct transaction_s 
+@@ -565,6 +575,21 @@
        spinlock_t              t_handle_lock;
  
        /*
@@ -41,7 +41,7 @@ Index: linux-2.6.18-8.1.8/include/linux/jbd.h
         * Number of outstanding updates running on this transaction
         * [t_handle_lock]
         */
-@@ -631,6 +656,57 @@ struct transaction_s 
+@@ -604,6 +629,57 @@
        struct list_head        t_jcb;
  };
  
@@ -99,7 +99,7 @@ Index: linux-2.6.18-8.1.8/include/linux/jbd.h
  /**
   * struct journal_s - The journal_s type is the concrete type associated with
   *     journal_t.
-@@ -884,6 +960,16 @@ struct journal_s
+@@ -857,6 +933,16 @@
        pid_t                   j_last_sync_writer;
  
        /*
@@ -116,11 +116,11 @@ Index: linux-2.6.18-8.1.8/include/linux/jbd.h
         * An opaque pointer to fs-private information.  ext3 puts its
         * superblock pointer here
         */
-Index: linux-2.6.18-8.1.8/fs/jbd/transaction.c
+Index: linux-2.6.18-128.1.14/fs/jbd/transaction.c
 ===================================================================
---- linux-2.6.18-8.1.8.orig/fs/jbd/transaction.c       2007-08-28 22:22:10.000000000 +0200
-+++ linux-2.6.18-8.1.8/fs/jbd/transaction.c    2007-08-28 22:22:29.000000000 +0200
-@@ -60,6 +60,8 @@ get_transaction(journal_t *journal, tran
+--- linux-2.6.18-128.1.14.orig/fs/jbd/transaction.c    2009-06-19 12:33:38.000000000 -0600
++++ linux-2.6.18-128.1.14/fs/jbd/transaction.c 2009-06-19 12:34:22.000000000 -0600
+@@ -60,6 +60,8 @@
  
        J_ASSERT(journal->j_running_transaction == NULL);
        journal->j_running_transaction = transaction;
@@ -129,7 +129,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/transaction.c
  
        return transaction;
  }
-@@ -86,6 +88,7 @@ static int start_this_handle(journal_t *
+@@ -86,6 +88,7 @@
        int nblocks = handle->h_buffer_credits;
        transaction_t *new_transaction = NULL;
        int ret = 0;
@@ -137,7 +137,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/transaction.c
  
        if (nblocks > journal->j_max_transaction_buffers) {
                printk(KERN_ERR "JBD: %s wants too many credits (%d > %d)\n",
-@@ -219,6 +222,12 @@ repeat_locked:
+@@ -219,6 +222,12 @@
        /* OK, account for the buffers that this operation expects to
         * use and add the handle to the running transaction. */
  
@@ -150,10 +150,10 @@ Index: linux-2.6.18-8.1.8/fs/jbd/transaction.c
        handle->h_transaction = transaction;
        transaction->t_outstanding_credits += nblocks;
        transaction->t_updates++;
-Index: linux-2.6.18-8.1.8/fs/jbd/journal.c
+Index: linux-2.6.18-128.1.14/fs/jbd/journal.c
 ===================================================================
---- linux-2.6.18-8.1.8.orig/fs/jbd/journal.c   2007-08-28 22:22:10.000000000 +0200
-+++ linux-2.6.18-8.1.8/fs/jbd/journal.c        2007-08-28 22:22:29.000000000 +0200
+--- linux-2.6.18-128.1.14.orig/fs/jbd/journal.c        2009-06-19 12:33:58.000000000 -0600
++++ linux-2.6.18-128.1.14/fs/jbd/journal.c     2009-06-19 12:34:22.000000000 -0600
 @@ -36,6 +36,7 @@
  #include <linux/kthread.h>
  #include <linux/poison.h>
@@ -162,7 +162,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/journal.c
  
  #include <asm/uaccess.h>
  #include <asm/page.h>
-@@ -639,6 +640,300 @@ struct journal_head *journal_get_descrip
+@@ -638,6 +639,300 @@
        return journal_add_journal_head(bh);
  }
  
@@ -463,7 +463,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/journal.c
  /*
   * Management for journal control blocks: functions to create and
   * destroy journal_t structures, and to initialise and read existing
-@@ -681,6 +976,9 @@ static journal_t * journal_init_common (
+@@ -680,6 +975,9 @@
                kfree(journal);
                goto fail;
        }
@@ -473,7 +473,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/journal.c
        return journal;
  fail:
        return NULL;
-@@ -724,6 +1022,7 @@ journal_t * journal_init_dev(struct bloc
+@@ -723,6 +1021,7 @@
        journal->j_blk_offset = start;
        journal->j_maxlen = len;
        journal->j_blocksize = blocksize;
@@ -481,7 +481,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/journal.c
  
        bh = __getblk(journal->j_dev, start, journal->j_blocksize);
        J_ASSERT(bh != NULL);
-@@ -773,6 +1072,7 @@ journal_t * journal_init_inode (struct i
+@@ -772,6 +1071,7 @@
  
        journal->j_maxlen = inode->i_size >> inode->i_sb->s_blocksize_bits;
        journal->j_blocksize = inode->i_sb->s_blocksize;
@@ -489,7 +489,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/journal.c
  
        /* journal descriptor can store up to n blocks -bzzz */
        n = journal->j_blocksize / sizeof(journal_block_tag_t);
-@@ -1161,6 +1461,8 @@ void journal_destroy(journal_t *journal)
+@@ -1168,6 +1468,8 @@
                brelse(journal->j_sb_buffer);
        }
  
@@ -498,7 +498,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/journal.c
        if (journal->j_inode)
                iput(journal->j_inode);
        if (journal->j_revoke)
-@@ -2027,6 +2329,28 @@ static void __exit remove_jbd_proc_entry
+@@ -2015,6 +2317,28 @@
  
  #endif
  
@@ -527,7 +527,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/journal.c
  kmem_cache_t *jbd_handle_cache;
  
  static int __init journal_init_handle_cache(void)
-@@ -2090,6 +2414,7 @@ static int __init journal_init(void)
+@@ -2078,6 +2402,7 @@
        if (ret != 0)
                journal_destroy_caches();
        create_jbd_proc_entry();
@@ -535,7 +535,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/journal.c
        return ret;
  }
  
-@@ -2101,6 +2426,7 @@ static void __exit journal_exit(void)
+@@ -2089,6 +2414,7 @@
                printk(KERN_EMERG "JBD: leaked %d journal_heads!\n", n);
  #endif
        remove_jbd_proc_entry();
@@ -543,11 +543,11 @@ Index: linux-2.6.18-8.1.8/fs/jbd/journal.c
        journal_destroy_caches();
  }
  
-Index: linux-2.6.18-8.1.8/fs/jbd/checkpoint.c
+Index: linux-2.6.18-128.1.14/fs/jbd/checkpoint.c
 ===================================================================
---- linux-2.6.18-8.1.8.orig/fs/jbd/checkpoint.c        2007-08-28 22:22:10.000000000 +0200
-+++ linux-2.6.18-8.1.8/fs/jbd/checkpoint.c     2007-08-28 22:23:23.000000000 +0200
-@@ -231,7 +231,7 @@ __flush_batch(journal_t *journal, struct
+--- linux-2.6.18-128.1.14.orig/fs/jbd/checkpoint.c     2009-06-19 12:33:38.000000000 -0600
++++ linux-2.6.18-128.1.14/fs/jbd/checkpoint.c  2009-06-19 12:34:22.000000000 -0600
+@@ -242,7 +242,7 @@
   * Called under jbd_lock_bh_state(jh2bh(jh)), and drops it
   */
  static int __process_buffer(journal_t *journal, struct journal_head *jh,
@@ -556,7 +556,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/checkpoint.c
  {
        struct buffer_head *bh = jh2bh(jh);
        int ret = 0;
-@@ -249,6 +249,7 @@ static int __process_buffer(journal_t *j
+@@ -260,6 +260,7 @@
                transaction_t *t = jh->b_transaction;
                tid_t tid = t->t_tid;
  
@@ -564,7 +564,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/checkpoint.c
                spin_unlock(&journal->j_list_lock);
                jbd_unlock_bh_state(bh);
                log_start_commit(journal, tid);
-@@ -278,6 +279,7 @@ static int __process_buffer(journal_t *j
+@@ -291,6 +292,7 @@
                bhs[*batch_count] = bh;
                __buffer_relink_io(jh);
                jbd_unlock_bh_state(bh);
@@ -572,7 +572,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/checkpoint.c
                (*batch_count)++;
                if (*batch_count == NR_BATCH) {
                        spin_unlock(&journal->j_list_lock);
-@@ -321,6 +323,8 @@ int log_do_checkpoint(journal_t *journal
+@@ -336,6 +338,8 @@
        if (!journal->j_checkpoint_transactions)
                goto out;
        transaction = journal->j_checkpoint_transactions;
@@ -581,17 +581,17 @@ Index: linux-2.6.18-8.1.8/fs/jbd/checkpoint.c
        this_tid = transaction->t_tid;
  restart:
        /*
-@@ -345,7 +349,8 @@ restart:
+@@ -360,7 +364,8 @@
                                retry = 1;
                                break;
                        }
 -                      retry = __process_buffer(journal, jh, bhs,&batch_count);
 +                      retry = __process_buffer(journal, jh, bhs,&batch_count,
 +                                               transaction);
-                       if (retry < 0 && !result)
-                               result = retry;
-                       if (!retry && lock_need_resched(&journal->j_list_lock)){
-@@ -667,6 +672,8 @@ void __journal_insert_checkpoint(struct 
+                       if (retry < 0 && !result)
+                               result = retry;
+                       if (!retry && lock_need_resched(&journal->j_list_lock)){
+@@ -692,6 +697,8 @@
  
  void __journal_drop_transaction(journal_t *journal, transaction_t *transaction)
  {
@@ -600,7 +600,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/checkpoint.c
        assert_spin_locked(&journal->j_list_lock);
        if (transaction->t_cpnext) {
                transaction->t_cpnext->t_cpprev = transaction->t_cpprev;
-@@ -693,5 +700,25 @@ void __journal_drop_transaction(journal_
+@@ -718,5 +725,25 @@
        J_ASSERT(journal->j_running_transaction != transaction);
  
        jbd_debug(1, "Dropping transaction %d, all done\n", transaction->t_tid);
@@ -626,10 +626,10 @@ Index: linux-2.6.18-8.1.8/fs/jbd/checkpoint.c
 +
        kfree(transaction);
  }
-Index: linux-2.6.18-8.1.8/fs/jbd/commit.c
+Index: linux-2.6.18-128.1.14/fs/jbd/commit.c
 ===================================================================
---- linux-2.6.18-8.1.8.orig/fs/jbd/commit.c    2007-08-28 22:22:10.000000000 +0200
-+++ linux-2.6.18-8.1.8/fs/jbd/commit.c 2007-08-28 22:22:29.000000000 +0200
+--- linux-2.6.18-128.1.14.orig/fs/jbd/commit.c 2009-06-19 12:33:38.000000000 -0600
++++ linux-2.6.18-128.1.14/fs/jbd/commit.c      2009-06-19 12:34:22.000000000 -0600
 @@ -13,6 +13,7 @@
   * part of the ext2fs journaling system.
   */
@@ -638,15 +638,15 @@ Index: linux-2.6.18-8.1.8/fs/jbd/commit.c
  #include <linux/time.h>
  #include <linux/fs.h>
  #include <linux/jbd.h>
-@@ -23,6 +24,7 @@
+@@ -22,6 +23,7 @@
+ #include <linux/pagemap.h>
  #include <linux/smp_lock.h>
- #include <linux/crc32.h>
  
 +
  /*
   * Default IO end handler for temporary BJ_IO buffer_heads.
   */
-@@ -355,6 +357,7 @@ write_out_data:
+@@ -288,6 +290,7 @@
   */
  void journal_commit_transaction(journal_t *journal)
  {
@@ -654,7 +654,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/commit.c
        transaction_t *commit_transaction;
        struct journal_head *jh, *new_jh, *descriptor;
        struct buffer_head **wbuf = journal->j_wbuf;
-@@ -403,6 +406,11 @@ void journal_commit_transaction(journal_
+@@ -334,6 +337,11 @@
        spin_lock(&journal->j_state_lock);
        commit_transaction->t_state = T_LOCKED;
  
@@ -666,7 +666,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/commit.c
        spin_lock(&commit_transaction->t_handle_lock);
        while (commit_transaction->t_updates) {
                DEFINE_WAIT(wait);
-@@ -473,6 +481,9 @@ void journal_commit_transaction(journal_
+@@ -404,6 +412,9 @@
         */
        journal_switch_revoke_table(journal);
  
@@ -676,9 +676,9 @@ Index: linux-2.6.18-8.1.8/fs/jbd/commit.c
        commit_transaction->t_state = T_FLUSH;
        journal->j_committing_transaction = commit_transaction;
        journal->j_running_transaction = NULL;
-@@ -540,6 +551,11 @@ void journal_commit_transaction(journal_
-        */
-       commit_transaction->t_state = T_COMMIT;
+@@ -484,6 +495,11 @@
+       J_ASSERT(commit_transaction->t_nr_buffers <=
+                commit_transaction->t_outstanding_credits);
  
 +      stats.ts_logging = CURRENT_MSECS;
 +      stats.ts_flushing = jbd_time_diff(stats.ts_flushing, stats.ts_logging);
@@ -688,7 +688,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/commit.c
        descriptor = NULL;
        bufs = 0;
        while (commit_transaction->t_buffers) {
-@@ -698,6 +714,7 @@ start_journal_io:
+@@ -633,6 +649,7 @@
                                submit_bh(WRITE, bh);
                        }
                        cond_resched();
@@ -696,7 +696,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/commit.c
  
                        /* Force a new descriptor to be generated next
                             time round the loop. */
-@@ -915,6 +932,7 @@ restart_loop:
+@@ -830,6 +847,7 @@
                cp_transaction = jh->b_cp_transaction;
                if (cp_transaction) {
                        JBUFFER_TRACE(jh, "remove from old cp transaction");
@@ -704,7 +704,7 @@ Index: linux-2.6.18-8.1.8/fs/jbd/commit.c
                        __journal_remove_checkpoint(jh);
                }
  
-@@ -989,6 +1007,36 @@ restart_loop:
+@@ -906,6 +924,36 @@
  
        J_ASSERT(commit_transaction->t_state == T_COMMIT);
  
@@ -741,4 +741,3 @@ Index: linux-2.6.18-8.1.8/fs/jbd/commit.c
        commit_transaction->t_state = T_FINISHED;
        J_ASSERT(commit_transaction == journal->j_committing_transaction);
        journal->j_commit_sequence = commit_transaction->t_tid;
-
index 0334abd..9397766 100644 (file)
@@ -1,8 +1,8 @@
-Index: linux-2.6.22.14/drivers/md/raid5.c
+Index: linux-2.6.18-128.1.14/drivers/md/raid5.c
 ===================================================================
---- linux-2.6.22.14.orig/drivers/md/raid5.c
-+++ linux-2.6.22.14/drivers/md/raid5.c
-@@ -1268,6 +1268,8 @@ static int add_stripe_bio(struct stripe_
+--- linux-2.6.18-128.1.14.orig/drivers/md/raid5.c      2009-06-19 12:35:07.000000000 -0600
++++ linux-2.6.18-128.1.14/drivers/md/raid5.c   2009-06-19 12:35:26.000000000 -0600
+@@ -1456,6 +1456,8 @@
                bi->bi_next = *bip;
        *bip = bi;
        bi->bi_phys_segments ++;
@@ -11,9 +11,9 @@ Index: linux-2.6.22.14/drivers/md/raid5.c
        spin_unlock_irq(&conf->device_lock);
        spin_unlock(&sh->lock);
  
-@@ -2972,6 +2974,8 @@ static int make_request(request_queue_t 
-                             test_bit(BIO_UPTODATE, &bi->bi_flags)
-                               ? 0 : -EIO);
+@@ -3012,6 +3014,8 @@
+               bi->bi_size = 0;
+               bi->bi_end_io(bi, bytes, 0);
        }
 +      if (bio_sync(bi))
 +              raid5_unplug_device(q);
index 62bb484..9d441c0 100644 (file)
@@ -1,7 +1,8 @@
-diff -pur linux-2.6.18-53.orig/drivers/md/md.c linux-2.6.18-53/drivers/md/md.c
---- linux-2.6.18-53.orig/drivers/md/md.c       2008-02-13 17:34:25.000000000 +0800
-+++ linux-2.6.18-53/drivers/md/md.c    2008-02-13 17:39:28.000000000 +0800
-@@ -90,6 +90,8 @@ static void md_print_devices(void);
+Index: linux-2.6.18-128.1.14/drivers/md/md.c
+===================================================================
+--- linux-2.6.18-128.1.14.orig/drivers/md/md.c 2009-06-19 12:33:11.000000000 -0600
++++ linux-2.6.18-128.1.14/drivers/md/md.c      2009-06-19 12:35:02.000000000 -0600
+@@ -90,6 +90,8 @@
  
  static int sysctl_speed_limit_min = 1000;
  static int sysctl_speed_limit_max = 200000;
@@ -10,7 +11,7 @@ diff -pur linux-2.6.18-53.orig/drivers/md/md.c linux-2.6.18-53/drivers/md/md.c
  static inline int speed_min(mddev_t *mddev)
  {
        return mddev->sync_speed_min ?
-@@ -121,6 +123,22 @@ static ctl_table raid_table[] = {
+@@ -121,6 +123,22 @@
                .mode           = S_IRUGO|S_IWUSR,
                .proc_handler   = &proc_dointvec,
        },
@@ -33,7 +34,7 @@ diff -pur linux-2.6.18-53.orig/drivers/md/md.c linux-2.6.18-53/drivers/md/md.c
        { .ctl_name = 0 }
  };
  
-@@ -4980,15 +4998,16 @@ static int is_mddev_idle(mddev_t *mddev)
+@@ -5009,15 +5027,16 @@
  {
        mdk_rdev_t * rdev;
        int idle;
@@ -41,8 +42,8 @@ diff -pur linux-2.6.18-53.orig/drivers/md/md.c linux-2.6.18-53/drivers/md/md.c
 +      unsigned long rw, sync;
  
        idle = 1;
-       rcu_read_lock();
-       rdev_for_each_rcu(rdev, mddev) {
+       rcu_read_lock();
+       rdev_for_each_rcu(rdev, mddev) {
                struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
 -              curr_events = disk_stat_read(disk, sectors[0]) + 
 -                              disk_stat_read(disk, sectors[1]) - 
@@ -54,7 +55,7 @@ diff -pur linux-2.6.18-53.orig/drivers/md/md.c linux-2.6.18-53/drivers/md/md.c
                /* The difference between curr_events and last_events
                 * will be affected by any new non-sync IO (making
                 * curr_events bigger) and any difference in the amount of
-@@ -5001,9 +5020,9 @@ static int is_mddev_idle(mddev_t *mddev)
+@@ -5031,9 +5050,9 @@
                 *
                 * Note: the following is an unsigned comparison.
                 */
@@ -65,8 +66,8 @@ diff -pur linux-2.6.18-53.orig/drivers/md/md.c linux-2.6.18-53/drivers/md/md.c
 +                      rdev->last_events = rw - sync;
                }
        }
-       return idle;
-@@ -5069,8 +5088,7 @@ static DECLARE_WAIT_QUEUE_HEAD(resync_wa
+       rcu_read_unlock();
+@@ -5100,8 +5119,7 @@
  void md_do_sync(mddev_t *mddev)
  {
        mddev_t *mddev2;
@@ -76,7 +77,7 @@ diff -pur linux-2.6.18-53.orig/drivers/md/md.c linux-2.6.18-53/drivers/md/md.c
        sector_t max_sectors,j, io_sectors;
        unsigned long mark[SYNC_MARKS];
        sector_t mark_cnt[SYNC_MARKS];
-@@ -5190,9 +5208,8 @@ void md_do_sync(mddev_t *mddev)
+@@ -5221,9 +5239,8 @@
        /*
         * Tune reconstruction:
         */
@@ -87,7 +88,7 @@ diff -pur linux-2.6.18-53.orig/drivers/md/md.c linux-2.6.18-53/drivers/md/md.c
  
        atomic_set(&mddev->recovery_active, 0);
        init_waitqueue_head(&mddev->recovery_wait);
-@@ -5230,7 +5247,7 @@ void md_do_sync(mddev_t *mddev)
+@@ -5261,7 +5278,7 @@
                         */
                        md_new_event(mddev);
  
@@ -96,7 +97,7 @@ diff -pur linux-2.6.18-53.orig/drivers/md/md.c linux-2.6.18-53/drivers/md/md.c
                        continue;
  
                last_check = io_sectors;
-@@ -5251,7 +5268,6 @@ void md_do_sync(mddev_t *mddev)
+@@ -5282,7 +5299,6 @@
                        last_mark = next;
                }
  
@@ -104,7 +105,7 @@ diff -pur linux-2.6.18-53.orig/drivers/md/md.c linux-2.6.18-53/drivers/md/md.c
                if (kthread_should_stop()) {
                        /*
                         * got a signal, exit.
-@@ -5275,10 +5291,16 @@ void md_do_sync(mddev_t *mddev)
+@@ -5306,10 +5322,16 @@
  
                currspeed = ((unsigned long)(io_sectors-mddev->resync_mark_cnt))/2
                        /((jiffies-mddev->resync_mark)/HZ +1) +1;
@@ -122,10 +123,11 @@ diff -pur linux-2.6.18-53.orig/drivers/md/md.c linux-2.6.18-53/drivers/md/md.c
                                msleep(500);
                                goto repeat;
                        }
-diff -pur linux-2.6.18-53.orig/include/linux/sysctl.h linux-2.6.18-53/include/linux/sysctl.h
---- linux-2.6.18-53.orig/include/linux/sysctl.h        2008-02-13 17:35:25.000000000 +0800
-+++ linux-2.6.18-53/include/linux/sysctl.h     2008-02-13 17:36:22.000000000 +0800
-@@ -903,7 +903,9 @@ enum {
+Index: linux-2.6.18-128.1.14/include/linux/sysctl.h
+===================================================================
+--- linux-2.6.18-128.1.14.orig/include/linux/sysctl.h  2009-06-19 12:33:11.000000000 -0600
++++ linux-2.6.18-128.1.14/include/linux/sysctl.h       2009-06-19 12:35:02.000000000 -0600
+@@ -928,7 +928,9 @@
  /* /proc/sys/dev/raid */
  enum {
        DEV_RAID_SPEED_LIMIT_MIN=1,
index 4f3a3bc..1f11fcc 100644 (file)
@@ -1,7 +1,8 @@
-diff -rNpu linux-2.6.16.54-0.2.5/fs/dquot.c linux-2.6.16.54-0.2.5-quota/fs/dquot.c
---- linux-2.6.16.54-0.2.5/fs/dquot.c   2008-03-18 15:48:26.000000000 +0300
-+++ linux-2.6.16.54-0.2.5-quota/fs/dquot.c     2008-03-17 22:43:11.000000000 +0300
-@@ -1588,10 +1588,19 @@ int vfs_get_dqblk(struct super_block *sb
+Index: linux-2.6.18-128.1.14/fs/dquot.c
+===================================================================
+--- linux-2.6.18-128.1.14.orig/fs/dquot.c      2009-06-19 12:33:10.000000000 -0600
++++ linux-2.6.18-128.1.14/fs/dquot.c   2009-06-19 12:35:20.000000000 -0600
+@@ -1592,10 +1592,19 @@
  }
  
  /* Generic routine for setting common part of quota structure */
@@ -22,7 +23,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/dquot.c linux-2.6.16.54-0.2.5-quota/fs/dquot
  
        spin_lock(&dq_data_lock);
        if (di->dqb_valid & QIF_SPACE) {
-@@ -1623,7 +1632,7 @@ static void do_set_dqblk(struct dquot *d
+@@ -1627,7 +1636,7 @@
                        clear_bit(DQ_BLKS_B, &dquot->dq_flags);
                }
                else if (!(di->dqb_valid & QIF_BTIME))  /* Set grace only if user hasn't provided his own... */
@@ -31,7 +32,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/dquot.c linux-2.6.16.54-0.2.5-quota/fs/dquot
        }
        if (check_ilim) {
                if (!dm->dqb_isoftlimit || dm->dqb_curinodes < dm->dqb_isoftlimit) {
-@@ -1631,7 +1640,7 @@ static void do_set_dqblk(struct dquot *d
+@@ -1635,7 +1644,7 @@
                        clear_bit(DQ_INODES_B, &dquot->dq_flags);
                }
                else if (!(di->dqb_valid & QIF_ITIME))  /* Set grace only if user hasn't provided his own... */
@@ -40,7 +41,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/dquot.c linux-2.6.16.54-0.2.5-quota/fs/dquot
        }
        if (dm->dqb_bhardlimit || dm->dqb_bsoftlimit || dm->dqb_ihardlimit || dm->dqb_isoftlimit)
                clear_bit(DQ_FAKE_B, &dquot->dq_flags);
-@@ -1639,21 +1648,24 @@ static void do_set_dqblk(struct dquot *d
+@@ -1643,21 +1652,24 @@
                set_bit(DQ_FAKE_B, &dquot->dq_flags);
        spin_unlock(&dq_data_lock);
        mark_dquot_dirty(dquot);
@@ -67,10 +68,11 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/dquot.c linux-2.6.16.54-0.2.5-quota/fs/dquot
  }
  
  /* Generic routine for getting common part of quota file information */
-diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v1.c linux-2.6.16.54-0.2.5-quota/fs/quota_v1.c
---- linux-2.6.16.54-0.2.5/fs/quota_v1.c        2006-03-20 08:53:29.000000000 +0300
-+++ linux-2.6.16.54-0.2.5-quota/fs/quota_v1.c  2008-03-17 22:42:47.000000000 +0300
-@@ -139,6 +139,9 @@ static int v1_read_file_info(struct supe
+Index: linux-2.6.18-128.1.14/fs/quota_v1.c
+===================================================================
+--- linux-2.6.18-128.1.14.orig/fs/quota_v1.c   2009-06-19 12:33:10.000000000 -0600
++++ linux-2.6.18-128.1.14/fs/quota_v1.c        2009-06-19 12:35:20.000000000 -0600
+@@ -139,6 +139,9 @@
                goto out;
        }
        ret = 0;
@@ -80,10 +82,11 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v1.c linux-2.6.16.54-0.2.5-quota/fs/qu
        dqopt->info[type].dqi_igrace = dqblk.dqb_itime ? dqblk.dqb_itime : MAX_IQ_TIME;
        dqopt->info[type].dqi_bgrace = dqblk.dqb_btime ? dqblk.dqb_btime : MAX_DQ_TIME;
  out:
-diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/quota_v2.c
---- linux-2.6.16.54-0.2.5/fs/quota_v2.c        2006-03-20 08:53:29.000000000 +0300
-+++ linux-2.6.16.54-0.2.5-quota/fs/quota_v2.c  2008-03-18 11:58:02.000000000 +0300
-@@ -23,26 +23,64 @@ MODULE_LICENSE("GPL");
+Index: linux-2.6.18-128.1.14/fs/quota_v2.c
+===================================================================
+--- linux-2.6.18-128.1.14.orig/fs/quota_v2.c   2009-06-19 12:33:10.000000000 -0600
++++ linux-2.6.18-128.1.14/fs/quota_v2.c        2009-06-19 12:35:20.000000000 -0600
+@@ -23,26 +23,64 @@
  typedef char *dqbuf_t;
  
  #define GETIDINDEX(id, depth) (((id) >> ((V2_DQTREEDEPTH-(depth)-1)*8)) & 0xff)
@@ -157,7 +160,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
  }
  
  /* Read information header from quota file */
-@@ -51,6 +89,13 @@ static int v2_read_file_info(struct supe
+@@ -51,6 +89,13 @@
        struct v2_disk_dqinfo dinfo;
        struct mem_dqinfo *info = sb_dqopt(sb)->info+type;
        ssize_t size;
@@ -171,7 +174,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
  
        size = sb->s_op->quota_read(sb, type, (char *)&dinfo,
               sizeof(struct v2_disk_dqinfo), V2_DQINFOOFF);
-@@ -65,6 +110,16 @@ static int v2_read_file_info(struct supe
+@@ -65,6 +110,16 @@
        info->u.v2_i.dqi_blocks = le32_to_cpu(dinfo.dqi_blocks);
        info->u.v2_i.dqi_free_blk = le32_to_cpu(dinfo.dqi_free_blk);
        info->u.v2_i.dqi_free_entry = le32_to_cpu(dinfo.dqi_free_entry);
@@ -188,7 +191,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
        return 0;
  }
  
-@@ -94,29 +149,61 @@ static int v2_write_file_info(struct sup
+@@ -94,29 +149,61 @@
        return 0;
  }
  
@@ -272,7 +275,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
  }
  
  static dqbuf_t getdqbuf(void)
-@@ -268,10 +355,10 @@ static uint find_free_dqentry(struct dqu
+@@ -268,10 +355,10 @@
  {
        struct super_block *sb = dquot->dq_sb;
        struct mem_dqinfo *info = sb_dqopt(sb)->info+dquot->dq_type;
@@ -286,7 +289,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
        dqbuf_t buf;
  
        *err = 0;
-@@ -298,17 +385,18 @@ static uint find_free_dqentry(struct dqu
+@@ -298,17 +385,18 @@
                info->u.v2_i.dqi_free_entry = blk;
                mark_info_dirty(sb, dquot->dq_type);
        }
@@ -309,7 +312,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
                printk(KERN_ERR "VFS: find_free_dqentry(): Data block full but it shouldn't.\n");
                *err = -EIO;
                goto out_buf;
-@@ -318,7 +406,8 @@ static uint find_free_dqentry(struct dqu
+@@ -318,7 +406,8 @@
                printk(KERN_ERR "VFS: find_free_dqentry(): Can't write quota data block %u.\n", blk);
                goto out_buf;
        }
@@ -319,7 +322,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
        freedqbuf(buf);
        return blk;
  out_buf:
-@@ -392,7 +481,9 @@ static int v2_write_dquot(struct dquot *
+@@ -392,7 +481,9 @@
  {
        int type = dquot->dq_type;
        ssize_t ret;
@@ -328,9 +331,9 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
 +      uint rev = sb_dqopt(dquot->dq_sb)->info[type].u.v2_i.dqi_revision;
 +      uint dqblksz = v2_dqblksz(rev);
  
-       /* dq_off is guarded by dqio_sem */
+       /* dq_off is guarded by dqio_mutex */
        if (!dquot->dq_off)
-@@ -401,18 +492,22 @@ static int v2_write_dquot(struct dquot *
+@@ -401,18 +492,22 @@
                        return ret;
                }
        spin_lock(&dq_data_lock);
@@ -360,7 +363,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
                if (ret >= 0)
                        ret = -ENOSPC;
        }
-@@ -431,6 +526,7 @@ static int free_dqentry(struct dquot *dq
+@@ -431,6 +526,7 @@
        struct v2_disk_dqdbheader *dh;
        dqbuf_t buf = getdqbuf();
        int ret = 0;
@@ -368,7 +371,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
  
        if (!buf)
                return -ENOMEM;
-@@ -456,8 +552,8 @@ static int free_dqentry(struct dquot *dq
+@@ -456,8 +552,8 @@
        }
        else {
                memset(buf+(dquot->dq_off & ((1 << V2_DQBLKSIZE_BITS)-1)), 0,
@@ -379,7 +382,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
                        /* Insert will write block itself */
                        if ((ret = insert_free_dqentry(sb, type, buf, blk)) < 0) {
                                printk(KERN_ERR "VFS: Can't insert quota data block (%u) to free entry list.\n", blk);
-@@ -529,41 +625,56 @@ static int v2_delete_dquot(struct dquot 
+@@ -529,41 +625,56 @@
        return remove_tree(dquot, &tmp, 0);
  }
  
@@ -449,7 +452,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
  out_buf:
        freedqbuf(buf);
        return ret;
-@@ -605,7 +716,7 @@ static int v2_read_dquot(struct dquot *d
+@@ -605,7 +716,7 @@
  {
        int type = dquot->dq_type;
        loff_t offset;
@@ -458,7 +461,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
        int ret = 0;
  
  #ifdef __QUOTA_V2_PARANOIA
-@@ -626,25 +737,30 @@ static int v2_read_dquot(struct dquot *d
+@@ -626,25 +737,30 @@
                ret = offset;
        }
        else {
@@ -498,10 +501,11 @@ diff -rNpu linux-2.6.16.54-0.2.5/fs/quota_v2.c linux-2.6.16.54-0.2.5-quota/fs/qu
                if (!dquot->dq_dqb.dqb_bhardlimit &&
                        !dquot->dq_dqb.dqb_bsoftlimit &&
                        !dquot->dq_dqb.dqb_ihardlimit &&
-diff -rNpu linux-2.6.16.54-0.2.5/include/linux/dqblk_v2.h linux-2.6.16.54-0.2.5-quota/include/linux/dqblk_v2.h
---- linux-2.6.16.54-0.2.5/include/linux/dqblk_v2.h     2006-03-20 08:53:29.000000000 +0300
-+++ linux-2.6.16.54-0.2.5-quota/include/linux/dqblk_v2.h       2008-03-17 23:39:54.000000000 +0300
-@@ -21,6 +21,7 @@ struct v2_mem_dqinfo {
+Index: linux-2.6.18-128.1.14/include/linux/dqblk_v2.h
+===================================================================
+--- linux-2.6.18-128.1.14.orig/include/linux/dqblk_v2.h        2009-06-19 12:33:10.000000000 -0600
++++ linux-2.6.18-128.1.14/include/linux/dqblk_v2.h     2009-06-19 12:35:20.000000000 -0600
+@@ -21,6 +21,7 @@
        unsigned int dqi_blocks;
        unsigned int dqi_free_blk;
        unsigned int dqi_free_entry;
@@ -509,10 +513,11 @@ diff -rNpu linux-2.6.16.54-0.2.5/include/linux/dqblk_v2.h linux-2.6.16.54-0.2.5-
  };
  
  #endif /* _LINUX_DQBLK_V2_H */
-diff -rNpu linux-2.6.16.54-0.2.5/include/linux/quota.h linux-2.6.16.54-0.2.5-quota/include/linux/quota.h
---- linux-2.6.16.54-0.2.5/include/linux/quota.h        2006-03-20 08:53:29.000000000 +0300
-+++ linux-2.6.16.54-0.2.5-quota/include/linux/quota.h  2008-03-17 23:39:54.000000000 +0300
-@@ -148,12 +148,12 @@ struct if_dqinfo {
+Index: linux-2.6.18-128.1.14/include/linux/quota.h
+===================================================================
+--- linux-2.6.18-128.1.14.orig/include/linux/quota.h   2009-06-19 12:33:10.000000000 -0600
++++ linux-2.6.18-128.1.14/include/linux/quota.h        2009-06-19 12:35:20.000000000 -0600
+@@ -149,12 +149,12 @@
   * Data for one user/group kept in memory
   */
  struct mem_dqblk {
@@ -530,7 +535,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/include/linux/quota.h linux-2.6.16.54-0.2.5-quo
        time_t dqb_btime;       /* time limit for excessive disk use */
        time_t dqb_itime;       /* time limit for excessive inode use */
  };
-@@ -169,6 +169,8 @@ struct mem_dqinfo {
+@@ -170,6 +170,8 @@
        unsigned long dqi_flags;
        unsigned int dqi_bgrace;
        unsigned int dqi_igrace;
@@ -539,9 +544,10 @@ diff -rNpu linux-2.6.16.54-0.2.5/include/linux/quota.h linux-2.6.16.54-0.2.5-quo
        union {
                struct v1_mem_dqinfo v1_i;
                struct v2_mem_dqinfo v2_i;
-diff -rNpu linux-2.6.16.54-0.2.5/include/linux/quotaio_v2.h linux-2.6.16.54-0.2.5-quota/include/linux/quotaio_v2.h
---- linux-2.6.16.54-0.2.5/include/linux/quotaio_v2.h   2006-03-20 08:53:29.000000000 +0300
-+++ linux-2.6.16.54-0.2.5-quota/include/linux/quotaio_v2.h     2008-03-17 23:39:54.000000000 +0300
+Index: linux-2.6.18-128.1.14/include/linux/quotaio_v2.h
+===================================================================
+--- linux-2.6.18-128.1.14.orig/include/linux/quotaio_v2.h      2009-06-19 12:33:10.000000000 -0600
++++ linux-2.6.18-128.1.14/include/linux/quotaio_v2.h   2009-06-19 12:35:20.000000000 -0600
 @@ -16,28 +16,51 @@
        0xd9c01927      /* GRPQUOTA */\
  }
@@ -598,7 +604,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/include/linux/quotaio_v2.h linux-2.6.16.54-0.2.
  /*
   * Here are header structures as written on disk and their in-memory copies
   */
-@@ -59,7 +82,7 @@ struct v2_disk_dqinfo {
+@@ -59,7 +82,7 @@
  
  /*
   *  Structure of header of block with quota structures. It is padded to 16 bytes so
@@ -607,7 +613,7 @@ diff -rNpu linux-2.6.16.54-0.2.5/include/linux/quotaio_v2.h linux-2.6.16.54-0.2.
   */
  struct v2_disk_dqdbheader {
        __le32 dqdh_next_free;  /* Number of next block with free entry */
-@@ -74,6 +97,5 @@ struct v2_disk_dqdbheader {
+@@ -74,6 +97,5 @@
  #define V2_DQBLKSIZE  (1 << V2_DQBLKSIZE_BITS)        /* Size of block with quota structures */
  #define V2_DQTREEOFF  1               /* Offset of tree in file in blocks */
  #define V2_DQTREEDEPTH        4               /* Depth of quota tree */
index 31b825e..e66bf54 100644 (file)
@@ -1,7 +1,8 @@
-diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/drivers/md/raid5.c
---- linux-2.6.18-92.1.22.orig/drivers/md/raid5.c       2009-02-10 13:47:54.000000000 +0800
-+++ linux-2.6.18-92.1.22/drivers/md/raid5.c    2009-02-10 14:44:24.000000000 +0800
-@@ -633,6 +633,9 @@ static int raid5_end_read_request(struct
+Index: linux-2.6.18-128.1.14/drivers/md/raid5.c
+===================================================================
+--- linux-2.6.18-128.1.14.orig/drivers/md/raid5.c      2009-06-19 12:34:46.000000000 -0600
++++ linux-2.6.18-128.1.14/drivers/md/raid5.c   2009-06-19 12:34:50.000000000 -0600
+@@ -633,6 +633,9 @@
                clear_buffer_uptodate(bh);
        }
  #endif
@@ -11,7 +12,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
        clear_bit(R5_LOCKED, &sh->dev[i].flags);
        set_bit(STRIPE_HANDLE, &sh->state);
        release_stripe(sh);
-@@ -671,6 +674,10 @@ static int raid5_end_write_request (stru
+@@ -669,6 +672,10 @@
  
        rdev_dec_pending(conf->disks[i].rdev, conf->mddev);
        
@@ -21,8 +22,8 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
 +      }
        clear_bit(R5_LOCKED, &sh->dev[i].flags);
        set_bit(STRIPE_HANDLE, &sh->state);
-       __release_stripe(conf, sh);
-@@ -911,7 +918,27 @@ static sector_t compute_blocknr(struct s
+       release_stripe(sh);
+@@ -910,7 +917,27 @@
        return r_sector;
  }
  
@@ -50,7 +51,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
  
  /*
   * Copy data between a page in the stripe cache, and one or more bion
-@@ -1003,8 +1030,9 @@ static void compute_parity5(struct strip
+@@ -1002,8 +1029,9 @@
  {
        raid5_conf_t *conf = sh->raid_conf;
        int i, pd_idx = sh->pd_idx, disks = sh->disks, count;
@@ -61,7 +62,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
  
        PRINTK("compute_parity5, stripe %llu, method %d\n",
                (unsigned long long)sh->sector, method);
-@@ -1054,34 +1082,92 @@ static void compute_parity5(struct strip
+@@ -1053,34 +1081,92 @@
                count = 1;
        }
        
@@ -171,7 +172,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
        }
        if (count != 1)
                xor_block(count, STRIPE_SIZE, ptr);
-@@ -1098,6 +1184,7 @@ static void compute_parity6(struct strip
+@@ -1097,6 +1183,7 @@
        raid6_conf_t *conf = sh->raid_conf;
        int i, pd_idx = sh->pd_idx, qd_idx, d0_idx, disks = conf->raid_disks, count;
        struct bio *chosen;
@@ -179,7 +180,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
        /**** FIX THIS: This could be very bad if disks is close to 256 ****/
        void *ptrs[disks];
  
-@@ -1127,18 +1214,49 @@ static void compute_parity6(struct strip
+@@ -1126,18 +1213,49 @@
                BUG();          /* Not implemented yet */
        }
  
@@ -238,7 +239,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
  
  //    switch(method) {
  //    case RECONSTRUCT_WRITE:
-@@ -1149,8 +1267,12 @@ static void compute_parity6(struct strip
+@@ -1148,8 +1266,12 @@
                count = 0;
                i = d0_idx;
                do {
@@ -253,7 +254,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
                                printk("block %d/%d not uptodate on parity calc\n", i,count);
                        i = raid6_next_disk(i, disks);
                } while ( i != d0_idx );
-@@ -1599,7 +1721,8 @@ static void handle_stripe5(struct stripe
+@@ -1596,7 +1718,8 @@
                if (sh->dev[i].written) {
                    dev = &sh->dev[i];
                    if (!test_bit(R5_LOCKED, &dev->flags) &&
@@ -263,7 +264,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
                        /* We can return any write requests */
                            struct bio *wbi, *wbi2;
                            int bitmap_end = 0;
-@@ -1607,6 +1730,7 @@ static void handle_stripe5(struct stripe
+@@ -1604,6 +1727,7 @@
                            spin_lock_irq(&conf->device_lock);
                            wbi = dev->written;
                            dev->written = NULL;
@@ -271,7 +272,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
                            while (wbi && wbi->bi_sector < dev->sector + STRIPE_SECTORS) {
                                    wbi2 = r5_next_bio(wbi, dev->sector);
                                    if (--wbi->bi_phys_segments == 0) {
-@@ -1970,6 +2094,15 @@ static void handle_stripe5(struct stripe
+@@ -1967,6 +2091,15 @@
                                set_bit(STRIPE_DEGRADED, &sh->state);
                        PRINTK("skip op %ld on disc %d for sector %llu\n",
                                bi->bi_rw, i, (unsigned long long)sh->sector);
@@ -287,7 +288,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
                        clear_bit(R5_LOCKED, &sh->dev[i].flags);
                        set_bit(STRIPE_HANDLE, &sh->state);
                }
-@@ -2175,7 +2308,8 @@ static void handle_stripe6(struct stripe
+@@ -2172,7 +2305,8 @@
                        if (sh->dev[i].written) {
                                dev = &sh->dev[i];
                                if (!test_bit(R5_LOCKED, &dev->flags) &&
@@ -297,7 +298,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
                                        /* We can return any write requests */
                                        int bitmap_end = 0;
                                        struct bio *wbi, *wbi2;
-@@ -2184,6 +2318,7 @@ static void handle_stripe6(struct stripe
+@@ -2181,6 +2315,7 @@
                                        spin_lock_irq(&conf->device_lock);
                                        wbi = dev->written;
                                        dev->written = NULL;
@@ -305,7 +306,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
                                        while (wbi && wbi->bi_sector < dev->sector + STRIPE_SECTORS) {
                                                wbi2 = r5_next_bio(wbi, dev->sector);
                                                if (--wbi->bi_phys_segments == 0) {
-@@ -2535,6 +2670,15 @@ static void handle_stripe6(struct stripe
+@@ -2532,6 +2667,15 @@
                                set_bit(STRIPE_DEGRADED, &sh->state);
                        PRINTK("skip op %ld on disc %d for sector %llu\n",
                                bi->bi_rw, i, (unsigned long long)sh->sector);
@@ -321,7 +322,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
                        clear_bit(R5_LOCKED, &sh->dev[i].flags);
                        set_bit(STRIPE_HANDLE, &sh->state);
                }
-@@ -3456,6 +3600,9 @@ static int run(mddev_t *mddev)
+@@ -3449,6 +3593,9 @@
        mddev->queue->max_phys_segments = conf->chunk_size * conf->previous_raid_disks >> PAGE_SHIFT;
        mddev->queue->max_hw_segments = conf->chunk_size * conf->previous_raid_disks >> PAGE_SHIFT;;
  
@@ -331,7 +332,7 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
        return 0;
  abort:
        if (conf) {
-@@ -3542,9 +3689,11 @@ static void status (struct seq_file *seq
+@@ -3535,9 +3682,11 @@
                        atomic_read(&conf->handled_in_raid5d),
                        atomic_read(&conf->out_of_stripes),
                        atomic_read(&conf->handle_called));
@@ -345,10 +346,11 @@ diff -pur linux-2.6.18-92.1.22.orig/drivers/md/raid5.c linux-2.6.18-92.1.22/driv
        seq_printf (seq, "\n\t\t%u delayed, %u bit delayed, %u active, queues: %u in, %u out\n",
                        atomic_read(&conf->delayed), atomic_read(&conf->bit_delayed),
                        atomic_read(&conf->active_stripes),
-diff -pur linux-2.6.18-92.1.22.orig/include/linux/backing-dev.h linux-2.6.18-92.1.22/include/linux/backing-dev.h
---- linux-2.6.18-92.1.22.orig/include/linux/backing-dev.h      2009-02-10 13:47:54.000000000 +0800
-+++ linux-2.6.18-92.1.22/include/linux/backing-dev.h   2009-02-10 14:44:14.000000000 +0800
-@@ -48,6 +48,7 @@ struct backing_dev_info {
+Index: linux-2.6.18-128.1.14/include/linux/backing-dev.h
+===================================================================
+--- linux-2.6.18-128.1.14.orig/include/linux/backing-dev.h     2009-06-19 12:33:11.000000000 -0600
++++ linux-2.6.18-128.1.14/include/linux/backing-dev.h  2009-06-19 12:34:50.000000000 -0600
+@@ -48,6 +48,7 @@
  #define BDI_CAP_READ_MAP      0x00000010      /* Can be mapped for reading */
  #define BDI_CAP_WRITE_MAP     0x00000020      /* Can be mapped for writing */
  #define BDI_CAP_EXEC_MAP      0x00000040      /* Can be mapped for execution */
@@ -356,7 +358,7 @@ diff -pur linux-2.6.18-92.1.22.orig/include/linux/backing-dev.h linux-2.6.18-92.
  #define BDI_CAP_VMFLAGS \
        (BDI_CAP_READ_MAP | BDI_CAP_WRITE_MAP | BDI_CAP_EXEC_MAP)
  
-@@ -94,11 +95,18 @@ static inline int bdi_rw_congested(struc
+@@ -94,11 +95,18 @@
  #define bdi_cap_account_dirty(bdi) \
        (!((bdi)->capabilities & BDI_CAP_NO_ACCT_DIRTY))
  
@@ -375,18 +377,19 @@ diff -pur linux-2.6.18-92.1.22.orig/include/linux/backing-dev.h linux-2.6.18-92.
 +
  
  #endif                /* _LINUX_BACKING_DEV_H */
-diff -pur linux-2.6.18-92.1.22.orig/include/linux/page-flags.h linux-2.6.18-92.1.22/include/linux/page-flags.h
---- linux-2.6.18-92.1.22.orig/include/linux/page-flags.h       2009-02-10 13:47:54.000000000 +0800
-+++ linux-2.6.18-92.1.22/include/linux/page-flags.h    2009-02-10 14:44:14.000000000 +0800
-@@ -86,6 +86,7 @@
- #define PG_reclaim            17      /* To be reclaimed asap */
+Index: linux-2.6.18-128.1.14/include/linux/page-flags.h
+===================================================================
+--- linux-2.6.18-128.1.14.orig/include/linux/page-flags.h      2009-06-19 12:33:11.000000000 -0600
++++ linux-2.6.18-128.1.14/include/linux/page-flags.h   2009-06-19 12:34:50.000000000 -0600
+@@ -87,6 +87,7 @@
  #define PG_nosave_free                18      /* Free, should not be written */
  #define PG_buddy              19      /* Page is free, on buddy lists */
-+#define PG_constant           20      /* To mark if the page is constant */
+ #define PG_gup                        20      /* Page pin may be because of gup */
++#define PG_constant           21      /* To mark if the page is constant */
  #define PG_xpmem              27      /* Testing for xpmem. */
  
  /* PG_owner_priv_1 users should have descriptive aliases */
-@@ -283,6 +284,14 @@
+@@ -288,6 +289,14 @@
  
  struct page;  /* forward declaration */
  
@@ -401,10 +404,11 @@ diff -pur linux-2.6.18-92.1.22.orig/include/linux/page-flags.h linux-2.6.18-92.1
  int test_clear_page_dirty(struct page *page);
  int test_clear_page_writeback(struct page *page);
  int test_set_page_writeback(struct page *page);
-diff -pur linux-2.6.18-92.1.22.orig/include/linux/raid/raid5.h linux-2.6.18-92.1.22/include/linux/raid/raid5.h
---- linux-2.6.18-92.1.22.orig/include/linux/raid/raid5.h       2009-02-10 13:47:54.000000000 +0800
-+++ linux-2.6.18-92.1.22/include/linux/raid/raid5.h    2009-02-10 14:44:14.000000000 +0800
-@@ -156,8 +156,9 @@ struct stripe_head {
+Index: linux-2.6.18-128.1.14/include/linux/raid/raid5.h
+===================================================================
+--- linux-2.6.18-128.1.14.orig/include/linux/raid/raid5.h      2009-06-19 12:34:42.000000000 -0600
++++ linux-2.6.18-128.1.14/include/linux/raid/raid5.h   2009-06-19 12:34:50.000000000 -0600
+@@ -156,8 +156,9 @@
  #define       R5_Overlap      7       /* There is a pending overlapping request on this block */
  #define       R5_ReadError    8       /* seen a read error here recently */
  #define       R5_ReWrite      9       /* have tried to over-write the readerror */
@@ -415,9 +419,10 @@ diff -pur linux-2.6.18-92.1.22.orig/include/linux/raid/raid5.h linux-2.6.18-92.1
  /*
   * Write method
   */
-diff -pur linux-2.6.18-92.1.22.orig/mm/filemap.c linux-2.6.18-92.1.22/mm/filemap.c
---- linux-2.6.18-92.1.22.orig/mm/filemap.c     2009-02-10 13:47:54.000000000 +0800
-+++ linux-2.6.18-92.1.22/mm/filemap.c  2009-02-10 14:44:14.000000000 +0800
+Index: linux-2.6.18-128.1.14/mm/filemap.c
+===================================================================
+--- linux-2.6.18-128.1.14.orig/mm/filemap.c    2009-06-19 12:33:11.000000000 -0600
++++ linux-2.6.18-128.1.14/mm/filemap.c 2009-06-19 12:34:50.000000000 -0600
 @@ -30,6 +30,7 @@
  #include <linux/security.h>
  #include <linux/syscalls.h>
@@ -426,7 +431,7 @@ diff -pur linux-2.6.18-92.1.22.orig/mm/filemap.c linux-2.6.18-92.1.22/mm/filemap
  #include "filemap.h"
  #include "internal.h"
  
-@@ -566,11 +567,55 @@ void end_page_writeback(struct page *pag
+@@ -567,11 +568,55 @@
                if (!test_clear_page_writeback(page))
                        BUG();
        }
index ced2c53..d15a630 100644 (file)
@@ -1,10 +1,10 @@
-Index: linux-2.6.18-53.1.21/drivers/scsi/Kconfig
+Index: linux-2.6.18-128.1.14/drivers/scsi/Kconfig
 ===================================================================
---- linux-2.6.18-53.1.21.orig/drivers/scsi/Kconfig
-+++ linux-2.6.18-53.1.21/drivers/scsi/Kconfig
-@@ -66,6 +66,14 @@ config BLK_DEV_SD
-          polling I/O.  If it doesn't, LKCD will fall back to ordinary
-          interrupt-driven I/O.
+--- linux-2.6.18-128.1.14.orig/drivers/scsi/Kconfig    2009-06-19 12:33:12.000000000 -0600
++++ linux-2.6.18-128.1.14/drivers/scsi/Kconfig 2009-06-19 12:34:05.000000000 -0600
+@@ -71,6 +71,14 @@
+         In this case, do not compile the driver for your SCSI host adapter
+         (below) as a module either.
  
 +config SD_IOSTATS
 +   bool "Enable SCSI disk I/O stats"
@@ -17,10 +17,10 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/Kconfig
  config CHR_DEV_ST
        tristate "SCSI tape support"
        depends on SCSI
-Index: linux-2.6.18-53.1.21/drivers/scsi/scsi_proc.c
+Index: linux-2.6.18-128.1.14/drivers/scsi/scsi_proc.c
 ===================================================================
---- linux-2.6.18-53.1.21.orig/drivers/scsi/scsi_proc.c
-+++ linux-2.6.18-53.1.21/drivers/scsi/scsi_proc.c
+--- linux-2.6.18-128.1.14.orig/drivers/scsi/scsi_proc.c        2009-06-19 12:33:12.000000000 -0600
++++ linux-2.6.18-128.1.14/drivers/scsi/scsi_proc.c     2009-06-19 12:34:05.000000000 -0600
 @@ -40,7 +40,8 @@
  /* 4K page size, but our output routines, use some slack for overruns */
  #define PROC_BLOCK_SIZE (3*1024)
@@ -31,10 +31,10 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/scsi_proc.c
  
  /* Protect sht->present and sht->proc_dir */
  static DEFINE_MUTEX(global_host_template_mutex);
-Index: linux-2.6.18-53.1.21/drivers/scsi/sd.c
+Index: linux-2.6.18-128.1.14/drivers/scsi/sd.c
 ===================================================================
---- linux-2.6.18-53.1.21.orig/drivers/scsi/sd.c
-+++ linux-2.6.18-53.1.21/drivers/scsi/sd.c
+--- linux-2.6.18-128.1.14.orig/drivers/scsi/sd.c       2009-06-19 12:33:12.000000000 -0600
++++ linux-2.6.18-128.1.14/drivers/scsi/sd.c    2009-06-19 12:34:05.000000000 -0600
 @@ -62,6 +62,63 @@
  
  #include "scsi_logging.h"
@@ -99,7 +99,7 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/sd.c
  /*
   * More than enough for everybody ;)  The huge number of majors
   * is a leftover from 16bit dev_t days, we don't really need that
-@@ -126,6 +183,9 @@ struct scsi_disk {
+@@ -126,6 +183,9 @@
        unsigned        WCE : 1;        /* state of disk WCE bit */
        unsigned        RCD : 1;        /* state of disk RCD bit, unused */
        unsigned        DPOFUA : 1;     /* state of disk DPOFUA bit */
@@ -109,7 +109,7 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/sd.c
  };
  #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,cdev)
  
-@@ -557,6 +617,8 @@ static int sd_init_command(struct scsi_c
+@@ -557,6 +617,8 @@
         */
        SCpnt->done = sd_rw_intr;
  
@@ -118,7 +118,7 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/sd.c
        /*
         * This indicates that the command is ready from our end to be
         * queued.
-@@ -1040,6 +1102,7 @@ static void sd_rw_intr(struct scsi_cmnd 
+@@ -1038,6 +1100,7 @@
                break;
        }
   out:
@@ -126,7 +126,7 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/sd.c
        scsi_io_completion(SCpnt, good_bytes);
  }
  
-@@ -1735,6 +1798,36 @@ static int sd_probe(struct device *dev)
+@@ -1733,6 +1796,36 @@
        if (sdp->removable)
                gd->flags |= GENHD_FL_REMOVABLE;
  
@@ -163,7 +163,7 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/sd.c
        dev_set_drvdata(dev, sdkp);
        add_disk(gd);
  
-@@ -1778,6 +1871,366 @@ static int sd_remove(struct device *dev)
+@@ -1776,6 +1869,366 @@
        return 0;
  }
  
@@ -530,7 +530,7 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/sd.c
  /**
   *    scsi_disk_release - Called to free the scsi_disk structure
   *    @cdev: pointer to embedded class device
-@@ -1796,10 +2249,16 @@ static void scsi_disk_release(struct cla
+@@ -1794,10 +2247,16 @@
        idr_remove(&sd_index_idr, sdkp->index);
        spin_unlock(&sd_index_lock);
  
@@ -548,7 +548,7 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/sd.c
        kfree(sdkp);
  }
  
-@@ -1907,6 +2366,7 @@ done:
+@@ -1905,6 +2364,7 @@
  static int __init init_sd(void)
  {
        int majors = 0, i;
@@ -556,7 +556,7 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/sd.c
  
        SCSI_LOG_HLQUEUE(3, printk("init_sd: sd driver entry point\n"));
  
-@@ -1917,9 +2377,13 @@ static int __init init_sd(void)
+@@ -1915,9 +2375,13 @@
        if (!majors)
                return -ENODEV;
  
@@ -571,7 +571,7 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/sd.c
  }
  
  /**
-@@ -1938,6 +2402,7 @@ static void __exit exit_sd(void)
+@@ -1936,6 +2400,7 @@
                unregister_blkdev(sd_major(i), "sd");
  
        class_unregister(&sd_disk_class);
index 34fc32d..a1fbdf3 100644 (file)
@@ -1,5 +1,5 @@
 lnxmaj="2.6.18"
-lnxrel="128.1.6.el5"
+lnxrel="128.1.14.el5"
 
 KERNEL_SRPM=kernel-$lnxmaj-$lnxrel.src.rpm
 SERIES=2.6-rhel5.series
index ea750b8..ba87ceb 100644 (file)
@@ -2,7 +2,7 @@ SERIES                VERSION                  COMMENT
 
 SUPPORTED KERNELS:
 2.6-sles10            SLES10: 2.6.16.60-0.37
-2.6-rhel5             RHEL5: 2.6.18-128.1.6.el5
+2.6-rhel5             RHEL5: 2.6.18-128.1.14.el5
 2.6.18-vanilla        kernel.org: 2.6.18.8
 2.6.22-vanilla        kernel.org: 2.6.22.14
 2.6-sles11            SLES11: 2.6.27.23-0.1