From cccf9b730b937bc7c5839f066592be38ec0439d4 Mon Sep 17 00:00:00 2001 From: brian Date: Wed, 23 Nov 2005 17:39:06 +0000 Subject: [PATCH] b=9682 r=adilger Land RHEL3-37 update kernel support. --- .../kernel-2.4.21-rhel-2.4-i686-smp.config | 4 + .../kernel-2.4.21-rhel-2.4-i686.config | 4 + .../kernel-2.4.21-rhel-2.4-ia64-smp.config | 4 + .../kernel-2.4.21-rhel-2.4-ia64.config | 4 + .../kernel-2.4.21-rhel-2.4-x86_64-smp.config | 4 + .../kernel-2.4.21-rhel-2.4-x86_64.config | 4 + .../patches/jbd-commit-tricks-rhel3.patch | 132 +++++++++++++++++++++ .../patches/linux-2.4.21-xattr-0.8.54-chaos.patch | 27 +---- .../linux-2.4.24-jbd-handle-EIO-rhel3.patch | 23 ++++ lustre/kernel_patches/patches/qsnet-rhel-2.4.patch | 2 +- .../patches/small_scatterlist-2.4.21-rhel.patch | 4 +- lustre/kernel_patches/series/rhel-2.4.21 | 4 +- lustre/kernel_patches/targets/rhel-2.4.target.in | 2 +- 13 files changed, 187 insertions(+), 31 deletions(-) create mode 100644 lustre/kernel_patches/patches/jbd-commit-tricks-rhel3.patch create mode 100644 lustre/kernel_patches/patches/linux-2.4.24-jbd-handle-EIO-rhel3.patch diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686-smp.config b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686-smp.config index 419d0a6..e60bdeb 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686-smp.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686-smp.config @@ -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 diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686.config b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686.config index 419d0a6..e60bdeb 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686.config @@ -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 diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-ia64-smp.config b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-ia64-smp.config index a5a0ec7..53b1ff8 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-ia64-smp.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-ia64-smp.config @@ -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 diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-ia64.config b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-ia64.config index a5a0ec7..53b1ff8 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-ia64.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-ia64.config @@ -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 diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-x86_64-smp.config b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-x86_64-smp.config index 9e1fcd8..8869f1c 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-x86_64-smp.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-x86_64-smp.config @@ -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/kernel_configs/kernel-2.4.21-rhel-2.4-x86_64.config b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-x86_64.config index 9e1fcd8..8869f1c 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-x86_64.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-x86_64.config @@ -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 index 0000000..725931c --- /dev/null +++ b/lustre/kernel_patches/patches/jbd-commit-tricks-rhel3.patch @@ -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 + +_ diff --git a/lustre/kernel_patches/patches/linux-2.4.21-xattr-0.8.54-chaos.patch b/lustre/kernel_patches/patches/linux-2.4.21-xattr-0.8.54-chaos.patch index 196ae17..686b1ea 100644 --- a/lustre/kernel_patches/patches/linux-2.4.21-xattr-0.8.54-chaos.patch +++ b/lustre/kernel_patches/patches/linux-2.4.21-xattr-0.8.54-chaos.patch @@ -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 index 0000000..bc66351 --- /dev/null +++ b/lustre/kernel_patches/patches/linux-2.4.24-jbd-handle-EIO-rhel3.patch @@ -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); diff --git a/lustre/kernel_patches/patches/qsnet-rhel-2.4.patch b/lustre/kernel_patches/patches/qsnet-rhel-2.4.patch index 40b7c82..14f2b76 100644 --- a/lustre/kernel_patches/patches/qsnet-rhel-2.4.patch +++ b/lustre/kernel_patches/patches/qsnet-rhel-2.4.patch @@ -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 diff --git a/lustre/kernel_patches/patches/small_scatterlist-2.4.21-rhel.patch b/lustre/kernel_patches/patches/small_scatterlist-2.4.21-rhel.patch index 381d490..41d9d8a 100644 --- a/lustre/kernel_patches/patches/small_scatterlist-2.4.21-rhel.patch +++ b/lustre/kernel_patches/patches/small_scatterlist-2.4.21-rhel.patch @@ -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; diff --git a/lustre/kernel_patches/series/rhel-2.4.21 b/lustre/kernel_patches/series/rhel-2.4.21 index 2cc841f..bc6e9f6 100644 --- a/lustre/kernel_patches/series/rhel-2.4.21 +++ b/lustre/kernel_patches/series/rhel-2.4.21 @@ -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 diff --git a/lustre/kernel_patches/targets/rhel-2.4.target.in b/lustre/kernel_patches/targets/rhel-2.4.target.in index 8982d8f..7af0f35 100644 --- a/lustre/kernel_patches/targets/rhel-2.4.target.in +++ b/lustre/kernel_patches/targets/rhel-2.4.target.in @@ -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 -- 1.8.3.1