From 6e18ebdaab4c2feab899f95a0cd25874c2c67aa7 Mon Sep 17 00:00:00 2001 From: yangsheng Date: Wed, 3 Jun 2009 07:23:20 +0000 Subject: [PATCH] Branch HEAD b=19212 i=shadow, bobijam, brian Update kernel to SLES10 SP2 2.6.16.60-0.37. --- lustre/ChangeLog | 6 +- .../patches/export-nr_free_buffer_pages.patch | 14 +- lustre/kernel_patches/patches/i_filter_data.patch | 12 +- .../kernel_patches/patches/jbd-2.6.10-jcberr.patch | 6 +- .../patches/jbd-journal-chksum-2.6-sles10.patch | 202 ++++++++++----------- .../patches/proc-sleep-2.6.16-sles10.patch | 92 +++++----- .../patches/sd_iostats-2.6-rhel5.patch | 50 ++--- lustre/kernel_patches/targets/2.6-sles10.target.in | 2 +- lustre/kernel_patches/which_patch | 2 +- 9 files changed, 195 insertions(+), 191 deletions(-) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 1d1ba59..57172c2 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -1,7 +1,7 @@ tbd Sun Microsystems, Inc. * version 2.0.0 * Support for kernels: - 2.6.16.60-0.33 (SLES 10), + 2.6.16.60-0.37 (SLES 10), 2.6.18-128.1.1.el5 (RHEL 5), 2.6.22.14 vanilla (kernel.org). * Client support for unpatched kernels: @@ -13,6 +13,10 @@ tbd Sun Microsystems, Inc. removed cwd "./" (refer to Bugzilla 14399). * File join has been disabled in this release, refer to Bugzilla 16929. +Severity : enhancement +Bugzilla : 19212 +Description: Update kernel to SLES10 SP2 2.6.16.60-0.37. + Severity : normal Bugzilla : 19528 Description: resolve race between obd_disconnect and class_disconnect_exports diff --git a/lustre/kernel_patches/patches/export-nr_free_buffer_pages.patch b/lustre/kernel_patches/patches/export-nr_free_buffer_pages.patch index 1d6712a..12149ec 100644 --- a/lustre/kernel_patches/patches/export-nr_free_buffer_pages.patch +++ b/lustre/kernel_patches/patches/export-nr_free_buffer_pages.patch @@ -1,12 +1,12 @@ -Index: linux/mm/page_alloc.c +Index: linux-2.6.18-128.1.6/mm/page_alloc.c =================================================================== ---- linux.orig/mm/page_alloc.c -+++ linux/mm/page_alloc.c -@@ -875,6 +875,7 @@ unsigned int nr_free_buffer_pages(void) - { - return nr_free_zone_pages(GFP_USER & GFP_ZONEMASK); +--- linux-2.6.18-128.1.6.orig/mm/page_alloc.c 2009-04-14 21:05:42.000000000 -0600 ++++ linux-2.6.18-128.1.6/mm/page_alloc.c 2009-06-02 23:24:34.000000000 -0600 +@@ -877,6 +877,7 @@ + } + return 1; } +EXPORT_SYMBOL(nr_free_buffer_pages); /* - * Amount of free RAM allocatable within all zones + * get_page_from_freeliest goes through the zonelist trying to allocate diff --git a/lustre/kernel_patches/patches/i_filter_data.patch b/lustre/kernel_patches/patches/i_filter_data.patch index 663b5f8..cac3f9b 100644 --- a/lustre/kernel_patches/patches/i_filter_data.patch +++ b/lustre/kernel_patches/patches/i_filter_data.patch @@ -2,13 +2,13 @@ The i_filterdata is currently only used by the size-on-mds to store the epoch number for the inode. This could be moved to another field in ldiskfs or elsewhere in the inode that isn't used by Lustre callers. -Index: linux-2.6.18.8/include/linux/fs.h +Index: linux-2.6.18-128.1.6/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.6.orig/include/linux/fs.h 2009-04-14 21:05:43.000000000 -0600 ++++ linux-2.6.18-128.1.6/include/linux/fs.h 2009-06-02 23:21:44.000000000 -0600 +@@ -580,6 +580,7 @@ + struct cdev *i_cdev; + }; int i_cindex; + void *i_filterdata; diff --git a/lustre/kernel_patches/patches/jbd-2.6.10-jcberr.patch b/lustre/kernel_patches/patches/jbd-2.6.10-jcberr.patch index 64085b9..c4b253a 100644 --- a/lustre/kernel_patches/patches/jbd-2.6.10-jcberr.patch +++ b/lustre/kernel_patches/patches/jbd-2.6.10-jcberr.patch @@ -76,7 +76,7 @@ /** @@ -881,6 +921,10 @@ - extern int journal_try_to_free_buffers(journal_t *, struct page *, int); + extern int journal_try_to_free_buffers(journal_t *, struct page *, gfp_t); extern int journal_stop(handle_t *); extern int journal_flush (journal_t *); +extern void journal_callback_set(handle_t *handle, @@ -100,8 +100,8 @@ --- 1.53/fs/jbd/commit.c 2004-10-19 03:40:17 -06:00 +++ 1.54/fs/jbd/commit.c 2004-11-07 19:13:24 -07:00 @@ -686,6 +686,30 @@ - if (err) - __journal_abort_hard(journal); + transaction can be removed from any checkpoint list it was on + before. */ + /* + * Call any callbacks that had been registered for handles in this diff --git a/lustre/kernel_patches/patches/jbd-journal-chksum-2.6-sles10.patch b/lustre/kernel_patches/patches/jbd-journal-chksum-2.6-sles10.patch index 2312d7a..4ef92b2 100644 --- a/lustre/kernel_patches/patches/jbd-journal-chksum-2.6-sles10.patch +++ b/lustre/kernel_patches/patches/jbd-journal-chksum-2.6-sles10.patch @@ -1,7 +1,7 @@ -Index: linux-2.6.16.53-0.16/fs/jbd/commit.c +Index: linux-2.6.16.60-0.37/fs/jbd/commit.c =================================================================== ---- linux-2.6.16.53-0.16.orig/fs/jbd/commit.c -+++ linux-2.6.16.53-0.16/fs/jbd/commit.c +--- linux-2.6.16.60-0.37.orig/fs/jbd/commit.c 2009-06-02 23:33:33.000000000 -0600 ++++ linux-2.6.16.60-0.37/fs/jbd/commit.c 2009-06-02 23:33:54.000000000 -0600 @@ -22,6 +22,7 @@ #include #include @@ -10,7 +10,7 @@ Index: linux-2.6.16.53-0.16/fs/jbd/commit.c /* * Default IO end handler for temporary BJ_IO buffer_heads. -@@ -94,19 +95,23 @@ static int inverted_lock(journal_t *jour +@@ -94,19 +95,23 @@ return 1; } @@ -38,7 +38,7 @@ Index: linux-2.6.16.53-0.16/fs/jbd/commit.c int barrier_done = 0; if (is_journal_aborted(journal)) -@@ -118,21 +123,34 @@ static int journal_write_commit_record(j +@@ -118,21 +123,34 @@ bh = jh2bh(descriptor); @@ -79,11 +79,11 @@ Index: linux-2.6.16.53-0.16/fs/jbd/commit.c - ret = sync_dirty_buffer(bh); + ret = submit_bh(WRITE, bh); + - if (barrier_done) - clear_buffer_ordered(bh); - /* is it possible for another commit to fail at roughly -@@ -153,12 +172,84 @@ static int journal_write_commit_record(j + if (barrier_done) clear_buffer_ordered(bh); + /* is it possible for another commit to fail at roughly +@@ -154,12 +172,84 @@ + /* And try again, without the barrier */ set_buffer_uptodate(bh); set_buffer_dirty(bh); - ret = sync_dirty_buffer(bh); @@ -170,8 +170,8 @@ Index: linux-2.6.16.53-0.16/fs/jbd/commit.c + return checksum; } - /* -@@ -184,6 +275,8 @@ void journal_commit_transaction(journal_ + void journal_do_submit_data(struct buffer_head **wbuf, int bufs) +@@ -296,6 +386,8 @@ int first_tag = 0; int tag_flag; int i; @@ -180,15 +180,15 @@ Index: linux-2.6.16.53-0.16/fs/jbd/commit.c /* * First job: lock down the current transaction and wait for -@@ -395,38 +488,15 @@ write_out_data: - } +@@ -439,38 +531,15 @@ + journal_submit_data_buffers(journal, commit_transaction); /* - * Wait for all previously submitted IO to complete. + * Wait for all previously submitted IO to complete if commit + * record is to be written synchronously. */ - spin_lock(&journal->j_list_lock); + spin_lock(&journal->j_list_lock); - while (commit_transaction->t_locked_list) { - struct buffer_head *bh; + if (!JFS_HAS_INCOMPAT_FEATURE(journal, @@ -225,7 +225,7 @@ Index: linux-2.6.16.53-0.16/fs/jbd/commit.c spin_unlock(&journal->j_list_lock); if (err) -@@ -598,6 +668,16 @@ write_out_data: +@@ -643,6 +712,16 @@ start_journal_io: for (i = 0; i < bufs; i++) { struct buffer_head *bh = wbuf[i]; @@ -242,7 +242,7 @@ Index: linux-2.6.16.53-0.16/fs/jbd/commit.c lock_buffer(bh); clear_buffer_dirty(bh); set_buffer_uptodate(bh); -@@ -614,6 +694,23 @@ start_journal_io: +@@ -659,6 +738,23 @@ } } @@ -266,7 +266,7 @@ Index: linux-2.6.16.53-0.16/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 -@@ -712,9 +809,15 @@ wait_for_iobuf: +@@ -757,9 +853,15 @@ } jbd_debug(3, "JBD: commit phase 6\n"); @@ -285,73 +285,10 @@ Index: linux-2.6.16.53-0.16/fs/jbd/commit.c if (err) __journal_abort_hard(journal); -Index: linux-2.6.16.53-0.16/include/linux/jbd.h -=================================================================== ---- linux-2.6.16.53-0.16.orig/include/linux/jbd.h -+++ linux-2.6.16.53-0.16/include/linux/jbd.h -@@ -142,6 +142,29 @@ typedef struct journal_header_s - __be32 h_sequence; - } journal_header_t; - -+/* -+ * Checksum types. -+ */ -+#define JFS_CRC32_CHKSUM 1 -+#define JFS_MD5_CHKSUM 2 -+#define JFS_SHA1_CHKSUM 3 -+ -+#define JFS_CRC32_CHKSUM_SIZE 4 -+ -+#define JFS_CHECKSUM_BYTES (32 / sizeof(u32)) -+/* -+ * Commit block header for storing transactional checksums: -+ */ -+struct commit_header -+{ -+ __be32 h_magic; -+ __be32 h_blocktype; -+ __be32 h_sequence; -+ unsigned char h_chksum_type; -+ unsigned char h_chksum_size; -+ unsigned char h_padding[2]; -+ __be32 h_chksum[JFS_CHECKSUM_BYTES]; -+}; - - /* - * The block tag: used to describe a single buffer in the journal -@@ -228,12 +251,16 @@ typedef struct journal_superblock_s - ((j)->j_format_version >= 2 && \ - ((j)->j_superblock->s_feature_incompat & cpu_to_be32((mask)))) - --#define JFS_FEATURE_INCOMPAT_REVOKE 0x00000001 -+#define JFS_FEATURE_COMPAT_CHECKSUM 0x00000001 -+ -+#define JFS_FEATURE_INCOMPAT_REVOKE 0x00000001 -+#define JFS_FEATURE_INCOMPAT_ASYNC_COMMIT 0x00000004 - - /* Features known to this kernel version: */ --#define JFS_KNOWN_COMPAT_FEATURES 0 -+#define JFS_KNOWN_COMPAT_FEATURES JFS_FEATURE_COMPAT_CHECKSUM - #define JFS_KNOWN_ROCOMPAT_FEATURES 0 --#define JFS_KNOWN_INCOMPAT_FEATURES JFS_FEATURE_INCOMPAT_REVOKE -+#define JFS_KNOWN_INCOMPAT_FEATURES (JFS_FEATURE_INCOMPAT_REVOKE | \ -+ JFS_FEATURE_INCOMPAT_ASYNC_COMMIT) - - #ifdef __KERNEL__ - -@@ -1041,6 +1068,8 @@ extern int journal_check_available_fe - (journal_t *, unsigned long, unsigned long, unsigned long); - extern int journal_set_features - (journal_t *, unsigned long, unsigned long, unsigned long); -+extern int journal_clear_features -+ (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.16.53-0.16/fs/jbd/recovery.c +Index: linux-2.6.16.60-0.37/fs/jbd/recovery.c =================================================================== ---- linux-2.6.16.53-0.16.orig/fs/jbd/recovery.c -+++ linux-2.6.16.53-0.16/fs/jbd/recovery.c +--- linux-2.6.16.60-0.37.orig/fs/jbd/recovery.c 2006-03-19 22:53:29.000000000 -0700 ++++ linux-2.6.16.60-0.37/fs/jbd/recovery.c 2009-06-02 23:33:54.000000000 -0600 @@ -21,6 +21,7 @@ #include #include @@ -360,7 +297,7 @@ Index: linux-2.6.16.53-0.16/fs/jbd/recovery.c #endif /* -@@ -307,6 +308,38 @@ int journal_skip_recovery(journal_t *jou +@@ -307,6 +308,38 @@ return err; } @@ -399,7 +336,7 @@ Index: linux-2.6.16.53-0.16/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 +@@ -318,6 +351,7 @@ struct buffer_head * bh; unsigned int sequence; int blocktype; @@ -407,7 +344,7 @@ Index: linux-2.6.16.53-0.16/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 +@@ -409,9 +443,24 @@ switch(blocktype) { case JFS_DESCRIPTOR_BLOCK: /* If it is a valid descriptor block, replay it @@ -434,7 +371,7 @@ Index: linux-2.6.16.53-0.16/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 +@@ -506,9 +555,97 @@ continue; case JFS_COMMIT_BLOCK: @@ -534,7 +471,7 @@ Index: linux-2.6.16.53-0.16/fs/jbd/recovery.c brelse(bh); next_commit_ID++; continue; -@@ -543,9 +680,10 @@ static int do_one_pass(journal_t *journa +@@ -543,9 +680,10 @@ * transaction marks the end of the valid log. */ @@ -548,11 +485,11 @@ Index: linux-2.6.16.53-0.16/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.16.53-0.16/fs/jbd/journal.c +Index: linux-2.6.16.60-0.37/fs/jbd/journal.c =================================================================== ---- linux-2.6.16.53-0.16.orig/fs/jbd/journal.c -+++ linux-2.6.16.53-0.16/fs/jbd/journal.c -@@ -64,6 +64,7 @@ EXPORT_SYMBOL(journal_update_format); +--- linux-2.6.16.60-0.37.orig/fs/jbd/journal.c 2009-06-02 23:33:33.000000000 -0600 ++++ linux-2.6.16.60-0.37/fs/jbd/journal.c 2009-06-02 23:33:54.000000000 -0600 +@@ -64,6 +64,7 @@ EXPORT_SYMBOL(journal_check_used_features); EXPORT_SYMBOL(journal_check_available_features); EXPORT_SYMBOL(journal_set_features); @@ -560,7 +497,7 @@ Index: linux-2.6.16.53-0.16/fs/jbd/journal.c EXPORT_SYMBOL(journal_create); EXPORT_SYMBOL(journal_load); EXPORT_SYMBOL(journal_destroy); -@@ -1565,6 +1566,33 @@ int journal_set_features (journal_t *jou +@@ -1565,6 +1566,33 @@ return 1; } @@ -594,11 +531,11 @@ Index: linux-2.6.16.53-0.16/fs/jbd/journal.c /** * int journal_update_format () - Update on-disk journal structure. -Index: linux-2.6.16.53-0.16/fs/Kconfig +Index: linux-2.6.16.60-0.37/fs/Kconfig =================================================================== ---- linux-2.6.16.53-0.16.orig/fs/Kconfig -+++ linux-2.6.16.53-0.16/fs/Kconfig -@@ -140,6 +140,7 @@ config EXT3_FS_SECURITY +--- linux-2.6.16.60-0.37.orig/fs/Kconfig 2009-03-24 05:46:35.000000000 -0700 ++++ linux-2.6.16.60-0.37/fs/Kconfig 2009-06-02 23:33:54.000000000 -0600 +@@ -140,6 +140,7 @@ config JBD tristate @@ -606,11 +543,74 @@ Index: linux-2.6.16.53-0.16/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.16.53-0.16/Documentation/filesystems/ext3.txt +Index: linux-2.6.16.60-0.37/include/linux/jbd.h +=================================================================== +--- linux-2.6.16.60-0.37.orig/include/linux/jbd.h 2009-06-02 23:33:33.000000000 -0600 ++++ linux-2.6.16.60-0.37/include/linux/jbd.h 2009-06-02 23:33:54.000000000 -0600 +@@ -142,6 +142,29 @@ + __be32 h_sequence; + } journal_header_t; + ++/* ++ * Checksum types. ++ */ ++#define JFS_CRC32_CHKSUM 1 ++#define JFS_MD5_CHKSUM 2 ++#define JFS_SHA1_CHKSUM 3 ++ ++#define JFS_CRC32_CHKSUM_SIZE 4 ++ ++#define JFS_CHECKSUM_BYTES (32 / sizeof(u32)) ++/* ++ * Commit block header for storing transactional checksums: ++ */ ++struct commit_header ++{ ++ __be32 h_magic; ++ __be32 h_blocktype; ++ __be32 h_sequence; ++ unsigned char h_chksum_type; ++ unsigned char h_chksum_size; ++ unsigned char h_padding[2]; ++ __be32 h_chksum[JFS_CHECKSUM_BYTES]; ++}; + + /* + * The block tag: used to describe a single buffer in the journal +@@ -228,12 +251,16 @@ + ((j)->j_format_version >= 2 && \ + ((j)->j_superblock->s_feature_incompat & cpu_to_be32((mask)))) + +-#define JFS_FEATURE_INCOMPAT_REVOKE 0x00000001 ++#define JFS_FEATURE_COMPAT_CHECKSUM 0x00000001 ++ ++#define JFS_FEATURE_INCOMPAT_REVOKE 0x00000001 ++#define JFS_FEATURE_INCOMPAT_ASYNC_COMMIT 0x00000004 + + /* Features known to this kernel version: */ +-#define JFS_KNOWN_COMPAT_FEATURES 0 ++#define JFS_KNOWN_COMPAT_FEATURES JFS_FEATURE_COMPAT_CHECKSUM + #define JFS_KNOWN_ROCOMPAT_FEATURES 0 +-#define JFS_KNOWN_INCOMPAT_FEATURES JFS_FEATURE_INCOMPAT_REVOKE ++#define JFS_KNOWN_INCOMPAT_FEATURES (JFS_FEATURE_INCOMPAT_REVOKE | \ ++ JFS_FEATURE_INCOMPAT_ASYNC_COMMIT) + + #ifdef __KERNEL__ + +@@ -1041,6 +1068,8 @@ + (journal_t *, unsigned long, unsigned long, unsigned long); + extern int journal_set_features + (journal_t *, unsigned long, unsigned long, unsigned long); ++extern int journal_clear_features ++ (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.16.60-0.37/Documentation/filesystems/ext3.txt =================================================================== ---- linux-2.6.16.53-0.16.orig/Documentation/filesystems/ext3.txt -+++ linux-2.6.16.53-0.16/Documentation/filesystems/ext3.txt -@@ -14,6 +14,16 @@ Options +--- linux-2.6.16.60-0.37.orig/Documentation/filesystems/ext3.txt 2006-03-19 22:53:29.000000000 -0700 ++++ linux-2.6.16.60-0.37/Documentation/filesystems/ext3.txt 2009-06-02 23:33:54.000000000 -0600 +@@ -14,6 +14,16 @@ When mounting an ext3 filesystem, the following option are accepted: (*) == default diff --git a/lustre/kernel_patches/patches/proc-sleep-2.6.16-sles10.patch b/lustre/kernel_patches/patches/proc-sleep-2.6.16-sles10.patch index e523db2..dce8e49 100644 --- a/lustre/kernel_patches/patches/proc-sleep-2.6.16-sles10.patch +++ b/lustre/kernel_patches/patches/proc-sleep-2.6.16-sles10.patch @@ -24,10 +24,10 @@ Signed-off-by: Nikita Danilov kernel/sleep_info.c | 392 +++++++++++++++++++++++++++++++++++++++++++++ 13 files changed, 560 insertions(+), 15 deletions(-) -Index: linux-2.6.16.46-0.14/Makefile +Index: linux-2.6.16.60-0.37/Makefile =================================================================== ---- linux-2.6.16.46-0.14.orig/Makefile 2007-07-18 08:02:30.000000000 +0300 -+++ linux-2.6.16.46-0.14/Makefile 2007-08-30 05:56:23.000000000 +0300 +--- linux-2.6.16.60-0.37.orig/Makefile 2009-03-24 05:46:28.000000000 -0700 ++++ linux-2.6.16.60-0.37/Makefile 2009-06-02 23:34:02.000000000 -0600 @@ -493,6 +493,10 @@ CFLAGS += -fomit-frame-pointer endif @@ -39,10 +39,10 @@ Index: linux-2.6.16.46-0.14/Makefile ifdef CONFIG_DEBUG_INFO CFLAGS += -g endif -Index: linux-2.6.16.46-0.14/arch/i386/Kconfig.debug +Index: linux-2.6.16.60-0.37/arch/i386/Kconfig.debug =================================================================== ---- linux-2.6.16.46-0.14.orig/arch/i386/Kconfig.debug 2007-07-18 08:02:28.000000000 +0300 -+++ linux-2.6.16.46-0.14/arch/i386/Kconfig.debug 2007-08-30 05:56:23.000000000 +0300 +--- linux-2.6.16.60-0.37.orig/arch/i386/Kconfig.debug 2009-03-24 05:46:35.000000000 -0700 ++++ linux-2.6.16.60-0.37/arch/i386/Kconfig.debug 2009-06-02 23:34:02.000000000 -0600 @@ -190,4 +190,13 @@ say N then kdb can only be used from a PC (AT) keyboard or a serial console. @@ -57,14 +57,14 @@ Index: linux-2.6.16.46-0.14/arch/i386/Kconfig.debug + N. + endmenu -Index: linux-2.6.16.46-0.14/arch/x86_64/Kconfig.debug +Index: linux-2.6.16.60-0.37/arch/x86_64/Kconfig.debug =================================================================== ---- linux-2.6.16.46-0.14.orig/arch/x86_64/Kconfig.debug 2007-07-18 08:02:30.000000000 +0300 -+++ linux-2.6.16.46-0.14/arch/x86_64/Kconfig.debug 2007-08-30 05:56:23.000000000 +0300 -@@ -122,6 +122,21 @@ +--- linux-2.6.16.60-0.37.orig/arch/x86_64/Kconfig.debug 2009-03-24 05:46:35.000000000 -0700 ++++ linux-2.6.16.60-0.37/arch/x86_64/Kconfig.debug 2009-06-02 23:34:02.000000000 -0600 +@@ -123,6 +123,21 @@ + If you are not sure, say 0. Read Documentation/kdb/dump.txt before setting to 2. - +config FRAME_POINTER + bool "Compile the kernel with frame pointers" + help @@ -83,7 +83,7 @@ Index: linux-2.6.16.46-0.14/arch/x86_64/Kconfig.debug config IOMMU_DEBUG depends on GART_IOMMU && DEBUG_KERNEL bool "Enable IOMMU debugging" -@@ -148,4 +163,13 @@ +@@ -149,4 +164,13 @@ #config X86_REMOTE_DEBUG # bool "kgdb debugging stub" @@ -97,10 +97,10 @@ Index: linux-2.6.16.46-0.14/arch/x86_64/Kconfig.debug + N. + endmenu -Index: linux-2.6.16.46-0.14/fs/proc/base.c +Index: linux-2.6.16.60-0.37/fs/proc/base.c =================================================================== ---- linux-2.6.16.46-0.14.orig/fs/proc/base.c 2007-07-18 08:02:25.000000000 +0300 -+++ linux-2.6.16.46-0.14/fs/proc/base.c 2007-08-30 06:15:24.000000000 +0300 +--- linux-2.6.16.60-0.37.orig/fs/proc/base.c 2009-03-24 05:46:34.000000000 -0700 ++++ linux-2.6.16.60-0.37/fs/proc/base.c 2009-06-02 23:34:02.000000000 -0600 @@ -167,7 +167,9 @@ #endif PROC_TID_OOM_SCORE, @@ -145,10 +145,10 @@ Index: linux-2.6.16.46-0.14/fs/proc/base.c default: printk("procfs: impossible type (%d)",p->type); iput(inode); -Index: linux-2.6.16.46-0.14/fs/proc/proc_misc.c +Index: linux-2.6.16.60-0.37/fs/proc/proc_misc.c =================================================================== ---- linux-2.6.16.46-0.14.orig/fs/proc/proc_misc.c 2007-07-18 08:02:25.000000000 +0300 -+++ linux-2.6.16.46-0.14/fs/proc/proc_misc.c 2007-08-30 05:56:23.000000000 +0300 +--- linux-2.6.16.60-0.37.orig/fs/proc/proc_misc.c 2009-03-24 05:46:28.000000000 -0700 ++++ linux-2.6.16.60-0.37/fs/proc/proc_misc.c 2009-06-02 23:34:02.000000000 -0600 @@ -414,6 +414,11 @@ .release = seq_release, }; @@ -170,19 +170,19 @@ Index: linux-2.6.16.46-0.14/fs/proc/proc_misc.c + create_seq_entry("stacktrace", 0, &proc_global_stack_operations); +#endif } -Index: linux-2.6.16.46-0.14/include/linux/sched.h +Index: linux-2.6.16.60-0.37/include/linux/sched.h =================================================================== ---- linux-2.6.16.46-0.14.orig/include/linux/sched.h 2007-07-18 08:02:36.000000000 +0300 -+++ linux-2.6.16.46-0.14/include/linux/sched.h 2007-08-30 06:02:43.000000000 +0300 +--- linux-2.6.16.60-0.37.orig/include/linux/sched.h 2009-03-24 05:46:36.000000000 -0700 ++++ linux-2.6.16.60-0.37/include/linux/sched.h 2009-06-02 23:34:02.000000000 -0600 @@ -35,6 +35,7 @@ #include #include #include +#include - #include /* For AT_VECTOR_SIZE */ -@@ -679,6 +680,8 @@ + struct exec_domain; +@@ -700,6 +701,8 @@ unsigned long ttwu_move_affine; unsigned long ttwu_move_balance; #endif @@ -191,10 +191,10 @@ Index: linux-2.6.16.46-0.14/include/linux/sched.h }; extern void partition_sched_domains(cpumask_t *partition1, -Index: linux-2.6.16.46-0.14/include/linux/sleep_info.h +Index: linux-2.6.16.60-0.37/include/linux/sleep_info.h =================================================================== ---- linux-2.6.16.46-0.14.orig/include/linux/sleep_info.h 2006-06-16 16:07:58.000000000 +0300 -+++ linux-2.6.16.46-0.14/include/linux/sleep_info.h 2007-08-30 05:56:23.000000000 +0300 +--- linux-2.6.16.60-0.37.orig/include/linux/sleep_info.h 2009-05-19 04:30:11.057558880 -0600 ++++ linux-2.6.16.60-0.37/include/linux/sleep_info.h 2009-06-02 23:34:02.000000000 -0600 @@ -0,0 +1,50 @@ +#ifndef _LINUX_SLEEP_INFO_H +#define _LINUX_SLEEP_INFO_H @@ -246,10 +246,10 @@ Index: linux-2.6.16.46-0.14/include/linux/sleep_info.h + +/* _LINUX_SLEEP_INFO_H */ +#endif -Index: linux-2.6.16.46-0.14/kernel/Makefile +Index: linux-2.6.16.60-0.37/kernel/Makefile =================================================================== ---- linux-2.6.16.46-0.14.orig/kernel/Makefile 2007-07-18 08:02:35.000000000 +0300 -+++ linux-2.6.16.46-0.14/kernel/Makefile 2007-08-30 06:12:26.000000000 +0300 +--- linux-2.6.16.60-0.37.orig/kernel/Makefile 2009-03-24 05:46:32.000000000 -0700 ++++ linux-2.6.16.60-0.37/kernel/Makefile 2009-06-02 23:34:02.000000000 -0600 @@ -38,6 +38,7 @@ obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o obj-$(CONFIG_PAGG) += pagg.o @@ -258,10 +258,10 @@ Index: linux-2.6.16.46-0.14/kernel/Makefile ifneq ($(CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER),y) # According to Alan Modra , the -fno-omit-frame-pointer is -Index: linux-2.6.16.46-0.14/kernel/exit.c +Index: linux-2.6.16.60-0.37/kernel/exit.c =================================================================== ---- linux-2.6.16.46-0.14.orig/kernel/exit.c 2007-08-30 05:43:46.000000000 +0300 -+++ linux-2.6.16.46-0.14/kernel/exit.c 2007-08-30 06:13:03.000000000 +0300 +--- linux-2.6.16.60-0.37.orig/kernel/exit.c 2009-03-24 05:46:32.000000000 -0700 ++++ linux-2.6.16.60-0.37/kernel/exit.c 2009-06-02 23:34:02.000000000 -0600 @@ -39,6 +39,7 @@ #include #include @@ -270,18 +270,18 @@ Index: linux-2.6.16.46-0.14/kernel/exit.c #include #include -@@ -114,6 +115,7 @@ +@@ -119,6 +120,7 @@ write_unlock_irq(&tasklist_lock); spin_unlock(&p->proc_lock); proc_pid_flush(proc_dentry); + free_sleep_info(&p->sinfo); release_thread(p); - put_task_struct(p); + call_rcu(&p->rcu, delayed_put_task_struct); -Index: linux-2.6.16.46-0.14/kernel/fork.c +Index: linux-2.6.16.60-0.37/kernel/fork.c =================================================================== ---- linux-2.6.16.46-0.14.orig/kernel/fork.c 2007-07-18 08:02:35.000000000 +0300 -+++ linux-2.6.16.46-0.14/kernel/fork.c 2007-08-30 06:13:36.000000000 +0300 +--- linux-2.6.16.60-0.37.orig/kernel/fork.c 2009-03-24 05:46:35.000000000 -0700 ++++ linux-2.6.16.60-0.37/kernel/fork.c 2009-06-02 23:34:02.000000000 -0600 @@ -48,6 +48,7 @@ #include #include @@ -290,7 +290,7 @@ Index: linux-2.6.16.46-0.14/kernel/fork.c #include #include -@@ -1222,6 +1223,8 @@ +@@ -1247,6 +1248,8 @@ attach_pid(p, PIDTYPE_TGID, p->tgid); attach_pid(p, PIDTYPE_PID, p->pid); @@ -299,11 +299,11 @@ Index: linux-2.6.16.46-0.14/kernel/fork.c nr_threads++; total_forks++; spin_unlock(¤t->sighand->siglock); -Index: linux-2.6.16.46-0.14/kernel/sched.c +Index: linux-2.6.16.60-0.37/kernel/sched.c =================================================================== ---- linux-2.6.16.46-0.14.orig/kernel/sched.c 2007-08-30 05:43:48.000000000 +0300 -+++ linux-2.6.16.46-0.14/kernel/sched.c 2007-08-30 05:56:23.000000000 +0300 -@@ -2934,6 +2934,8 @@ +--- linux-2.6.16.60-0.37.orig/kernel/sched.c 2009-06-02 23:33:13.000000000 -0600 ++++ linux-2.6.16.60-0.37/kernel/sched.c 2009-06-02 23:34:02.000000000 -0600 +@@ -2971,6 +2971,8 @@ } profile_hit(SCHED_PROFILING, __builtin_return_address(0)); @@ -312,7 +312,7 @@ Index: linux-2.6.16.46-0.14/kernel/sched.c need_resched: preempt_disable(); prev = current; -@@ -3136,6 +3138,8 @@ +@@ -3173,6 +3175,8 @@ barrier(); if (unlikely(test_thread_flag(TIF_NEED_RESCHED))) goto need_resched; @@ -321,10 +321,10 @@ Index: linux-2.6.16.46-0.14/kernel/sched.c } EXPORT_SYMBOL(preempt_schedule); -Index: linux-2.6.16.46-0.14/kernel/sleep_info.c +Index: linux-2.6.16.60-0.37/kernel/sleep_info.c =================================================================== ---- linux-2.6.16.46-0.14.orig/kernel/sleep_info.c 2006-06-16 16:07:58.000000000 +0300 -+++ linux-2.6.16.46-0.14/kernel/sleep_info.c 2007-08-30 05:56:23.000000000 +0300 +--- linux-2.6.16.60-0.37.orig/kernel/sleep_info.c 2009-05-19 04:30:11.057558880 -0600 ++++ linux-2.6.16.60-0.37/kernel/sleep_info.c 2009-06-02 23:34:02.000000000 -0600 @@ -0,0 +1,431 @@ +#include +#include diff --git a/lustre/kernel_patches/patches/sd_iostats-2.6-rhel5.patch b/lustre/kernel_patches/patches/sd_iostats-2.6-rhel5.patch index d0cc6f6..2297f8c 100644 --- a/lustre/kernel_patches/patches/sd_iostats-2.6-rhel5.patch +++ b/lustre/kernel_patches/patches/sd_iostats-2.6-rhel5.patch @@ -1,10 +1,10 @@ -Index: linux-2.6.18-53.1.21/drivers/scsi/Kconfig +Index: linux-2.6.16.60-0.37/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 - In this case, do not compile the driver for your SCSI host adapter - (below) as a module either. +--- linux-2.6.16.60-0.37.orig/drivers/scsi/Kconfig 2009-03-24 05:46:32.000000000 -0700 ++++ linux-2.6.16.60-0.37/drivers/scsi/Kconfig 2009-06-02 23:33:14.000000000 -0600 +@@ -78,6 +78,14 @@ + To compile this driver as a module, choose M here and read + . The module will be called st. +config SD_IOSTATS + bool "Enable SCSI disk I/O stats" @@ -14,13 +14,13 @@ Index: linux-2.6.18-53.1.21/drivers/scsi/Kconfig + This enables SCSI disk I/O stats collection. You must also enable + /proc file system support if you want this feature. + - config CHR_DEV_ST - tristate "SCSI tape support" - depends on SCSI -Index: linux-2.6.18-53.1.21/drivers/scsi/scsi_proc.c + config CHR_DEV_OSST + tristate "SCSI OnStream SC-x0 tape support" + depends on SCSI +Index: linux-2.6.16.60-0.37/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.16.60-0.37.orig/drivers/scsi/scsi_proc.c 2009-03-24 05:46:25.000000000 -0700 ++++ linux-2.6.16.60-0.37/drivers/scsi/scsi_proc.c 2009-06-02 23:33:14.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,11 +31,11 @@ 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.16.60-0.37/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 -@@ -62,6 +62,63 @@ +--- linux-2.6.16.60-0.37.orig/drivers/scsi/sd.c 2009-03-24 05:46:25.000000000 -0700 ++++ linux-2.6.16.60-0.37/drivers/scsi/sd.c 2009-06-02 23:33:14.000000000 -0600 +@@ -63,6 +63,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 { +@@ -127,6 +184,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 +@@ -520,6 +580,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 +@@ -1014,6 +1076,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) +@@ -1713,6 +1776,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) +@@ -1756,6 +1849,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 +@@ -1774,10 +2227,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: +@@ -1844,6 +2303,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) +@@ -1854,9 +2314,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) +@@ -1875,6 +2339,7 @@ unregister_blkdev(sd_major(i), "sd"); class_unregister(&sd_disk_class); diff --git a/lustre/kernel_patches/targets/2.6-sles10.target.in b/lustre/kernel_patches/targets/2.6-sles10.target.in index 9461f61..02908c0 100644 --- a/lustre/kernel_patches/targets/2.6-sles10.target.in +++ b/lustre/kernel_patches/targets/2.6-sles10.target.in @@ -3,7 +3,7 @@ lnxmin=".60" # when we fix up this lnxmaj/lnxmin/lnxrel business... #lnxrel="0.33" # and note that this means we get rid of the EXTRA_VERSION_DELIMITER crap!! -lnxrel="60-0.33" +lnxrel="60-0.37_f594963d" # this is the delimeter that goes between $lnxmaj and $lnxrel # defaults to "-" diff --git a/lustre/kernel_patches/which_patch b/lustre/kernel_patches/which_patch index c059fa5..8253b37 100644 --- a/lustre/kernel_patches/which_patch +++ b/lustre/kernel_patches/which_patch @@ -2,7 +2,7 @@ SERIES VERSION COMMENT SUPPORTED KERNELS: 2.6-rhel4 RHEL4: 2.6.9-67.0.20.EL -2.6-sles10 SLES10: 2.6.16.60-0.33 +2.6-sles10 SLES10: 2.6.16.60-0.37 2.6-rhel5 RHEL5: 2.6.18-128.1.1.el5 2.6.18-vanilla kernel.org: 2.6.18.8 2.6.22-vanilla kernel.org: 2.6.22.14 -- 1.8.3.1