Whamcloud - gitweb
b=9682
authorbrian <brian>
Wed, 23 Nov 2005 17:39:06 +0000 (17:39 +0000)
committerbrian <brian>
Wed, 23 Nov 2005 17:39:06 +0000 (17:39 +0000)
r=adilger
Land RHEL3-37 update kernel support.

13 files changed:
lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686-smp.config
lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686.config
lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-ia64-smp.config
lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-ia64.config
lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-x86_64-smp.config
lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-x86_64.config
lustre/kernel_patches/patches/jbd-commit-tricks-rhel3.patch [new file with mode: 0644]
lustre/kernel_patches/patches/linux-2.4.21-xattr-0.8.54-chaos.patch
lustre/kernel_patches/patches/linux-2.4.24-jbd-handle-EIO-rhel3.patch [new file with mode: 0644]
lustre/kernel_patches/patches/qsnet-rhel-2.4.patch
lustre/kernel_patches/patches/small_scatterlist-2.4.21-rhel.patch
lustre/kernel_patches/series/rhel-2.4.21
lustre/kernel_patches/targets/rhel-2.4.target.in

index 419d0a6..e60bdeb 100644 (file)
@@ -232,6 +232,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_BLK_STATS=y
 CONFIG_DISKDUMP=m
+CONFIG_BLOCKDUMP=m
 
 #
 # Multi-device support (RAID and LVM)
@@ -1419,9 +1420,12 @@ CONFIG_INPUT_TURBOGRAFX=m
 # CONFIG_QIC02_TAPE is not set
 CONFIG_IPMI_HANDLER=m
 # CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_PANIC_STRING is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
 CONFIG_IPMI_KCS=m
 CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
 
 #
 # Watchdog Cards
index 419d0a6..e60bdeb 100644 (file)
@@ -232,6 +232,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_BLK_STATS=y
 CONFIG_DISKDUMP=m
+CONFIG_BLOCKDUMP=m
 
 #
 # Multi-device support (RAID and LVM)
@@ -1419,9 +1420,12 @@ CONFIG_INPUT_TURBOGRAFX=m
 # CONFIG_QIC02_TAPE is not set
 CONFIG_IPMI_HANDLER=m
 # CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_PANIC_STRING is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
 CONFIG_IPMI_KCS=m
 CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
 
 #
 # Watchdog Cards
index a5a0ec7..53b1ff8 100644 (file)
@@ -364,6 +364,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_BLK_STATS=y
 CONFIG_DISKDUMP=m
+CONFIG_BLOCKDUMP=m
 
 #
 # IEEE 1394 (FireWire) support (EXPERIMENTAL)
@@ -867,9 +868,12 @@ CONFIG_INPUT_STINGER=m
 # CONFIG_QIC02_TAPE is not set
 CONFIG_IPMI_HANDLER=m
 # CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_PANIC_STRING is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
 CONFIG_IPMI_KCS=m
 CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
 
 #
 # Watchdog Cards
index a5a0ec7..53b1ff8 100644 (file)
@@ -364,6 +364,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_BLK_STATS=y
 CONFIG_DISKDUMP=m
+CONFIG_BLOCKDUMP=m
 
 #
 # IEEE 1394 (FireWire) support (EXPERIMENTAL)
@@ -867,9 +868,12 @@ CONFIG_INPUT_STINGER=m
 # CONFIG_QIC02_TAPE is not set
 CONFIG_IPMI_HANDLER=m
 # CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_PANIC_STRING is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
 CONFIG_IPMI_KCS=m
 CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
 
 #
 # Watchdog Cards
index 9e1fcd8..8869f1c 100644 (file)
@@ -189,6 +189,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_BLK_STATS=y
 CONFIG_DISKDUMP=m
+CONFIG_BLOCKDUMP=m
 
 #
 # Multi-device support (RAID and LVM)
@@ -1132,9 +1133,12 @@ CONFIG_INPUT_TURBOGRAFX=m
 # CONFIG_QIC02_TAPE is not set
 CONFIG_IPMI_HANDLER=m
 # CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_PANIC_STRING is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
 CONFIG_IPMI_KCS=m
 CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
 
 #
 # Watchdog Cards
index 9e1fcd8..8869f1c 100644 (file)
@@ -189,6 +189,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_BLK_STATS=y
 CONFIG_DISKDUMP=m
+CONFIG_BLOCKDUMP=m
 
 #
 # Multi-device support (RAID and LVM)
@@ -1132,9 +1133,12 @@ CONFIG_INPUT_TURBOGRAFX=m
 # CONFIG_QIC02_TAPE is not set
 CONFIG_IPMI_HANDLER=m
 # CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_PANIC_STRING is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
 CONFIG_IPMI_KCS=m
 CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
 
 #
 # Watchdog Cards
diff --git a/lustre/kernel_patches/patches/jbd-commit-tricks-rhel3.patch b/lustre/kernel_patches/patches/jbd-commit-tricks-rhel3.patch
new file mode 100644 (file)
index 0000000..725931c
--- /dev/null
@@ -0,0 +1,132 @@
+
+--- linux-2.4.18/fs/jbd/checkpoint.c~jbd-commit-tricks Mon Jul 28 13:52:05 2003
++++ linux-2.4.18-alexey/fs/jbd/checkpoint.c    Mon Jul 28 14:03:59 2003
+@@ -77,19 +77,23 @@ static int __try_to_free_cp_buf(struct j
+  * to wait for a checkpoint to free up some space in the log.
+  */
+-void log_wait_for_space(journal_t *journal, int nblocks)
++void log_wait_for_space(journal_t *journal)
+ {
++      int nblocks;
++
++      nblocks = jbd_space_needed(journal);
+       while (log_space_left(journal) < nblocks) {
+               if (journal->j_flags & JFS_ABORT)
+                       return;
+               unlock_journal(journal);
+               down(&journal->j_checkpoint_sem);
+               lock_journal(journal);
++              nblocks = jbd_space_needed(journal);
+               
+               /* Test again, another process may have checkpointed
+                * while we were waiting for the checkpoint lock */
+               if (log_space_left(journal) < nblocks) {
+-                      log_do_checkpoint(journal, nblocks);
++                      log_do_checkpoint(journal);
+               }
+               up(&journal->j_checkpoint_sem);
+       }
+@@ -260,8 +264,7 @@ static int __flush_buffer(journal_t *jou
+  * The journal should be locked before calling this function.
+  */
+-/* @@@ `nblocks' is unused.  Should it be used? */
+-int log_do_checkpoint (journal_t *journal, int nblocks)
++int log_do_checkpoint (journal_t *journal)
+ {
+       transaction_t *transaction, *last_transaction, *next_transaction;
+       int result;
+@@ -315,6 +318,8 @@ repeat:
+                       retry = __flush_buffer(journal, jh, bhs, &batch_count,
+                                               &drop_count);
+               } while (jh != last_jh && !retry);
++              if (journal->j_checkpoint_transactions != transaction)
++                      goto done;
+               if (batch_count) {
+                       __flush_batch(bhs, &batch_count);
+                       goto repeat;
+@@ -328,6 +333,8 @@ repeat:
+                */
+               cleanup_ret = __cleanup_transaction(journal, transaction);
+               J_ASSERT(drop_count != 0 || cleanup_ret != 0);
++              if (journal->j_checkpoint_transactions != transaction)
++                      goto done;
+               goto repeat;    /* __cleanup may have dropped lock */
+       } while (transaction != last_transaction);
+--- linux-2.4.18/fs/jbd/journal.c~jbd-commit-tricks    Mon Jul 28 13:52:05 2003
++++ linux-2.4.18-alexey/fs/jbd/journal.c       Mon Jul 28 14:03:59 2003
+@@ -1115,7 +1115,7 @@ void journal_destroy (journal_t *journal
+       /* Force any old transactions to disk */
+       lock_journal(journal);
+       while (journal->j_checkpoint_transactions != NULL)
+-              log_do_checkpoint(journal, 1);
++              log_do_checkpoint(journal);
+       J_ASSERT(journal->j_running_transaction == NULL);
+       J_ASSERT(journal->j_committing_transaction == NULL);
+@@ -1302,7 +1302,7 @@ int journal_flush (journal_t *journal)
+       /* ...and flush everything in the log out to disk. */
+       lock_journal(journal);
+       while (!err && journal->j_checkpoint_transactions != NULL)
+-              err = log_do_checkpoint(journal, journal->j_maxlen);
++              err = log_do_checkpoint(journal);
+       cleanup_journal_tail(journal);
+       /* Finally, mark the journal as really needing no recovery.
+--- linux-2.4.18/fs/jbd/transaction.c~jbd-commit-tricks        Mon Jul 28 13:52:05 2003
++++ linux-2.4.18-alexey/fs/jbd/transaction.c   Mon Jul 28 14:03:59 2003
+@@ -182,14 +182,9 @@ repeat_locked:
+        * Also, this test is inconsitent with the matching one in
+        * journal_extend().
+        */
+-      needed = journal->j_max_transaction_buffers;
+-      if (journal->j_committing_transaction) 
+-              needed += journal->j_committing_transaction->
+-                                      t_outstanding_credits;
+-      
+-      if (log_space_left(journal) < needed) {
++      if (log_space_left(journal) < jbd_space_needed(journal)) {
+               jbd_debug(2, "Handle %p waiting for checkpoint...\n", handle);
+-              log_wait_for_space(journal, needed);
++              log_wait_for_space(journal);
+               goto repeat_locked;
+       }
+--- linux-2.4.18/include/linux/jbd.h~jbd-commit-tricks Mon Jul 28 13:52:17 2003
++++ linux-2.4.18-alexey/include/linux/jbd.h    Mon Jul 28 14:03:59 2003
+@@ -740,9 +740,9 @@ extern void           journal_brelse_array(stru
+ extern int    log_space_left (journal_t *); /* Called with journal locked */
+ extern tid_t  log_start_commit (journal_t *, transaction_t *);
+ extern int    log_wait_commit (journal_t *, tid_t);
+-extern int    log_do_checkpoint (journal_t *, int);
++extern int    log_do_checkpoint (journal_t *);
+-extern void   log_wait_for_space(journal_t *, int nblocks);
++extern void   log_wait_for_space(journal_t *);
+ extern void   __journal_drop_transaction(journal_t *, transaction_t *);
+ extern int    cleanup_journal_tail(journal_t *);
+@@ -815,6 +815,19 @@ static inline int tid_geq(tid_t x, tid_t
+ }
+ extern int journal_blocks_per_page(struct inode *inode);
++
++/*
++ * Return the minimum number of blocks which must be free in the journal
++ * before a new transaction may be started.  Must be called under j_state_lock.
++ */
++static inline int jbd_space_needed(journal_t *journal)
++{
++      int nblocks = journal->j_max_transaction_buffers;
++      if (journal->j_committing_transaction)
++              nblocks += journal->j_committing_transaction->
++                      t_outstanding_credits;
++      return nblocks;
++}
+ /*
+  * Definitions which augment the buffer_head layer
+
+_
index 196ae17..686b1ea 100644 (file)
@@ -247,25 +247,6 @@ Index: linux-2.4.21-chaos/fs/ext2/inode.c
 ===================================================================
 --- linux-2.4.21-chaos.orig/fs/ext2/inode.c    2003-07-15 04:41:01.000000000 +0400
 +++ linux-2.4.21-chaos/fs/ext2/inode.c 2003-12-14 15:11:46.000000000 +0300
-@@ -39,6 +39,18 @@
- static int ext2_update_inode(struct inode * inode, int do_sync);
- /*
-+ * Test whether an inode is a fast symlink.
-+ */
-+static inline int ext2_inode_is_fast_symlink(struct inode *inode)
-+{
-+      int ea_blocks = inode->u.ext2_i.i_file_acl ?
-+              (inode->i_sb->s_blocksize >> 9) : 0;
-+
-+      return (S_ISLNK(inode->i_mode) &&
-+              inode->i_blocks - ea_blocks == 0);
-+}
-+
-+/*
-  * Called at each iput()
-  */
- void ext2_put_inode (struct inode * inode)
 @@ -53,9 +65,7 @@
  {
        lock_kernel();
@@ -308,12 +289,8 @@ Index: linux-2.4.21-chaos/fs/ext2/inode.c
                inode->i_op = &ext2_file_inode_operations;
                inode->i_fop = &ext2_file_operations;
                inode->i_mapping->a_ops = &ext2_aops;
-@@ -1002,15 +1010,17 @@
-               inode->i_fop = &ext2_dir_operations;
-               inode->i_mapping->a_ops = &ext2_aops;
-       } else if (S_ISLNK(inode->i_mode)) {
--              if (!inode->i_blocks)
-+              if (ext2_inode_is_fast_symlink(inode))
+@@ -1002,12 +1010,14 @@
+               if (ext2_inode_is_fast_symlink(inode))
                        inode->i_op = &ext2_fast_symlink_inode_operations;
                else {
 -                      inode->i_op = &page_symlink_inode_operations;
diff --git a/lustre/kernel_patches/patches/linux-2.4.24-jbd-handle-EIO-rhel3.patch b/lustre/kernel_patches/patches/linux-2.4.24-jbd-handle-EIO-rhel3.patch
new file mode 100644 (file)
index 0000000..bc66351
--- /dev/null
@@ -0,0 +1,23 @@
+diff -X /home/nikita/src/linux-git/linux-2.6.git/Documentation/dontdiff -rupbB linux-2.4.24.orig/fs/jbd/commit.c linux-2.4.24/fs/jbd/commit.c
+--- linux-2.4.24.orig/fs/jbd/commit.c  2005-06-23 17:39:32.000000000 +0400
++++ linux-2.4.24/fs/jbd/commit.c       2005-06-23 15:56:05.000000000 +0400
+@@ -505,6 +505,9 @@ start_journal_io:
+                       goto wait_for_iobuf;
+               }
++              if (unlikely(!buffer_uptodate(bh)))
++                      err = -EIO;
++
+               clear_bit(BH_JWrite, &jh2bh(jh)->b_state);
+               JBUFFER_TRACE(jh, "ph4: unfile after journal write");
+@@ -566,6 +569,9 @@ start_journal_io:
+                       goto wait_for_ctlbuf;
+               }
++              if (unlikely(!buffer_uptodate(bh)))
++                      err = -EIO;
++
+               BUFFER_TRACE(bh, "ph5: control buffer writeout done: unfile");
+               clear_bit(BH_JWrite, &bh->b_state);
+               journal_unfile_buffer(jh);
index 40b7c82..14f2b76 100644 (file)
@@ -20,9 +20,9 @@ Index: linux-2.4.21/arch/ia64/kernel/ia64_ksyms.c
 --- linux-2.4.21.orig/arch/ia64/kernel/ia64_ksyms.c    2005-06-01 22:51:59.000000000 -0400
 +++ linux-2.4.21/arch/ia64/kernel/ia64_ksyms.c 2005-06-01 23:14:43.773842072 -0400
 @@ -207,3 +207,13 @@
- EXPORT_SYMBOL_GPL(show_mem);
  EXPORT_SYMBOL_GPL(show_state);
  EXPORT_SYMBOL_GPL(show_regs);
+ EXPORT_SYMBOL(pm_power_off);
 +
 +#define __KERNEL_SYSCALLS__ 1
 +#include <asm/unistd.h>
index 381d490..41d9d8a 100644 (file)
@@ -3179,7 +3179,7 @@ Index: linux-2.4.21/drivers/scsi/libata-core.c
        sg->page = virt_to_page(buf);
        sg->offset = (unsigned long) buf & ~PAGE_MASK;
 +#endif /* !SMALL_SCATTERLIST */
-       sg_dma_len(sg) = buflen;
+       sg->length = buflen;
  }
  
 @@ -2297,8 +2302,13 @@
@@ -3197,9 +3197,9 @@ Index: linux-2.4.21/drivers/scsi/libata-core.c
        /* get the current page and offset */
        page = nth_page(page, (offset >> PAGE_SHIFT));
 @@ -2339,8 +2349,13 @@
+ next_sg:
        sg = &qc->sg[qc->cursg];
  
- next_page:
 +#if SMALL_SCATTERLIST
 +      page = sg->u.page.page;
 +      offset = sg->u.page.offset + qc->cursg_ofs;
index 2cc841f..bc6e9f6 100644 (file)
@@ -21,7 +21,7 @@ ext3-error-export.patch
 iopen-2.4.21-chaos.patch 
 tcp-zero-copy-2.4.21-chaos.patch
 jbd-dont-account-blocks-twice.patch
-jbd-commit-tricks.patch
+jbd-commit-tricks-rhel3.patch
 ext3-o_direct-2.4.21-chaos.patch 
 ext3-no-write-super-chaos.patch
 add_page_private.patch 
@@ -50,4 +50,4 @@ nfs_statfs-toomanyfiles-rhel-2.4.patch
 statfs64-cast-unsigned-2.4-rhel.patch
 fsprivate-2.4.patch
 nfsd_iallocsem.patch
-linux-2.4.24-jbd-handle-EIO.patch
+linux-2.4.24-jbd-handle-EIO-rhel3.patch
index 8982d8f..7af0f35 100644 (file)
@@ -1,5 +1,5 @@
 lnxmaj="2.4.21"
-lnxrel="32.0.1.EL"
+lnxrel="37.EL"
 
 KERNEL=linux-${lnxmaj}-${lnxrel}.tar.bz2
 SERIES=rhel-2.4.21