rpms/kernel/FC-5 linux-2.6-ext3-16tb-overflow-fixes.patch, NONE, 1.1 linux-2.6-jbd-fix-commit-of-ordered-data-buffers.patch, NONE, 1.1 linux-2.6-nfs-client-double_d-drop.patch, NONE, 1.1 linux-2.6-nfs-selinux-oops.patch, NONE, 1.1 linux-2.6-ppc-isapnp.patch, NONE, 1.1 linux-2.6.17-nfs-fix_client_shutdown.patch, NONE, 1.1 git-agpgart.patch, 1.1, 1.2 kernel-2.6.spec, 1.2194, 1.2195 linux-2.6-gfs2-dlm.patch, 1.1, 1.2 linux-2.6-utrace.patch, 1.1, 1.2 linux-2.6-x86_64-opterons-synchronize-p-state-using-TSC.patch, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Mon Oct 2 03:39:44 UTC 2006


Author: davej

Update of /cvs/dist/rpms/kernel/FC-5
In directory cvs.devel.redhat.com:/tmp/cvs-serv12156

Modified Files:
	git-agpgart.patch kernel-2.6.spec linux-2.6-gfs2-dlm.patch 
	linux-2.6-utrace.patch 
Added Files:
	linux-2.6-ext3-16tb-overflow-fixes.patch 
	linux-2.6-jbd-fix-commit-of-ordered-data-buffers.patch 
	linux-2.6-nfs-client-double_d-drop.patch 
	linux-2.6-nfs-selinux-oops.patch linux-2.6-ppc-isapnp.patch 
	linux-2.6.17-nfs-fix_client_shutdown.patch 
Removed Files:
	linux-2.6-x86_64-opterons-synchronize-p-state-using-TSC.patch 
Log Message:
sync up some bits from devel/

linux-2.6-ext3-16tb-overflow-fixes.patch:
 fs/ext3/super.c                          |   34 +++++++++++++++++--------------
 linux-2.6.17-1.2654.el5/fs/ext3/balloc.c |   11 +++++-----
 linux-2.6.17-1.2654.el5/fs/ext3/ialloc.c |    6 ++---
 linux-2.6.17-1.2654.el5/fs/ext3/inode.c  |    2 -
 linux-2.6.17-1.2654.el5/fs/ext3/namei.c  |    4 +--
 linux-2.6.17-1.2654.el5/fs/ext3/resize.c |   17 +++++++++++++++
 linux-2.6.17-1.2654.el5/fs/ext3/super.c  |   25 +++++++++++-----------
 linux-2.6.17-1.2654.el5/fs/ext3/xattr.c  |   16 +++++++-------
 8 files changed, 69 insertions(+), 46 deletions(-)

--- NEW FILE linux-2.6-ext3-16tb-overflow-fixes.patch ---
Date: Tue, 19 Sep 2006 15:33:04 -0500
From: Eric Sandeen <esandeen at redhat.com>
Subject: [RHEL5 Patch 3/3] (resend) Fix ext3 32-bit inodes

This one is in the -mm tree as ext3-inode-numbers-are-unsigned-long.patch,
resent to accomodate sct's request for uints instead; just pinged akpm
to pick up the ulonglong->uint change.

This is primarily format string fixes, with changes to ialloc.c where large
inode counts could overflow, and also pass around journal_inum as an
unsigned long, just to be pedantic about it....

Signed-off-by: Eric Sandeen <esandeen at redhat.com>
Cc: Mingming Cao <cmm at us.ibm.com>
Signed-off-by: Andrew Morton <akpm at osdl.org>

Index: linux-2.6.17-1.2654.el5/fs/ext3/ialloc.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/ialloc.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/ialloc.c
@@ -202,7 +202,7 @@ error_return:
 static int find_group_dir(struct super_block *sb, struct inode *parent)
 {
 	int ngroups = EXT3_SB(sb)->s_groups_count;
-	int freei, avefreei;
+	unsigned int freei, avefreei;
 	struct ext3_group_desc *desc, *best_desc = NULL;
 	struct buffer_head *bh;
 	int group, best_group = -1;
@@ -261,10 +261,10 @@ static int find_group_orlov(struct super
 	struct ext3_super_block *es = sbi->s_es;
 	int ngroups = sbi->s_groups_count;
 	int inodes_per_group = EXT3_INODES_PER_GROUP(sb);
-	int freei, avefreei;
+	unsigned int freei, avefreei;
 	ext3_fsblk_t freeb, avefreeb;
 	ext3_fsblk_t blocks_per_dir;
-	int ndirs;
+	unsigned int ndirs;
 	int max_debt, max_dirs, min_inodes;
 	ext3_grpblk_t min_blocks;
 	int group = -1, i;
Index: linux-2.6.17-1.2654.el5/fs/ext3/inode.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/inode.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/inode.c
@@ -2115,7 +2115,7 @@ static void ext3_free_branches(handle_t 
 			 */
 			if (!bh) {
 				ext3_error(inode->i_sb, "ext3_free_branches",
-					   "Read failure, inode=%ld, block="E3FSBLK,
+					   "Read failure, inode=%lu, block="E3FSBLK,
 					   inode->i_ino, nr);
 				continue;
 			}
Index: linux-2.6.17-1.2654.el5/fs/ext3/namei.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/namei.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/namei.c
@@ -1919,8 +1919,8 @@ int ext3_orphan_add(handle_t *handle, st
 	if (!err)
 		list_add(&EXT3_I(inode)->i_orphan, &EXT3_SB(sb)->s_orphan);
 
-	jbd_debug(4, "superblock will point to %ld\n", inode->i_ino);
-	jbd_debug(4, "orphan inode %ld will point to %d\n",
+	jbd_debug(4, "superblock will point to %lu\n", inode->i_ino);
+	jbd_debug(4, "orphan inode %lu will point to %d\n",
 			inode->i_ino, NEXT_ORPHAN(inode));
 out_unlock:
 	unlock_super(sb);
Index: linux-2.6.17-1.2654.el5/fs/ext3/super.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/super.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/super.c
@@ -45,7 +45,7 @@
 static int ext3_load_journal(struct super_block *, struct ext3_super_block *,
 			     unsigned long journal_devnum);
 static int ext3_create_journal(struct super_block *, struct ext3_super_block *,
-			       int);
+			       unsigned int);
 static void ext3_commit_super (struct super_block * sb,
 			       struct ext3_super_block * es,
 			       int sync);
@@ -376,7 +376,7 @@ static void dump_orphan_list(struct supe
 	list_for_each(l, &sbi->s_orphan) {
 		struct inode *inode = orphan_list_entry(l);
 		printk(KERN_ERR "  "
-		       "inode %s:%ld at %p: mode %o, nlink %d, next %d\n",
+		       "inode %s:%lu at %p: mode %o, nlink %d, next %d\n",
 		       inode->i_sb->s_id, inode->i_ino, inode,
 		       inode->i_mode, inode->i_nlink, 
 		       NEXT_ORPHAN(inode));
@@ -711,7 +711,7 @@ static ext3_fsblk_t get_sb_block(void **
 }
 
 static int parse_options (char *options, struct super_block *sb,
-			  unsigned long *inum, unsigned long *journal_devnum,
+			  unsigned int *inum, unsigned long *journal_devnum,
 			  ext3_fsblk_t *n_blocks_count, int is_remount)
 {
 	struct ext3_sb_info *sbi = EXT3_SB(sb);
@@ -1264,17 +1264,17 @@ static void ext3_orphan_cleanup (struct 
 		DQUOT_INIT(inode);
 		if (inode->i_nlink) {
 			printk(KERN_DEBUG
-				"%s: truncating inode %ld to %Ld bytes\n",
+				"%s: truncating inode %lu to %Ld bytes\n",
 				__FUNCTION__, inode->i_ino, inode->i_size);
-			jbd_debug(2, "truncating inode %ld to %Ld bytes\n",
+			jbd_debug(2, "truncating inode %lu to %Ld bytes\n",
 				  inode->i_ino, inode->i_size);
 			ext3_truncate(inode);
 			nr_truncates++;
 		} else {
 			printk(KERN_DEBUG
-				"%s: deleting unreferenced inode %ld\n",
+				"%s: deleting unreferenced inode %lu\n",
 				__FUNCTION__, inode->i_ino);
-			jbd_debug(2, "deleting unreferenced inode %ld\n",
+			jbd_debug(2, "deleting unreferenced inode %lu\n",
 				  inode->i_ino);
 			nr_orphans++;
 		}
@@ -1353,7 +1353,7 @@ static int ext3_fill_super (struct super
 	ext3_fsblk_t sb_block = get_sb_block(&data);
 	ext3_fsblk_t logic_sb_block;
 	unsigned long offset = 0;
-	unsigned long journal_inum = 0;
+	unsigned int journal_inum = 0;
 	unsigned long journal_devnum = 0;
 	unsigned long def_mount_opts;
 	struct inode *root;
@@ -1802,7 +1802,8 @@ static void ext3_init_journal_params(str
 	spin_unlock(&journal->j_state_lock);
 }
 
-static journal_t *ext3_get_journal(struct super_block *sb, int journal_inum)
+static journal_t *ext3_get_journal(struct super_block *sb,
+				   unsigned int journal_inum)
 {
 	struct inode *journal_inode;
 	journal_t *journal;
@@ -1937,7 +1938,7 @@ static int ext3_load_journal(struct supe
 			     unsigned long journal_devnum)
 {
 	journal_t *journal;
-	int journal_inum = le32_to_cpu(es->s_journal_inum);
+	unsigned int journal_inum = le32_to_cpu(es->s_journal_inum);
 	dev_t journal_dev;
 	int err = 0;
 	int really_read_only;
@@ -2023,7 +2024,7 @@ static int ext3_load_journal(struct supe
 
 static int ext3_create_journal(struct super_block * sb,
 			       struct ext3_super_block * es,
-			       int journal_inum)
+			       unsigned int journal_inum)
 {
 	journal_t *journal;
 
@@ -2036,7 +2037,7 @@ static int ext3_create_journal(struct su
 	if (!(journal = ext3_get_journal(sb, journal_inum)))
 		return -EINVAL;
 
-	printk(KERN_INFO "EXT3-fs: creating new journal on inode %d\n",
+	printk(KERN_INFO "EXT3-fs: creating new journal on inode %u\n",
 	       journal_inum);
 
 	if (journal_create(journal)) {
Index: linux-2.6.17-1.2654.el5/fs/ext3/xattr.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/xattr.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/xattr.c
@@ -75,7 +75,7 @@
 
 #ifdef EXT3_XATTR_DEBUG
 # define ea_idebug(inode, f...) do { \
-		printk(KERN_DEBUG "inode %s:%ld: ", \
+		printk(KERN_DEBUG "inode %s:%lu: ", \
 			inode->i_sb->s_id, inode->i_ino); \
 		printk(f); \
 		printk("\n"); \
@@ -233,7 +233,7 @@ ext3_xattr_block_get(struct inode *inode
 		atomic_read(&(bh->b_count)), le32_to_cpu(BHDR(bh)->h_refcount));
 	if (ext3_xattr_check_block(bh)) {
 bad_block:	ext3_error(inode->i_sb, __FUNCTION__,
-			   "inode %ld: bad block "E3FSBLK, inode->i_ino,
+			   "inode %lu: bad block "E3FSBLK, inode->i_ino,
 			   EXT3_I(inode)->i_file_acl);
 		error = -EIO;
 		goto cleanup;
@@ -375,7 +375,7 @@ ext3_xattr_block_list(struct inode *inod
 		atomic_read(&(bh->b_count)), le32_to_cpu(BHDR(bh)->h_refcount));
 	if (ext3_xattr_check_block(bh)) {
 		ext3_error(inode->i_sb, __FUNCTION__,
-			   "inode %ld: bad block "E3FSBLK, inode->i_ino,
+			   "inode %lu: bad block "E3FSBLK, inode->i_ino,
 			   EXT3_I(inode)->i_file_acl);
 		error = -EIO;
 		goto cleanup;
@@ -647,7 +647,7 @@ ext3_xattr_block_find(struct inode *inod
 			le32_to_cpu(BHDR(bs->bh)->h_refcount));
 		if (ext3_xattr_check_block(bs->bh)) {
 			ext3_error(sb, __FUNCTION__,
-				"inode %ld: bad block "E3FSBLK, inode->i_ino,
+				"inode %lu: bad block "E3FSBLK, inode->i_ino,
 				EXT3_I(inode)->i_file_acl);
 			error = -EIO;
 			goto cleanup;
@@ -848,7 +848,7 @@ cleanup_dquot:
 
 bad_block:
 	ext3_error(inode->i_sb, __FUNCTION__,
-		   "inode %ld: bad block "E3FSBLK, inode->i_ino,
+		   "inode %lu: bad block "E3FSBLK, inode->i_ino,
 		   EXT3_I(inode)->i_file_acl);
 	goto cleanup;
 
@@ -1077,14 +1077,14 @@ ext3_xattr_delete_inode(handle_t *handle
 	bh = sb_bread(inode->i_sb, EXT3_I(inode)->i_file_acl);
 	if (!bh) {
 		ext3_error(inode->i_sb, __FUNCTION__,
-			"inode %ld: block "E3FSBLK" read error", inode->i_ino,
+			"inode %lu: block "E3FSBLK" read error", inode->i_ino,
 			EXT3_I(inode)->i_file_acl);
 		goto cleanup;
 	}
 	if (BHDR(bh)->h_magic != cpu_to_le32(EXT3_XATTR_MAGIC) ||
 	    BHDR(bh)->h_blocks != cpu_to_le32(1)) {
 		ext3_error(inode->i_sb, __FUNCTION__,
-			"inode %ld: bad block "E3FSBLK, inode->i_ino,
+			"inode %lu: bad block "E3FSBLK, inode->i_ino,
 			EXT3_I(inode)->i_file_acl);
 		goto cleanup;
 	}
@@ -1211,7 +1211,7 @@ again:
 		bh = sb_bread(inode->i_sb, ce->e_block);
 		if (!bh) {
 			ext3_error(inode->i_sb, __FUNCTION__,
-				"inode %ld: block %lu read error",
+				"inode %lu: block %lu read error",
 				inode->i_ino, (unsigned long) ce->e_block);
 		} else if (le32_to_cpu(BHDR(bh)->h_refcount) >=
 				EXT3_XATTR_REFCOUNT_MAX) {

Date: Tue, 19 Sep 2006 15:32:02 -0500
From: Eric Sandeen <esandeen at redhat.com>
Subject: [RHEL5 Patch 1/3] (resend) Fix ext3 overflows at 16T

This one is in -mm as fix-ext3-mounts-at-16t.patch and 
fix-ext3-mounts-at-16t-fix.patch  

this gets things mounting for a 16T ext3 filesystem.  (patched up 
e2fsprogs will be needed too, working on that)

jarod wilson has been helping with testing.

This patch fixes these issues in the kernel:

o sbi->s_groups_count overflows in ext3_fill_super()

	sbi->s_groups_count = (le32_to_cpu(es->s_blocks_count) -
			       le32_to_cpu(es->s_first_data_block) +
			       EXT3_BLOCKS_PER_GROUP(sb) - 1) /
			      EXT3_BLOCKS_PER_GROUP(sb);

  at 16T, s_blocks_count is already maxed out; adding
  EXT3_BLOCKS_PER_GROUP(sb) overflows it and groups_count comes out to 0. 
  Not really what we want, and causes a failed mount.

  Changing it this way works & avoids the overflow:

  (A + B - 1)/B changed to: ((A - 1)/B) + 1

o ext3_check_descriptors() overflows range checks

  ext3_check_descriptors() iterates over all block groups making sure
  that various bits are within the right block ranges...  on the last pass
  through, it is checking the error case

   [item] >= block + EXT3_BLOCKS_PER_GROUP(sb)

  where "block" is the first block in the last block group.  The last
  block in this group (and the last one that will fit in 32 bits) is block
  + EXT3_BLOCKS_PER_GROUP(sb)- 1.  block + EXT3_BLOCKS_PER_GROUP(sb) wraps
  back around to 0.

  so, make things clearer with "first_block" and "last_block" where those
  are first and last, inclusive, and use <, > rather than <, >=.

  Finally, the last block group may be smaller than the rest, so account
  for this on the last pass through: last_block = sb->s_blocks_count - 1;

Signed-off-by: Eric Sandeen <esandeen at redhat.com>
Cc: Mingming Cao <cmm at us.ibm.com>
Signed-off-by: Andrew Morton <akpm at osdl.org>

Index: linux-2.6.17-1.2654.el5/fs/ext3/super.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/super.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/super.c
@@ -1132,7 +1132,8 @@ static int ext3_setup_super(struct super
 static int ext3_check_descriptors (struct super_block * sb)
 {
 	struct ext3_sb_info *sbi = EXT3_SB(sb);
-	ext3_fsblk_t block = le32_to_cpu(sbi->s_es->s_first_data_block);
+	ext3_fsblk_t first_block = le32_to_cpu(sbi->s_es->s_first_data_block);
+	ext3_fsblk_t last_block;
 	struct ext3_group_desc * gdp = NULL;
 	int desc_block = 0;
 	int i;
@@ -1141,12 +1142,17 @@ static int ext3_check_descriptors (struc
 
 	for (i = 0; i < sbi->s_groups_count; i++)
 	{
+		if (i == sbi->s_groups_count - 1)
+			last_block = le32_to_cpu(sbi->s_es->s_blocks_count) - 1;
+		else
+			last_block = first_block +
+				(EXT3_BLOCKS_PER_GROUP(sb) - 1);
+
 		if ((i % EXT3_DESC_PER_BLOCK(sb)) == 0)
 			gdp = (struct ext3_group_desc *)
 					sbi->s_group_desc[desc_block++]->b_data;
-		if (le32_to_cpu(gdp->bg_block_bitmap) < block ||
-		    le32_to_cpu(gdp->bg_block_bitmap) >=
-				block + EXT3_BLOCKS_PER_GROUP(sb))
+		if (le32_to_cpu(gdp->bg_block_bitmap) < first_block ||
+		    le32_to_cpu(gdp->bg_block_bitmap) > last_block)
 		{
 			ext3_error (sb, "ext3_check_descriptors",
 				    "Block bitmap for group %d"
@@ -1155,9 +1161,8 @@ static int ext3_check_descriptors (struc
 					le32_to_cpu(gdp->bg_block_bitmap));
 			return 0;
 		}
-		if (le32_to_cpu(gdp->bg_inode_bitmap) < block ||
-		    le32_to_cpu(gdp->bg_inode_bitmap) >=
-				block + EXT3_BLOCKS_PER_GROUP(sb))
+		if (le32_to_cpu(gdp->bg_inode_bitmap) < first_block ||
+		    le32_to_cpu(gdp->bg_inode_bitmap) > last_block)
 		{
 			ext3_error (sb, "ext3_check_descriptors",
 				    "Inode bitmap for group %d"
@@ -1166,9 +1171,9 @@ static int ext3_check_descriptors (struc
 					le32_to_cpu(gdp->bg_inode_bitmap));
 			return 0;
 		}
-		if (le32_to_cpu(gdp->bg_inode_table) < block ||
-		    le32_to_cpu(gdp->bg_inode_table) + sbi->s_itb_per_group >=
-		    block + EXT3_BLOCKS_PER_GROUP(sb))
+		if (le32_to_cpu(gdp->bg_inode_table) < first_block ||
+		    le32_to_cpu(gdp->bg_inode_table) + sbi->s_itb_per_group >
+		    last_block)
 		{
 			ext3_error (sb, "ext3_check_descriptors",
 				    "Inode table for group %d"
@@ -1177,7 +1182,7 @@ static int ext3_check_descriptors (struc
 					le32_to_cpu(gdp->bg_inode_table));
 			return 0;
 		}
-		block += EXT3_BLOCKS_PER_GROUP(sb);
+		first_block += EXT3_BLOCKS_PER_GROUP(sb);
 		gdp++;
 	}
 
@@ -1580,10 +1585,9 @@ static int ext3_fill_super (struct super
 
 	if (EXT3_BLOCKS_PER_GROUP(sb) == 0)
 		goto cantfind_ext3;
-	sbi->s_groups_count = (le32_to_cpu(es->s_blocks_count) -
-			       le32_to_cpu(es->s_first_data_block) +
-			       EXT3_BLOCKS_PER_GROUP(sb) - 1) /
-			      EXT3_BLOCKS_PER_GROUP(sb);
+	sbi->s_groups_count = ((le32_to_cpu(es->s_blocks_count) -
+			       le32_to_cpu(es->s_first_data_block) - 1)
+				       / EXT3_BLOCKS_PER_GROUP(sb)) + 1;
 	db_count = (sbi->s_groups_count + EXT3_DESC_PER_BLOCK(sb) - 1) /
 		   EXT3_DESC_PER_BLOCK(sb);
 	sbi->s_group_desc = kmalloc(db_count * sizeof (struct buffer_head *),

Date: Tue, 19 Sep 2006 15:32:42 -0500
From: Eric Sandeen <esandeen at redhat.com>
Subject: [RHEL5 Patch 2/3] (resend) Fix more ext3 overflows at 16T

This is in akpm's tree as
more-ext3-16t-overflow-fixes.patch and more-ext3-16t-overflow-fixes-fix.patch

Some of the changes in balloc.c are just cosmetic -
if they overflow they'll then underflow and things are fine.

5th hunk actually fixes an overflow problem.

Also check for potential overflows in inode & block counts when resizing.

Signed-off-by: Eric Sandeen <esandeen at redhat.com>
Cc: Mingming Cao <cmm at us.ibm.com>
Signed-off-by: Andrew Morton <akpm at osdl.org>

Index: linux-2.6.17-1.2654.el5/fs/ext3/balloc.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/balloc.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/balloc.c
@@ -168,7 +168,7 @@ goal_in_my_reservation(struct ext3_reser
 	ext3_fsblk_t group_first_block, group_last_block;
 
 	group_first_block = ext3_group_first_block_no(sb, group);
-	group_last_block = group_first_block + EXT3_BLOCKS_PER_GROUP(sb) - 1;
+	group_last_block = group_first_block + (EXT3_BLOCKS_PER_GROUP(sb) - 1);
 
 	if ((rsv->_rsv_start > group_last_block) ||
 	    (rsv->_rsv_end < group_first_block))
@@ -897,7 +897,7 @@ static int alloc_new_reservation(struct 
 	spinlock_t *rsv_lock = &EXT3_SB(sb)->s_rsv_window_lock;
 
 	group_first_block = ext3_group_first_block_no(sb, group);
-	group_end_block = group_first_block + EXT3_BLOCKS_PER_GROUP(sb) - 1;
+	group_end_block = group_first_block + (EXT3_BLOCKS_PER_GROUP(sb) - 1);
 
 	if (grp_goal < 0)
 		start_block = group_first_block;
@@ -1063,7 +1063,7 @@ ext3_try_to_allocate_with_rsv(struct sup
 			struct ext3_reserve_window_node * my_rsv,
 			unsigned long *count, int *errp)
 {
-	ext3_fsblk_t group_first_block;
+	ext3_fsblk_t group_first_block, group_last_block;
 	ext3_grpblk_t ret = 0;
 	int fatal;
 	unsigned long num = *count;
@@ -1100,6 +1100,7 @@ ext3_try_to_allocate_with_rsv(struct sup
 	 * first block is the block number of the first block in this group
 	 */
 	group_first_block = ext3_group_first_block_no(sb, group);
+	group_last_block = group_first_block + (EXT3_BLOCKS_PER_GROUP(sb) - 1);
 
 	/*
 	 * Basically we will allocate a new block from inode's reservation
@@ -1132,8 +1133,8 @@ ext3_try_to_allocate_with_rsv(struct sup
 			try_to_extend_reservation(my_rsv, sb,
 					*count-my_rsv->rsv_end + grp_goal - 1);
 
-		if ((my_rsv->rsv_start >= group_first_block + EXT3_BLOCKS_PER_GROUP(sb))
-		    || (my_rsv->rsv_end < group_first_block))
+		if ((my_rsv->rsv_start > group_last_block) ||
+				(my_rsv->rsv_end < group_first_block))
 			BUG();
 		ret = ext3_try_to_allocate(sb, handle, group, bitmap_bh, grp_goal,
 					   &num, &my_rsv->rsv_window);
Index: linux-2.6.17-1.2654.el5/fs/ext3/resize.c
===================================================================
--- linux-2.6.17-1.2654.el5.orig/fs/ext3/resize.c
+++ linux-2.6.17-1.2654.el5/fs/ext3/resize.c
@@ -730,6 +730,18 @@ int ext3_group_add(struct super_block *s
 		return -EPERM;
 	}
 
+	if (le32_to_cpu(es->s_blocks_count) + input->blocks_count <
+	    le32_to_cpu(es->s_blocks_count)) {
+		ext3_warning(sb, __FUNCTION__, "blocks_count overflow\n");
+		return -EINVAL;
+	}
+
+	if (le32_to_cpu(es->s_inodes_count) + EXT3_INODES_PER_GROUP(sb) <
+	    le32_to_cpu(es->s_inodes_count)) {
+		ext3_warning(sb, __FUNCTION__, "inodes_count overflow\n");
+		return -EINVAL;
+	}
+
 	if (reserved_gdb || gdb_off == 0) {
 		if (!EXT3_HAS_COMPAT_FEATURE(sb,
 					     EXT3_FEATURE_COMPAT_RESIZE_INODE)){
@@ -958,6 +970,11 @@ int ext3_group_extend(struct super_block
 
 	add = EXT3_BLOCKS_PER_GROUP(sb) - last;
 
+	if (o_blocks_count + add < o_blocks_count) {
+		ext3_warning(sb, __FUNCTION__, "blocks_count overflow");
+		return -EINVAL;
+	}
+
 	if (o_blocks_count + add > n_blocks_count)
 		add = n_blocks_count - o_blocks_count;
 


linux-2.6-jbd-fix-commit-of-ordered-data-buffers.patch:
 commit.c |  182 +++++++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 113 insertions(+), 69 deletions(-)

--- NEW FILE linux-2.6-jbd-fix-commit-of-ordered-data-buffers.patch ---
From: Jan Kara <jack at suse.cz>

Original commit code assumes, that when a buffer on BJ_SyncData list is
locked, it is being written to disk.  But this is not true and hence it can
lead to a potential data loss on crash.  Also the code didn't count with
the fact that journal_dirty_data() can steal buffers from committing
transaction and hence could write buffers that no longer belong to the
committing transaction.  Finally it could possibly happen that we tried
writing out one buffer several times.

The patch below tries to solve these problems by a complete rewrite of the
data commit code.  We go through buffers on t_sync_datalist, lock buffers
needing write out and store them in an array.  Buffers are also immediately
refiled to BJ_Locked list or unfiled (if the write out is completed).  When
the array is full or we have to block on buffer lock, we submit all
accumulated buffers for IO.

[suitable for 2.6.18.x around the 2.6.19-rc2 timeframe]

Signed-off-by: Jan Kara <jack at suse.cz>
Cc: Badari Pulavarty <pbadari at us.ibm.com>
Cc: <stable at kernel.org>
Signed-off-by: Andrew Morton <akpm at osdl.org>
---

 fs/jbd/commit.c |  182 ++++++++++++++++++++++++++++------------------
 1 files changed, 113 insertions(+), 69 deletions(-)

diff -puN fs/jbd/commit.c~jbd-fix-commit-of-ordered-data-buffers fs/jbd/commit.c
--- a/fs/jbd/commit.c~jbd-fix-commit-of-ordered-data-buffers
+++ a/fs/jbd/commit.c
@@ -160,6 +160,117 @@ static int journal_write_commit_record(j
 	return (ret == -EIO);
 }
 
+static void journal_do_submit_data(struct buffer_head **wbuf, int bufs)
+{
+	int i;
+
+	for (i = 0; i < bufs; i++) {
+		wbuf[i]->b_end_io = end_buffer_write_sync;
+		/* We use-up our safety reference in submit_bh() */
+		submit_bh(WRITE, wbuf[i]);
+	}
+}
+
+/*
+ *  Submit all the data buffers to disk
+ */
+static void journal_submit_data_buffers(journal_t *journal,
+				transaction_t *commit_transaction)
+{
+	struct journal_head *jh;
+	struct buffer_head *bh;
+	int locked;
+	int bufs = 0;
+	struct buffer_head **wbuf = journal->j_wbuf;
+
+	/*
+	 * Whenever we unlock the journal and sleep, things can get added
+	 * onto ->t_sync_datalist, so we have to keep looping back to
+	 * write_out_data until we *know* that the list is empty.
+	 *
+	 * Cleanup any flushed data buffers from the data list.  Even in
+	 * abort mode, we want to flush this out as soon as possible.
+	 */
+write_out_data:
+	cond_resched();
+	spin_lock(&journal->j_list_lock);
+
+	while (commit_transaction->t_sync_datalist) {
+		jh = commit_transaction->t_sync_datalist;
+		bh = jh2bh(jh);
+		locked = 0;
+
+		/* Get reference just to make sure buffer does not disappear
+		 * when we are forced to drop various locks */
+		get_bh(bh);
+		/* If the buffer is dirty, we need to submit IO and hence
+		 * we need the buffer lock. We try to lock the buffer without
+		 * blocking. If we fail, we need to drop j_list_lock and do
+		 * blocking lock_buffer().
+		 */
+		if (buffer_dirty(bh)) {
+			if (test_set_buffer_locked(bh)) {
+				BUFFER_TRACE(bh, "needs blocking lock");
+				spin_unlock(&journal->j_list_lock);
+				/* Write out all data to prevent deadlocks */
+				journal_do_submit_data(wbuf, bufs);
+				bufs = 0;
+				lock_buffer(bh);
+				spin_lock(&journal->j_list_lock);
+			}
+			locked = 1;
+		}
+		/* We have to get bh_state lock. Again out of order, sigh. */
+		if (!inverted_lock(journal, bh)) {
+			jbd_lock_bh_state(bh);
+			spin_lock(&journal->j_list_lock);
+		}
+		/* Someone already cleaned up the buffer? */
+		if (!buffer_jbd(bh)
+			|| jh->b_transaction != commit_transaction
+			|| jh->b_jlist != BJ_SyncData) {
+			jbd_unlock_bh_state(bh);
+			if (locked)
+				unlock_buffer(bh);
+			BUFFER_TRACE(bh, "already cleaned up");
+			put_bh(bh);
+			continue;
+		}
+		if (locked && test_clear_buffer_dirty(bh)) {
+			BUFFER_TRACE(bh, "needs writeout, adding to array");
+			wbuf[bufs++] = bh;
+			__journal_file_buffer(jh, commit_transaction,
+						BJ_Locked);
+			jbd_unlock_bh_state(bh);
+			if (bufs == journal->j_wbufsize) {
+				spin_unlock(&journal->j_list_lock);
+				journal_do_submit_data(wbuf, bufs);
+				bufs = 0;
+				goto write_out_data;
+			}
+		}
+		else {
+			BUFFER_TRACE(bh, "writeout complete: unfile");
+			__journal_unfile_buffer(jh);
+			jbd_unlock_bh_state(bh);
+			if (locked)
+				unlock_buffer(bh);
+			journal_remove_journal_head(bh);
+			/* Once for our safety reference, once for
+			 * journal_remove_journal_head() */
+			put_bh(bh);
+			put_bh(bh);
+		}
+
+		if (lock_need_resched(&journal->j_list_lock)) {
+			spin_unlock(&journal->j_list_lock);
+			goto write_out_data;
+		}
+	}
+	spin_unlock(&journal->j_list_lock);
+	journal_do_submit_data(wbuf, bufs);
+}
+
 /*
  * journal_commit_transaction
  *
@@ -313,80 +424,13 @@ void journal_commit_transaction(journal_
 	 * Now start flushing things to disk, in the order they appear
 	 * on the transaction lists.  Data blocks go first.
 	 */
-
 	err = 0;
-	/*
-	 * Whenever we unlock the journal and sleep, things can get added
-	 * onto ->t_sync_datalist, so we have to keep looping back to
-	 * write_out_data until we *know* that the list is empty.
-	 */
-	bufs = 0;
-	/*
-	 * Cleanup any flushed data buffers from the data list.  Even in
-	 * abort mode, we want to flush this out as soon as possible.
-	 */
-write_out_data:
-	cond_resched();
-	spin_lock(&journal->j_list_lock);
-
-	while (commit_transaction->t_sync_datalist) {
-		struct buffer_head *bh;
-
-		jh = commit_transaction->t_sync_datalist;
-		commit_transaction->t_sync_datalist = jh->b_tnext;
-		bh = jh2bh(jh);
-		if (buffer_locked(bh)) {
-			BUFFER_TRACE(bh, "locked");
-			if (!inverted_lock(journal, bh))
-				goto write_out_data;
-			__journal_temp_unlink_buffer(jh);
-			__journal_file_buffer(jh, commit_transaction,
-						BJ_Locked);
-			jbd_unlock_bh_state(bh);
-			if (lock_need_resched(&journal->j_list_lock)) {
-				spin_unlock(&journal->j_list_lock);
-				goto write_out_data;
-			}
-		} else {
-			if (buffer_dirty(bh)) {
-				BUFFER_TRACE(bh, "start journal writeout");
-				get_bh(bh);
-				wbuf[bufs++] = bh;
-				if (bufs == journal->j_wbufsize) {
-					jbd_debug(2, "submit %d writes\n",
-							bufs);
-					spin_unlock(&journal->j_list_lock);
-					ll_rw_block(SWRITE, bufs, wbuf);
-					journal_brelse_array(wbuf, bufs);
-					bufs = 0;
-					goto write_out_data;
-				}
-			} else {
-				BUFFER_TRACE(bh, "writeout complete: unfile");
-				if (!inverted_lock(journal, bh))
-					goto write_out_data;
-				__journal_unfile_buffer(jh);
-				jbd_unlock_bh_state(bh);
-				journal_remove_journal_head(bh);
-				put_bh(bh);
-				if (lock_need_resched(&journal->j_list_lock)) {
-					spin_unlock(&journal->j_list_lock);
-					goto write_out_data;
-				}
-			}
-		}
-	}
-
-	if (bufs) {
-		spin_unlock(&journal->j_list_lock);
-		ll_rw_block(SWRITE, bufs, wbuf);
-		journal_brelse_array(wbuf, bufs);
-		spin_lock(&journal->j_list_lock);
-	}
+	journal_submit_data_buffers(journal, commit_transaction);
 
 	/*
 	 * Wait for all previously submitted IO to complete.
 	 */
+	spin_lock(&journal->j_list_lock);
 	while (commit_transaction->t_locked_list) {
 		struct buffer_head *bh;
 
_

linux-2.6-nfs-client-double_d-drop.patch:
 fs/nfs/dir.c            |   16 ++++------------
 fs/nfs/nfs3proc.c       |   26 ++++++++++++++++----------
 fs/nfs/nfs4proc.c       |   31 ++++++++++++++++---------------
 fs/nfs/proc.c           |   29 +++++++++++++++++++++--------
 include/linux/nfs_xdr.h |    5 ++---
 5 files changed, 59 insertions(+), 48 deletions(-)

--- NEW FILE linux-2.6-nfs-client-double_d-drop.patch ---
NFS: Fix double d_drop in nfs_instantiate() error path

From: Chuck Lever <chuck.lever at oracle.com>

If the LOOKUP or GETATTR in nfs_instantiate fail, nfs_instantiate will do a
d_drop before returning.  But some callers already do a d_drop in the case
of an error return.  Make certain we do only one d_drop in all error paths.

This issue was introduced because over time, the symlink proc API diverged
slightly from the create/mkdir/mknod proc API.  To prevent other coding
mistakes of this type, change the symlink proc API to be more like
create/mkdir/mknod and move the nfs_instantiate call into the symlink proc
routines so it is used in exactly the same way for create, mkdir, mknod,
and symlink.

Test plan:
Connectathon, all versions of NFS.

Signed-off-by: Chuck Lever <chuck.lever at oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
---

 fs/nfs/dir.c            |   16 ++++------------
 fs/nfs/nfs3proc.c       |   26 ++++++++++++++++----------
 fs/nfs/nfs4proc.c       |   31 ++++++++++++++++---------------
 fs/nfs/proc.c           |   29 +++++++++++++++++++++--------
 include/linux/nfs_xdr.h |    5 ++---
 5 files changed, 59 insertions(+), 48 deletions(-)

diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 084e8cb..affd3ae 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -1147,23 +1147,20 @@ int nfs_instantiate(struct dentry *dentr
 		struct inode *dir = dentry->d_parent->d_inode;
 		error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr);
 		if (error)
-			goto out_err;
+			return error;
 	}
 	if (!(fattr->valid & NFS_ATTR_FATTR)) {
 		struct nfs_server *server = NFS_SB(dentry->d_sb);
 		error = server->nfs_client->rpc_ops->getattr(server, fhandle, fattr);
 		if (error < 0)
-			goto out_err;
+			return error;
 	}
 	inode = nfs_fhget(dentry->d_sb, fhandle, fattr);
 	error = PTR_ERR(inode);
 	if (IS_ERR(inode))
-		goto out_err;
+		return error;
 	d_instantiate(dentry, inode);
 	return 0;
-out_err:
-	d_drop(dentry);
-	return error;
 }
 
 /*
@@ -1448,8 +1445,6 @@ static int
 nfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
 {
 	struct iattr attr;
-	struct nfs_fattr sym_attr;
-	struct nfs_fh sym_fh;
 	struct qstr qsymname;
 	int error;
 
@@ -1473,12 +1468,9 @@ #endif
 
 	lock_kernel();
 	nfs_begin_data_update(dir);
-	error = NFS_PROTO(dir)->symlink(dir, &dentry->d_name, &qsymname,
-					  &attr, &sym_fh, &sym_attr);
+	error = NFS_PROTO(dir)->symlink(dir, dentry, &qsymname, &attr);
 	nfs_end_data_update(dir);
 	if (!error) {
-		error = nfs_instantiate(dentry, &sym_fh, &sym_attr);
-	} else {
		if (error == -EEXIST)
			printk("nfs_proc_symlink: %s/%s already exists??\n",
			       dentry->d_parent->d_name.name, dentry->d_name.name);
diff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c
index 9e8258e..d85ac42 100644
--- a/fs/nfs/nfs3proc.c
+++ b/fs/nfs/nfs3proc.c
@@ -544,23 +544,23 @@ nfs3_proc_link(struct inode *inode, stru
 }
 
 static int
-nfs3_proc_symlink(struct inode *dir, struct qstr *name, struct qstr *path,
-		  struct iattr *sattr, struct nfs_fh *fhandle,
-		  struct nfs_fattr *fattr)
+nfs3_proc_symlink(struct inode *dir, struct dentry *dentry, struct qstr *path,
+		  struct iattr *sattr)
 {
-	struct nfs_fattr	dir_attr;
+	struct nfs_fh fhandle;
+	struct nfs_fattr fattr, dir_attr;
 	struct nfs3_symlinkargs	arg = {
 		.fromfh		= NFS_FH(dir),
-		.fromname	= name->name,
-		.fromlen	= name->len,
+		.fromname	= dentry->d_name.name,
+		.fromlen	= dentry->d_name.len,
 		.topath		= path->name,
 		.tolen		= path->len,
 		.sattr		= sattr
 	};
 	struct nfs3_diropres	res = {
 		.dir_attr	= &dir_attr,
-		.fh		= fhandle,
-		.fattr		= fattr
+		.fh		= &fhandle,
+		.fattr		= &fattr
 	};
 	struct rpc_message msg = {
 		.rpc_proc	= &nfs3_procedures[NFS3PROC_SYMLINK],
@@ -571,11 +571,17 @@ nfs3_proc_symlink(struct inode *dir, str
 
 	if (path->len > NFS3_MAXPATHLEN)
 		return -ENAMETOOLONG;
-	dprintk("NFS call  symlink %s -> %s\n", name->name, path->name);
+
+	dprintk("NFS call  symlink %s -> %s\n", dentry->d_name.name,
+			path->name);
 	nfs_fattr_init(&dir_attr);
-	nfs_fattr_init(fattr);
+	nfs_fattr_init(&fattr);
 	status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0);
 	nfs_post_op_update_inode(dir, &dir_attr);
+	if (status != 0)
+		goto out;
+	status = nfs_instantiate(dentry, &fhandle, &fattr);
+out:
 	dprintk("NFS reply symlink: %d\n", status);
 	return status;
 }
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 17c46a3..de4a76b 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -2084,24 +2084,24 @@ static int nfs4_proc_link(struct inode *
 	return err;
 }
 
-static int _nfs4_proc_symlink(struct inode *dir, struct qstr *name,
-		struct qstr *path, struct iattr *sattr, struct nfs_fh *fhandle,
-		struct nfs_fattr *fattr)
+static int _nfs4_proc_symlink(struct inode *dir, struct dentry *dentry,
+		struct qstr *path, struct iattr *sattr)
 {
 	struct nfs_server *server = NFS_SERVER(dir);
-	struct nfs_fattr dir_fattr;
+	struct nfs_fh fhandle;
+	struct nfs_fattr fattr, dir_fattr;
 	struct nfs4_create_arg arg = {
 		.dir_fh = NFS_FH(dir),
 		.server = server,
-		.name = name,
+		.name = &dentry->d_name,
 		.attrs = sattr,
 		.ftype = NF4LNK,
 		.bitmask = server->attr_bitmask,
 	};
 	struct nfs4_create_res res = {
 		.server = server,
-		.fh = fhandle,
-		.fattr = fattr,
+		.fh = &fhandle,
+		.fattr = &fattr,
 		.dir_fattr = &dir_fattr,
 	};
 	struct rpc_message msg = {
@@ -2113,27 +2113,28 @@ static int _nfs4_proc_symlink(struct ino
 
 	if (path->len > NFS4_MAXPATHLEN)
 		return -ENAMETOOLONG;
+
 	arg.u.symlink = path;
-	nfs_fattr_init(fattr);
+	nfs_fattr_init(&fattr);
 	nfs_fattr_init(&dir_fattr);
 	
 	status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0);
-	if (!status)
+	if (!status) {
 		update_changeattr(dir, &res.dir_cinfo);
-	nfs_post_op_update_inode(dir, res.dir_fattr);
+		nfs_post_op_update_inode(dir, res.dir_fattr);
+		status = nfs_instantiate(dentry, &fhandle, &fattr);
+	}
 	return status;
 }
 
-static int nfs4_proc_symlink(struct inode *dir, struct qstr *name,
-		struct qstr *path, struct iattr *sattr, struct nfs_fh *fhandle,
-		struct nfs_fattr *fattr)
+static int nfs4_proc_symlink(struct inode *dir, struct dentry *dentry,
+		struct qstr *path, struct iattr *sattr)
 {
 	struct nfs4_exception exception = { };
 	int err;
 	do {
 		err = nfs4_handle_exception(NFS_SERVER(dir),
-				_nfs4_proc_symlink(dir, name, path, sattr,
-					fhandle, fattr),
+				_nfs4_proc_symlink(dir, dentry, path, sattr),
 				&exception);
 	} while (exception.retry);
 	return err;
diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c
index 5a8b940..0b507bf 100644
--- a/fs/nfs/proc.c
+++ b/fs/nfs/proc.c
@@ -425,14 +425,15 @@ nfs_proc_link(struct inode *inode, struc
 }
 
 static int
-nfs_proc_symlink(struct inode *dir, struct qstr *name, struct qstr *path,
-		 struct iattr *sattr, struct nfs_fh *fhandle,
-		 struct nfs_fattr *fattr)
+nfs_proc_symlink(struct inode *dir, struct dentry *dentry, struct qstr *path,
+		 struct iattr *sattr)
 {
+	struct nfs_fh fhandle;
+	struct nfs_fattr fattr;
 	struct nfs_symlinkargs	arg = {
 		.fromfh		= NFS_FH(dir),
-		.fromname	= name->name,
-		.fromlen	= name->len,
+		.fromname	= dentry->d_name.name,
+		.fromlen	= dentry->d_name.len,
 		.topath		= path->name,
 		.tolen		= path->len,
 		.sattr		= sattr
@@ -445,11 +446,23 @@ nfs_proc_symlink(struct inode *dir, stru
 
 	if (path->len > NFS2_MAXPATHLEN)
 		return -ENAMETOOLONG;
-	dprintk("NFS call  symlink %s -> %s\n", name->name, path->name);
-	nfs_fattr_init(fattr);
-	fhandle->size = 0;
+
+	dprintk("NFS call  symlink %s -> %s\n", dentry->d_name.name,
+			path->name);
 	status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0);
 	nfs_mark_for_revalidate(dir);
+
+	/*
+	 * V2 SYMLINK requests don't return any attributes.  Setting the
+	 * filehandle size to zero indicates to nfs_instantiate that it
+	 * should fill in the data with a LOOKUP call on the wire.
+	 */
+	if (status == 0) {
+		nfs_fattr_init(&fattr);
+		fhandle.size = 0;
+		status = nfs_instantiate(dentry, &fhandle, &fattr);
+	}
+
 	dprintk("NFS reply symlink: %d\n", status);
 	return status;
 }
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index 490fe4a..b080cca 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -793,9 +793,8 @@ struct nfs_rpc_ops {
 	int	(*rename)  (struct inode *, struct qstr *,
 			    struct inode *, struct qstr *);
 	int	(*link)    (struct inode *, struct inode *, struct qstr *);
-	int	(*symlink) (struct inode *, struct qstr *, struct qstr *,
-			    struct iattr *, struct nfs_fh *,
-			    struct nfs_fattr *);
+	int	(*symlink) (struct inode *, struct dentry *, struct qstr *,
+			    struct iattr *);
 	int	(*mkdir)   (struct inode *, struct dentry *, struct iattr *);
 	int	(*rmdir)   (struct inode *, struct qstr *);
 	int	(*readdir) (struct dentry *, struct rpc_cred *,

linux-2.6-nfs-selinux-oops.patch:
 rpc_pipe.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE linux-2.6-nfs-selinux-oops.patch ---
--- linux-2.6.17.i686/net/sunrpc/rpc_pipe.c.orig	2006-08-31 13:33:13.082136000 -0400
+++ linux-2.6.17.i686/net/sunrpc/rpc_pipe.c	2006-09-05 12:52:21.517500000 -0400
@@ -713,7 +713,7 @@ rpc_mkpipe(char *path, void *private, st
 	if (IS_ERR(dentry))
 		return dentry;
 	dir = nd.dentry->d_inode;
-	inode = rpc_get_inode(dir->i_sb, S_IFSOCK | S_IRUSR | S_IWUSR);
+	inode = rpc_get_inode(dir->i_sb, S_IFIFO | S_IRUSR | S_IWUSR);
 	if (!inode)
 		goto err_dput;
 	inode->i_ino = iunique(dir->i_sb, 100);

linux-2.6-ppc-isapnp.patch:
 core.c |    4 ++++
 1 files changed, 4 insertions(+)

--- NEW FILE linux-2.6-ppc-isapnp.patch ---

https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=207641

--- linux-2.6.18.noarch/drivers/pnp/isapnp/core.c~	2006-09-28 17:54:32.000000000 -0400
+++ linux-2.6.18.noarch/drivers/pnp/isapnp/core.c	2006-09-28 17:54:49.000000000 -0400
@@ -1049,6 +1049,10 @@ static int __init isapnp_init(void)
 		printk(KERN_INFO "isapnp: ISA Plug & Play support disabled\n");
 		return 0;
 	}
+#ifdef CONFIG_PPC_MERGE
+	if (check_legacy_ioport(_PIDXR) || check_legacy_ioport(_PNPWRP))
+		return -EINVAL;
+#endif
 #ifdef ISAPNP_REGION_OK
 	if (!request_region(_PIDXR, 1, "isapnp index")) {
 		printk(KERN_ERR "isapnp: Index Register 0x%x already used\n", _PIDXR);

linux-2.6.17-nfs-fix_client_shutdown.patch:
 client.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

--- NEW FILE linux-2.6.17-nfs-fix_client_shutdown.patch ---
The scheme to indicate which services have been started up appears to be
seriously broken.

Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
---

 fs/nfs/client.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)
--- linux-2.6.17.i686/fs/nfs/client.c.orig	2006-09-20 04:46:42.000000000 -0400
+++ linux-2.6.17.i686/fs/nfs/client.c	2006-09-20 04:47:23.000000000 -0400
@@ -112,9 +112,9 @@ static struct nfs_client *nfs_alloc_clie
 	if (error < 0) {
 		dprintk("%s: couldn't start rpciod! Error = %d\n",
 				__FUNCTION__, error);
-		__set_bit(NFS_CS_RPCIOD, &clp->cl_res_state);
 		goto error_1;
 	}
+	__set_bit(NFS_CS_RPCIOD, &clp->cl_res_state);
 
 	if (nfsversion == 4) {
 		if (nfs_callback_up() < 0)
@@ -154,8 +154,8 @@ static struct nfs_client *nfs_alloc_clie
 	return clp;
 
 error_3:
-	nfs_callback_down();
-	__clear_bit(NFS_CS_CALLBACK, &clp->cl_res_state);
+	if (__test_and_clear_bit(NFS_CS_CALLBACK, &clp->cl_res_state))
+		nfs_callback_down();
 error_2:
 	rpciod_down();
 	__clear_bit(NFS_CS_RPCIOD, &clp->cl_res_state);
@@ -198,7 +198,7 @@ static void nfs_free_client(struct nfs_c
 		nfs_callback_down();
 
 	if (__test_and_clear_bit(NFS_CS_RPCIOD, &clp->cl_res_state))
-	rpciod_down();
+		rpciod_down();
 
 	kfree(clp->cl_hostname);
 	kfree(clp);
@@ -884,9 +884,9 @@ static int nfs4_init_client(struct nfs_c
 	if (error < 0) {
 		dprintk("%s: failed to create idmapper. Error = %d\n",
 			__FUNCTION__, error);
-		__set_bit(NFS_CS_IDMAP, &clp->cl_res_state);
 		goto error;
 	}
+	__set_bit(NFS_CS_IDMAP, &clp->cl_res_state);
 
 	nfs_mark_client_ready(clp, NFS_CS_READY);
 	return 0;


git-agpgart.patch:
 drivers/char/agp/agp.h          |    2 
 drivers/char/agp/backend.c      |    2 
 drivers/char/agp/efficeon-agp.c |   16 ++-
 drivers/char/agp/frontend.c     |   27 ------
 drivers/char/agp/generic.c      |   39 +++++----
 drivers/char/agp/intel-agp.c    |  171 ++++++++++++++++++++++++++++++++++++----
 drivers/char/agp/via-agp.c      |    4 
 include/linux/mm.h              |    1 
 mm/mmap.c                       |    7 +
 9 files changed, 205 insertions(+), 64 deletions(-)

Index: git-agpgart.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-5/git-agpgart.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- git-agpgart.patch	22 Sep 2006 22:46:11 -0000	1.1
+++ git-agpgart.patch	2 Oct 2006 03:39:42 -0000	1.2
@@ -156,12 +156,12 @@
 +		} else {
 +			printk(KERN_INFO PFX "Fell back to AGPx4 mode because");
 +			if (!(*bridge_agpstat & AGPSTAT3_8X)) {
-+				printk("bridge couldn't do x8. bridge_agpstat:%x (orig=%x)\n", *bridge_agpstat, origbridge);
++				printk(KERN_INFO PFX "bridge couldn't do x8. bridge_agpstat:%x (orig=%x)\n", *bridge_agpstat, origbridge);
 +				*bridge_agpstat &= ~(AGPSTAT3_8X | AGPSTAT3_RSVD);
 +				*bridge_agpstat |= AGPSTAT3_4X;
 +			}
 +			if (!(*vga_agpstat & AGPSTAT3_8X)) {
-+				printk("graphics card couldn't do x8. vga_agpstat:%x (orig=%x)\n", *vga_agpstat, origvga);
++				printk(KERN_INFO PFX "graphics card couldn't do x8. vga_agpstat:%x (orig=%x)\n", *vga_agpstat, origvga);
 +				*vga_agpstat &= ~(AGPSTAT3_8X | AGPSTAT3_RSVD);
 +				*vga_agpstat |= AGPSTAT3_4X;
 +			}


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-5/kernel-2.6.spec,v
retrieving revision 1.2194
retrieving revision 1.2195
diff -u -r1.2194 -r1.2195
--- kernel-2.6.spec	2 Oct 2006 02:59:25 -0000	1.2194
+++ kernel-2.6.spec	2 Oct 2006 03:39:42 -0000	1.2195
@@ -235,6 +235,7 @@
 # Patches 0 through 100 are meant for core subsystem upgrades
 #
 Patch4: git-agpgart.patch
+Patch5: linux-2.6-kbuild-oneline.patch
 
 # Patches 10 through 99 are for things that are going upstream really soon.
 Patch10: linux-2.6-utrace.patch
@@ -252,13 +253,14 @@
 Patch203: linux-2.6-x86_64-silence-up-apic-errors.patch
 Patch207: linux-2.6-x86_64-tif-restore-sigmask.patch
 Patch208: linux-2.6-x86_64-add-ppoll-pselect.patch
-Patch209: linux-2.6-x86_64-opterons-synchronize-p-state-using-TSC.patch
 
 # 300 - 399   ppc(64)
 Patch300: linux-2.6-ppc-dac960-ipr-clash.patch
 Patch301: linux-2.6-cell-mambo-drivers.patch
 Patch302: linux-2.6-hvc-console.patch
 Patch303: linux-2.6-ppc-rtas-check.patch
+Patch309: linux-2.6-ppc-isapnp.patch
+
 
 # 400 - 499   ia64
 
@@ -361,9 +363,19 @@
 Patch1431: linux-2.6-cachefiles.patch
 Patch1432: linux-2.6-filesystem-caching-for-afs-and-nfs.patch
 Patch1433: linux-2.6-nfs-superblock-unmount-optimization.patch
+Patch1434: linux-2.6-nfs-client-double_d-drop.patch
 
+# Various NFS changes.
 # NFS uses 64-bit inodes
 Patch1440: linux-2.6-nfs-64-bit-inode-support.patch
+# Fix NFS/Selinux oops.
+Patch1441: linux-2.6-nfs-selinux-oops.patch
+# Fix rpc_pipefs umount oops
+Patch1442: linux-2.6.17-nfs-fix_client_shutdown.patch
+
+# EXT3/JBD fixes
+Patch1450: linux-2.6-ext3-16tb-overflow-fixes.patch
+Patch1451: linux-2.6-jbd-fix-commit-of-ordered-data-buffers.patch
 
 # Device mapper / MD layer
 Patch1500: linux-2.6-dm-mirroring.patch
@@ -676,7 +688,9 @@
 
 # Update to latest upstream.
 %patch4 -p1
-
+# One line per file in Kbuild files for exporting headers -- fewer
+# conflicts to deal with.
+%patch5 -p1
 # Patches 10 through 100 are meant for core subsystem upgrades
 
 # Rolands utrace ptrace replacement.
@@ -706,8 +720,6 @@
 %patch207 -p1
 # Add ppoll and pselect syscalls
 %patch208 -p1
-# fix opteron timer scaling
-%patch209 -p1
 
 #
 # PowerPC
@@ -720,6 +732,8 @@
 #%patch302 -p1
 # Check properly for successful RTAS instantiation
 %patch303 -p1
+# Fix ISAPNP messages on ppc32.
+%patch309 -p1
 
 
 #
@@ -837,8 +851,9 @@
 #
 # Add a pci table to advansys driver.
 %patch1102 -p1
+
 #
-# Various upstream NFS/NFSD fixes.
+# Various NFS/NFSD fixes.
 # kNFSD: fixed '-p port' arg to rpc.nfsd and enables the defining proto versions and transports
 %patch1200 -p1
 # Fix badness.
@@ -870,9 +885,21 @@
 %patch1431 -p1
 %patch1432 -p1
 %patch1433 -p1
+%patch1434 -p1
 
+# NFS
 # NFS supports 64-bit inodes
 %patch1440 -p1
+# Fix NFS/Selinux oops. (#204848)
+%patch1441 -p1
+# Fix rpc_pipefs umount oops
+%patch1442 -p1
+
+# EXT3
+# overflows at 16tb fix
+%patch1450 -p1
+# Fix "kernel BUG at fs/buffer.c:2789!" bug
+%patch1451 -p1
 
 # Device mapper / MD layer
 # dm mirroring
@@ -998,7 +1025,7 @@
 # So we serialise until the dir has gone away.
 while [ -d deleteme ];
 do
-    sleep 1
+	sleep 1
 done
 
 # get rid of unwanted files resulting from patch fuzz
@@ -1078,6 +1105,7 @@
     mkdir -p $RPM_BUILD_ROOT/%{image_install_path}
     install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer
     install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer
+    touch $RPM_BUILD_ROOT/boot/initrd-$KernelVer.img
     cp $KernelImage $RPM_BUILD_ROOT/%{image_install_path}/vmlinuz-$KernelVer
     if [ -f arch/$Arch/boot/zImage.stub ]; then
       cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || :
@@ -1429,6 +1457,7 @@
 /lib/modules/%{KVERREL}/source
 /lib/modules/%{KVERREL}/extra
 /lib/modules/%{KVERREL}/updates
+%ghost /boot/initrd-%{KVERREL}.img
 
 %files devel
 %defattr(-,root,root)
@@ -1447,6 +1476,7 @@
 /lib/modules/%{KVERREL}smp/source
 /lib/modules/%{KVERREL}smp/extra
 /lib/modules/%{KVERREL}smp/updates
+%ghost /boot/initrd-%{KVERREL}smp.img
 
 %files smp-devel
 %defattr(-,root,root)
@@ -1470,6 +1500,7 @@
 /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf
 /lib/modules/%{KVERREL}xen0/extra
 /lib/modules/%{KVERREL}xen0/updates
+%ghost /boot/initrd-%{KVERREL}xen0.img
 
 %files xen0-devel
 %defattr(-,root,root)
@@ -1488,6 +1519,7 @@
 /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf
 /lib/modules/%{KVERREL}xenU/extra
 /lib/modules/%{KVERREL}xenU/updates
+%ghost /boot/initrd-%{KVERREL}xenU.img
 
 %files xenU-devel
 %defattr(-,root,root)
@@ -1508,6 +1540,7 @@
 /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf
 /lib/modules/%{KVERREL}xen/extra
 /lib/modules/%{KVERREL}xen/updates
+%ghost /boot/initrd-%{KVERREL}xen.img
 
 %files xen-devel
 %defattr(-,root,root)
@@ -1530,6 +1563,7 @@
 /lib/modules/%{KVERREL}kdump/source
 /lib/modules/%{KVERREL}kdump/extra
 /lib/modules/%{KVERREL}kdump/updates
+%ghost /boot/initrd-%{KVERREL}kdump.img
 
 %files kdump-devel
 %defattr(-,root,root)
@@ -1555,15 +1589,45 @@
 - Execshield improvements. (Bart Oldeman)
 - Disable PM_DEBUG
 
-* Wed Sep 27 2006 Dave Jones <davej at redhat.com>
-+- yet more lockdep fixes.
-+- Fix a problem with XFS & the inode diet patches.
+* Thu Sep 28 2006 Roland McGrath <roland at redhat.com>
+- utrace typo fix for x86-64 watchpoints (#207467)
+
+* Thu Sep 28 2006 Dave Jones <davej at redhat.com>
+- Fix ISAPNP messages on ppc32. (#207641)
+
+* Thu Sep 28 2006 Dave Jones <davej at redhat.com>
+- Another day, another round of lockdep fixes.
+- Align kernel data segment to page boundary. (#206863)
+
+* Thu Sep 28 2006 Steven Whitehouse <swhiteho at redhat.com>
+- New GFS2 patch
+
+* Thu Sep 28 2006 Dave Jones <davej at redhat.com>
+- Fix "kernel BUG at fs/buffer.c:2789!" bug
 
 * Wed Sep 27 2006 Dave Jones <davej at redhat.com>
+- yet more lockdep fixes.
+- Fix a problem with XFS & the inode diet patches.
+- Fix rpc_pipefs umount oops
+- Enable alternative TCP congestion algorithms.
+
+* Tue Sep 26 2006 Dave Jones <davej at redhat.com>
 - Enable serverworks IDE driver for x86-64.
 - More lockdep fixes.
+
+* Mon Sep 25 2006 Jarod Wilson <jwilson at redhat.com>
+- Make kernel packages own initrd files
+
+* Mon Sep 25 2006 John W. Linville <linville at redhat.com>
 - Add periodic work fix for bcm43xx driver
-- Enable additional TCP congestion alforithms.
+
+* Sat Sep 23 2006 Dave Jones <davej at redhat.com>
+- Disable dgrs driver.
+
+* Thu Sep 21 2006 Dave Jones <davej at redhat.com>
+- reiserfs: make sure all dentry refs are released before
+  calling kill_block_super
+- Fix up some compile warnings
 
 * Thu Sep 21 2006 Juan Quintela <quintela at redhat.com>
 - re-enable xen.
@@ -1576,6 +1640,8 @@
 
 * Wed Sep 20 2006 Dave Jones <davej at redhat.com>
 - 2.6.18
+- i965 AGP suspend support.
+- AGP x8 fixes.
 
 * Tue Sep 19 2006 Juan Quintela <quintela at redhat.com>
 - updated xen configs to sync with rawhide ones (don't be afraid, xen0/xenU

linux-2.6-gfs2-dlm.patch:
 CREDITS                            |    6 
 Documentation/filesystems/gfs2.txt |   43 
 MAINTAINERS                        |   18 
 fs/Kconfig                         |    2 
 fs/Makefile                        |    2 
 fs/configfs/item.c                 |    2 
 fs/dlm/Kconfig                     |   21 
 fs/dlm/Makefile                    |   19 
 fs/dlm/ast.c                       |  173 +
 fs/dlm/ast.h                       |   26 
 fs/dlm/config.c                    |  789 +++++++
 fs/dlm/config.h                    |   42 
 fs/dlm/debug_fs.c                  |  387 +++
 fs/dlm/dir.c                       |  423 ++++
 fs/dlm/dir.h                       |   30 
 fs/dlm/dlm_internal.h              |  543 +++++
 fs/dlm/lock.c                      | 3871 +++++++++++++++++++++++++++++++++++++
 fs/dlm/lock.h                      |   62 
 fs/dlm/lockspace.c                 |  717 ++++++
 fs/dlm/lockspace.h                 |   25 
 fs/dlm/lowcomms.c                  | 1238 +++++++++++
 fs/dlm/lowcomms.h                  |   26 
 fs/dlm/lvb_table.h                 |   18 
 fs/dlm/main.c                      |   97 
 fs/dlm/member.c                    |  327 +++
 fs/dlm/member.h                    |   24 
 fs/dlm/memory.c                    |  116 +
 fs/dlm/memory.h                    |   29 
 fs/dlm/midcomms.c                  |  140 +
 fs/dlm/midcomms.h                  |   21 
 fs/dlm/rcom.c                      |  472 ++++
 fs/dlm/rcom.h                      |   24 
 fs/dlm/recover.c                   |  765 +++++++
 fs/dlm/recover.h                   |   34 
 fs/dlm/recoverd.c                  |  290 ++
 fs/dlm/recoverd.h                  |   24 
 fs/dlm/requestqueue.c              |  184 +
 fs/dlm/requestqueue.h              |   22 
 fs/dlm/user.c                      |  788 +++++++
 fs/dlm/user.h                      |   16 
 fs/dlm/util.c                      |  161 +
 fs/dlm/util.h                      |   22 
 fs/gfs2/Kconfig                    |   44 
 fs/gfs2/Makefile                   |   10 
 fs/gfs2/acl.c                      |  309 ++
 fs/gfs2/acl.h                      |   39 
 fs/gfs2/bmap.c                     | 1220 +++++++++++
 fs/gfs2/bmap.h                     |   31 
 fs/gfs2/daemon.c                   |  196 +
 fs/gfs2/daemon.h                   |   19 
 fs/gfs2/dir.c                      | 1961 ++++++++++++++++++
 fs/gfs2/dir.h                      |   79 
 fs/gfs2/eaops.c                    |  230 ++
 fs/gfs2/eaops.h                    |   30 
 fs/gfs2/eattr.c                    | 1501 ++++++++++++++
 fs/gfs2/eattr.h                    |  100 
 fs/gfs2/gfs2.h                     |   31 
 fs/gfs2/glock.c                    | 2231 +++++++++++++++++++++
 fs/gfs2/glock.h                    |  153 +
 fs/gfs2/glops.c                    |  564 +++++
 fs/gfs2/glops.h                    |   25 
 fs/gfs2/incore.h                   |  634 ++++++
 fs/gfs2/inode.c                    | 1339 ++++++++++++
 fs/gfs2/inode.h                    |   56 
 fs/gfs2/lm.c                       |  217 ++
 fs/gfs2/lm.h                       |   42 
 fs/gfs2/locking.c                  |  184 +
 fs/gfs2/locking/dlm/Makefile       |    3 
 fs/gfs2/locking/dlm/lock.c         |  524 +++++
 fs/gfs2/locking/dlm/lock_dlm.h     |  187 +
 fs/gfs2/locking/dlm/main.c         |   64 
 fs/gfs2/locking/dlm/mount.c        |  255 ++
 fs/gfs2/locking/dlm/plock.c        |  301 ++
 fs/gfs2/locking/dlm/sysfs.c        |  226 ++
 fs/gfs2/locking/dlm/thread.c       |  359 +++
 fs/gfs2/locking/nolock/Makefile    |    3 
 fs/gfs2/locking/nolock/main.c      |  246 ++
 fs/gfs2/log.c                      |  578 +++++
 fs/gfs2/log.h                      |   65 
 fs/gfs2/lops.c                     |  809 +++++++
 fs/gfs2/lops.h                     |   99 
 fs/gfs2/main.c                     |  150 +
 fs/gfs2/meta_io.c                  |  753 +++++++
 fs/gfs2/meta_io.h                  |   78 
 fs/gfs2/mount.c                    |  214 ++
 fs/gfs2/mount.h                    |   17 
 fs/gfs2/ondisk.c                   |  308 ++
 fs/gfs2/ops_address.c              |  782 +++++++
 fs/gfs2/ops_address.h              |   22 
 fs/gfs2/ops_dentry.c               |  119 +
 fs/gfs2/ops_dentry.h               |   17 
 fs/gfs2/ops_export.c               |  298 ++
 fs/gfs2/ops_export.h               |   22 
 fs/gfs2/ops_file.c                 |  642 ++++++
 fs/gfs2/ops_file.h                 |   24 
 fs/gfs2/ops_fstype.c               |  943 +++++++++
 fs/gfs2/ops_fstype.h               |   18 
 fs/gfs2/ops_inode.c                | 1151 +++++++++++
 fs/gfs2/ops_inode.h                |   20 
 fs/gfs2/ops_super.c                |  468 ++++
 fs/gfs2/ops_super.h                |   17 
 fs/gfs2/ops_vm.c                   |  184 +
 fs/gfs2/ops_vm.h                   |   18 
 fs/gfs2/quota.c                    | 1226 +++++++++++
 fs/gfs2/quota.h                    |   35 
 fs/gfs2/recovery.c                 |  570 +++++
 fs/gfs2/recovery.h                 |   34 
 fs/gfs2/rgrp.c                     | 1513 ++++++++++++++
 fs/gfs2/rgrp.h                     |   69 
 fs/gfs2/super.c                    |  976 +++++++++
 fs/gfs2/super.h                    |   54 
 fs/gfs2/sys.c                      |  583 +++++
 fs/gfs2/sys.h                      |   27 
 fs/gfs2/trans.c                    |  184 +
 fs/gfs2/trans.h                    |   39 
 fs/gfs2/util.c                     |  245 ++
 fs/gfs2/util.h                     |  170 +
 include/linux/Kbuild               |    5 
 include/linux/dlm.h                |  302 ++
 include/linux/dlm_device.h         |   86 
 include/linux/gfs2_ondisk.h        |  443 ++++
 include/linux/iflags.h             |  102 
 include/linux/kernel.h             |    1 
 include/linux/lm_interface.h       |  273 ++
 include/linux/lock_dlm_plock.h     |   41 
 mm/filemap.c                       |    6 
 mm/readahead.c                     |    1 
 127 files changed, 40247 insertions(+), 6 deletions(-)

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.1 -r 1.2 linux-2.6-gfs2-dlm.patch
Index: linux-2.6-gfs2-dlm.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-5/linux-2.6-gfs2-dlm.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-gfs2-dlm.patch	22 Sep 2006 22:46:11 -0000	1.1
+++ linux-2.6-gfs2-dlm.patch	2 Oct 2006 03:39:42 -0000	1.2
@@ -1,8 +1,7 @@
-diff --git a/CREDITS b/CREDITS
-index 0fe904e..3030802 100644
---- a/CREDITS
-+++ b/CREDITS
-@@ -3541,11 +3541,11 @@ S: Fargo, North Dakota 58122
+diff -Nru linux-2.6.18.orig/CREDITS linux-2.6.18/CREDITS
+--- linux-2.6.18.orig/CREDITS	2006-09-20 04:42:06.000000000 +0100
++++ linux-2.6.18/CREDITS	2006-09-28 11:12:46.000000000 +0100
+@@ -3541,11 +3541,11 @@
  S: USA
  
  N: Steven Whitehouse
@@ -17,11 +16,9 @@
  
  N: Hans-Joachim Widmaier
  E: hjw at zvw.de
-diff --git a/Documentation/filesystems/gfs2.txt b/Documentation/filesystems/gfs2.txt
-new file mode 100644
-index 0000000..593004b
---- /dev/null
-+++ b/Documentation/filesystems/gfs2.txt
+diff -Nru linux-2.6.18.orig/Documentation/filesystems/gfs2.txt linux-2.6.18/Documentation/filesystems/gfs2.txt
+--- linux-2.6.18.orig/Documentation/filesystems/gfs2.txt	1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18/Documentation/filesystems/gfs2.txt	2006-09-28 11:12:46.000000000 +0100
 @@ -0,0 +1,43 @@
 +Global File System
 +------------------
@@ -66,146 +63,18 @@
 +  gfs2_quota	to examine and change quota values in a filesystem
 +  mount.gfs2	to help mount(8) mount a filesystem
 +  mkfs.gfs2	to make a filesystem
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 25cd707..21a451c 100644
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -875,6 +875,16 @@ M:	jack at suse.cz
- L:	linux-kernel at vger.kernel.org
- S:	Maintained
- 
-+DISTRIBUTED LOCK MANAGER
-+P:	Patrick Caulfield
-+M:	pcaulfie at redhat.com
-+P:	David Teigland
-+M:	teigland at redhat.com
-+L:	cluster-devel at redhat.com
-+W:	http://sources.redhat.com/cluster/
-+T:	git kernel.org:/pub/scm/linux/kernel/git/steve/gfs-2.6.git
-+S:	Supported
-+
- DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
- P:	Tobias Ringstrom
- M:	tori at unhappy.mine.nu
-@@ -1135,6 +1145,14 @@ M:	khc at pm.waw.pl
- W:	http://www.kernel.org/pub/linux/utils/net/hdlc/
- S:	Maintained
- 
-+GFS2 FILE SYSTEM
-+P:	Steven Whitehouse
-+M:	swhiteho at redhat.com
-+L:	cluster-devel at redhat.com
-+W:	http://sources.redhat.com/cluster/
-+T:	git kernel.org:/pub/scm/linux/kernel/git/steve/gfs-2.6.git
-+S:	Supported
-+
- GIGASET ISDN DRIVERS
- P:	Hansjoerg Lipp
- M:	hjlipp at web.de
-diff --git a/fs/Kconfig b/fs/Kconfig
-index 3f00a9f..ddc7462 100644
---- a/fs/Kconfig
-+++ b/fs/Kconfig
-@@ -323,6 +323,7 @@ #
- 	default n
- 
- source "fs/xfs/Kconfig"
-+source "fs/gfs2/Kconfig"
- 
- config OCFS2_FS
- 	tristate "OCFS2 file system support (EXPERIMENTAL)"
-@@ -1930,6 +1931,7 @@ source "fs/partitions/Kconfig"
- endmenu
- 
- source "fs/nls/Kconfig"
-+source "fs/dlm/Kconfig"
- 
- endmenu
- 
-diff --git a/fs/Makefile b/fs/Makefile
-index 8913542..64df110 100644
---- a/fs/Makefile
-+++ b/fs/Makefile
-@@ -50,6 +50,7 @@ obj-$(CONFIG_CONFIGFS_FS)	+= configfs/
- obj-y				+= devpts/
- 
- obj-$(CONFIG_PROFILING)		+= dcookies.o
-+obj-$(CONFIG_DLM)		+= dlm/
-  
- # Do not add any filesystems before this line
- obj-$(CONFIG_REISERFS_FS)	+= reiserfs/
-@@ -102,3 +103,4 @@ obj-$(CONFIG_HOSTFS)		+= hostfs/
- obj-$(CONFIG_HPPFS)		+= hppfs/
- obj-$(CONFIG_DEBUG_FS)		+= debugfs/
- obj-$(CONFIG_OCFS2_FS)		+= ocfs2/
-+obj-$(CONFIG_GFS2_FS)           += gfs2/
-diff --git a/fs/configfs/item.c b/fs/configfs/item.c
-index e07485a..2442120 100644
---- a/fs/configfs/item.c
-+++ b/fs/configfs/item.c
-@@ -224,4 +224,4 @@ EXPORT_SYMBOL(config_item_init);
+diff -Nru linux-2.6.18.orig/fs/configfs/item.c linux-2.6.18/fs/configfs/item.c
+--- linux-2.6.18.orig/fs/configfs/item.c	2006-09-20 04:42:06.000000000 +0100
++++ linux-2.6.18/fs/configfs/item.c	2006-09-28 11:12:46.000000000 +0100
+@@ -224,4 +224,4 @@
  EXPORT_SYMBOL(config_group_init);
  EXPORT_SYMBOL(config_item_get);
  EXPORT_SYMBOL(config_item_put);
 -
 +EXPORT_SYMBOL(config_group_find_obj);
-diff --git a/fs/dlm/Kconfig b/fs/dlm/Kconfig
-new file mode 100644
-index 0000000..490f85b
---- /dev/null
-+++ b/fs/dlm/Kconfig
-@@ -0,0 +1,21 @@
-+menu "Distributed Lock Manager"
-+	depends on INET && EXPERIMENTAL
-+
-+config DLM
-+	tristate "Distributed Lock Manager (DLM)"
-+	depends on IPV6 || IPV6=n
-+	depends on IP_SCTP
-+	select CONFIGFS_FS
-+	help
-+	A general purpose distributed lock manager for kernel or userspace
-+	applications.
-+
-+config DLM_DEBUG
-+	bool "DLM debugging"
-+	depends on DLM
-+	help
-+	Under the debugfs mount point, the name of each lockspace will
-+	appear as a file in the "dlm" directory.  The output is the
-+	list of resource and locks the local node knows about.
-+
-+endmenu
-diff --git a/fs/dlm/Makefile b/fs/dlm/Makefile
-new file mode 100644
-index 0000000..1832e02
---- /dev/null
-+++ b/fs/dlm/Makefile
-@@ -0,0 +1,19 @@
-+obj-$(CONFIG_DLM) +=		dlm.o
-+dlm-y :=			ast.o \
-+				config.o \
-+				dir.o \
-+				lock.o \
-+				lockspace.o \
-+				lowcomms.o \
-+				main.o \
-+				member.o \
-+				memory.o \
-+				midcomms.o \
-+				rcom.o \
-+				recover.o \
-+				recoverd.o \
-+				requestqueue.o \
-+				user.o \
-+				util.o
-+dlm-$(CONFIG_DLM_DEBUG) +=	debug_fs.o
-+
-diff --git a/fs/dlm/ast.c b/fs/dlm/ast.c
-new file mode 100644
-index 0000000..f91d39c
---- /dev/null
-+++ b/fs/dlm/ast.c
+diff -Nru linux-2.6.18.orig/fs/dlm/ast.c linux-2.6.18/fs/dlm/ast.c
+--- linux-2.6.18.orig/fs/dlm/ast.c	1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18/fs/dlm/ast.c	2006-09-28 11:12:46.000000000 +0100
 @@ -0,0 +1,173 @@
 +/******************************************************************************
 +*******************************************************************************
@@ -380,11 +249,9 @@
 +	mutex_unlock(&astd_running);
 +}
 +
-diff --git a/fs/dlm/ast.h b/fs/dlm/ast.h
-new file mode 100644
-index 0000000..6ee276c
---- /dev/null
-+++ b/fs/dlm/ast.h
+diff -Nru linux-2.6.18.orig/fs/dlm/ast.h linux-2.6.18/fs/dlm/ast.h
[...5641 lines suppressed...]
++	u64 ln_number;
++	unsigned int ln_type;
++};
++
++#define lm_name_equal(name1, name2) \
++	(((name1)->ln_number == (name2)->ln_number) && \
++	 ((name1)->ln_type == (name2)->ln_type)) \
++
++struct lm_async_cb {
++	struct lm_lockname lc_name;
++	int lc_ret;
++};
++
++struct lm_lockstruct;
++
++struct lm_lockops {
++	const char *lm_proto_name;
++
++	/*
++	 * Mount/Unmount
++	 */
++
++	int (*lm_mount) (char *table_name, char *host_data,
++			 lm_callback_t cb, void *cb_data,
++			 unsigned int min_lvb_size, int flags,
++			 struct lm_lockstruct *lockstruct,
++			 struct kobject *fskobj);
++
++	void (*lm_others_may_mount) (void *lockspace);
++
++	void (*lm_unmount) (void *lockspace);
++
++	void (*lm_withdraw) (void *lockspace);
++
++	/*
++	 * Lock oriented operations
++	 */
++
++	int (*lm_get_lock) (void *lockspace, struct lm_lockname *name, void **lockp);
++
++	void (*lm_put_lock) (void *lock);
++
++	unsigned int (*lm_lock) (void *lock, unsigned int cur_state,
++				 unsigned int req_state, unsigned int flags);
++
++	unsigned int (*lm_unlock) (void *lock, unsigned int cur_state);
++
++	void (*lm_cancel) (void *lock);
++
++	int (*lm_hold_lvb) (void *lock, char **lvbp);
++	void (*lm_unhold_lvb) (void *lock, char *lvb);
++
++	/*
++	 * Posix Lock oriented operations
++	 */
++
++	int (*lm_plock_get) (void *lockspace, struct lm_lockname *name,
++			     struct file *file, struct file_lock *fl);
++
++	int (*lm_plock) (void *lockspace, struct lm_lockname *name,
++			 struct file *file, int cmd, struct file_lock *fl);
++
++	int (*lm_punlock) (void *lockspace, struct lm_lockname *name,
++			   struct file *file, struct file_lock *fl);
++
++	/*
++	 * Client oriented operations
++	 */
++
++	void (*lm_recovery_done) (void *lockspace, unsigned int jid,
++				  unsigned int message);
++
++	struct module *lm_owner;
++};
++
++/*
++ * lm_mount() return values
++ *
++ * ls_jid - the journal ID this node should use
++ * ls_first - this node is the first to mount the file system
++ * ls_lvb_size - size in bytes of lock value blocks
++ * ls_lockspace - lock module's context for this file system
++ * ls_ops - lock module's functions
++ * ls_flags - lock module features
++ */
++
++struct lm_lockstruct {
++	unsigned int ls_jid;
++	unsigned int ls_first;
++	unsigned int ls_lvb_size;
++	void *ls_lockspace;
++	const struct lm_lockops *ls_ops;
++	int ls_flags;
++};
++
++/*
++ * Lock module bottom interface.  A lock module makes itself available to GFS
++ * with these functions.
++ */
++
++int gfs2_register_lockproto(const struct lm_lockops *proto);
++void gfs2_unregister_lockproto(const struct lm_lockops *proto);
++
++/*
++ * Lock module top interface.  GFS calls these functions when mounting or
++ * unmounting a file system.
++ */
++
++int gfs2_mount_lockproto(char *proto_name, char *table_name, char *host_data,
++			 lm_callback_t cb, void *cb_data,
++			 unsigned int min_lvb_size, int flags,
++			 struct lm_lockstruct *lockstruct,
++			 struct kobject *fskobj);
++
++void gfs2_unmount_lockproto(struct lm_lockstruct *lockstruct);
++
++void gfs2_withdraw_lockproto(struct lm_lockstruct *lockstruct);
++
++#endif /* __LM_INTERFACE_DOT_H__ */
++
+diff -Nru linux-2.6.18.orig/include/linux/lock_dlm_plock.h linux-2.6.18/include/linux/lock_dlm_plock.h
+--- linux-2.6.18.orig/include/linux/lock_dlm_plock.h	1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.18/include/linux/lock_dlm_plock.h	2006-09-28 11:12:47.000000000 +0100
 @@ -0,0 +1,41 @@
 +/*
 + * Copyright (C) 2005 Red Hat, Inc.  All rights reserved.
@@ -41379,25 +40796,61 @@
 +
 +#endif
 +
-diff --git a/mm/filemap.c b/mm/filemap.c
-index b9a60c4..d9bbea1 100644
---- a/mm/filemap.c
-+++ b/mm/filemap.c
-@@ -1181,7 +1181,8 @@ __generic_file_aio_read(struct kiocb *io
+diff -Nru linux-2.6.18.orig/MAINTAINERS linux-2.6.18/MAINTAINERS
+--- linux-2.6.18.orig/MAINTAINERS	2006-09-28 11:11:03.000000000 +0100
++++ linux-2.6.18/MAINTAINERS	2006-09-28 11:12:46.000000000 +0100
+@@ -875,6 +875,16 @@
+ L:	linux-kernel at vger.kernel.org
+ S:	Maintained
+ 
++DISTRIBUTED LOCK MANAGER
++P:	Patrick Caulfield
++M:	pcaulfie at redhat.com
++P:	David Teigland
++M:	teigland at redhat.com
++L:	cluster-devel at redhat.com
++W:	http://sources.redhat.com/cluster/
++T:	git kernel.org:/pub/scm/linux/kernel/git/steve/gfs-2.6.git
++S:	Supported
++
+ DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
+ P:	Tobias Ringstrom
+ M:	tori at unhappy.mine.nu
+@@ -1141,6 +1151,14 @@
+ W:	http://www.kernel.org/pub/linux/utils/net/hdlc/
+ S:	Maintained
+ 
++GFS2 FILE SYSTEM
++P:	Steven Whitehouse
++M:	swhiteho at redhat.com
++L:	cluster-devel at redhat.com
++W:	http://sources.redhat.com/cluster/
++T:	git kernel.org:/pub/scm/linux/kernel/git/steve/gfs-2.6.git
++S:	Supported
++
+ GIGASET ISDN DRIVERS
+ P:	Hansjoerg Lipp
+ M:	hjlipp at web.de
+diff -Nru linux-2.6.18.orig/mm/filemap.c linux-2.6.18/mm/filemap.c
+--- linux-2.6.18.orig/mm/filemap.c	2006-09-28 11:11:13.000000000 +0100
++++ linux-2.6.18/mm/filemap.c	2006-09-28 11:12:47.000000000 +0100
+@@ -1191,8 +1191,10 @@
+ 			if (retval > 0)
  				*ppos = pos + retval;
  		}
- 		file_accessed(filp);
+-		file_accessed(filp);
 -		goto out;
-+		if (retval != 0)
++		if (likely(retval != 0)) {
++			file_accessed(filp);
 +			goto out;
++		}
  	}
  
  	retval = 0;
-diff --git a/mm/readahead.c b/mm/readahead.c
-index aa7ec42..1ba736a 100644
---- a/mm/readahead.c
-+++ b/mm/readahead.c
-@@ -38,6 +38,7 @@ file_ra_state_init(struct file_ra_state 
+diff -Nru linux-2.6.18.orig/mm/readahead.c linux-2.6.18/mm/readahead.c
+--- linux-2.6.18.orig/mm/readahead.c	2006-09-20 04:42:06.000000000 +0100
++++ linux-2.6.18/mm/readahead.c	2006-09-28 11:12:47.000000000 +0100
+@@ -38,6 +38,7 @@
  	ra->ra_pages = mapping->backing_dev_info->ra_pages;
  	ra->prev_page = -1;
  }

linux-2.6-utrace.patch:
 Documentation/utrace.txt                |  455 ++++++++
 arch/alpha/kernel/asm-offsets.c         |    2 
 arch/alpha/kernel/entry.S               |    4 
 arch/arm/kernel/ptrace.c                |   36 
 arch/arm26/kernel/ptrace.c              |   32 
 arch/frv/kernel/ptrace.c                |   15 
 arch/i386/kernel/entry.S                |    7 
 arch/i386/kernel/i387.c                 |  143 +-
 arch/i386/kernel/process.c              |    3 
 arch/i386/kernel/ptrace.c               |  863 +++++++++-------
 arch/i386/kernel/signal.c               |   39 
 arch/i386/kernel/vm86.c                 |    7 
 arch/ia64/ia32/ia32_entry.S             |    2 
 arch/ia64/ia32/sys_ia32.c               |   23 
 arch/ia64/kernel/asm-offsets.c          |    2 
 arch/ia64/kernel/fsys.S                 |   16 
 arch/ia64/kernel/mca.c                  |    2 
 arch/ia64/kernel/ptrace.c               | 1670 +++++++++++++++-----------------
 arch/ia64/kernel/signal.c               |    4 
 arch/mips/kernel/ptrace.c               |   21 
 arch/mips/kernel/sysirix.c              |    2 
 arch/powerpc/kernel/Makefile            |    4 
 arch/powerpc/kernel/asm-offsets.c       |    2 
 arch/powerpc/kernel/process.c           |    5 
 arch/powerpc/kernel/ptrace-common.h     |  161 ---
 arch/powerpc/kernel/ptrace.c            |  959 ++++++++++--------
 arch/powerpc/kernel/ptrace32.c          |  436 --------
 arch/powerpc/kernel/signal_32.c         |   56 +
 arch/powerpc/kernel/signal_64.c         |    4 
 arch/powerpc/kernel/sys_ppc32.c         |    5 
 arch/powerpc/lib/sstep.c                |    3 
 arch/powerpc/platforms/cell/spufs/run.c |    2 
 arch/ppc/kernel/asm-offsets.c           |    2 
 arch/s390/kernel/compat_linux.c         |    3 
 arch/s390/kernel/compat_signal.c        |    5 
 arch/s390/kernel/process.c              |    3 
 arch/s390/kernel/ptrace.c               |  651 +++++++++++-
 arch/s390/kernel/signal.c               |    4 
 arch/s390/kernel/traps.c                |    6 
 arch/sparc64/kernel/binfmt_aout32.c     |    2 
 arch/sparc64/kernel/entry.S             |    6 
 arch/sparc64/kernel/process.c           |    3 
 arch/sparc64/kernel/ptrace.c            | 1222 ++++++++++++-----------
 arch/sparc64/kernel/signal.c            |    2 
 arch/sparc64/kernel/signal32.c          |    2 
 arch/sparc64/kernel/sys_sparc32.c       |    3 
 arch/sparc64/kernel/systbls.S           |    4 
 arch/x86_64/ia32/fpu32.c                |   92 +
 arch/x86_64/ia32/ia32_aout.c            |    6 
 arch/x86_64/ia32/ia32_signal.c          |    8 
 arch/x86_64/ia32/ia32entry.S            |    2 
 arch/x86_64/ia32/ptrace32.c             |  715 +++++++++----
 arch/x86_64/ia32/sys_ia32.c             |    5 
 arch/x86_64/kernel/process.c            |    5 
 arch/x86_64/kernel/ptrace.c             |  648 +++++++-----
 arch/x86_64/kernel/signal.c             |   30 
 arch/x86_64/kernel/traps.c              |    8 
 arch/x86_64/mm/fault.c                  |    4 
 drivers/connector/cn_proc.c             |    4 
 fs/binfmt_aout.c                        |    6 
 fs/binfmt_elf.c                         |    6 
 fs/binfmt_elf_fdpic.c                   |    7 
 fs/binfmt_flat.c                        |    3 
 fs/binfmt_som.c                         |    2 
 fs/exec.c                               |   11 
 fs/proc/array.c                         |   14 
 fs/proc/base.c                          |   17 
 include/asm-i386/i387.h                 |   13 
 include/asm-i386/signal.h               |    4 
 include/asm-i386/thread_info.h          |    7 
 include/asm-i386/tracehook.h            |   49 
 include/asm-ia64/elf.h                  |   24 
 include/asm-ia64/tracehook.h            |   81 +
 include/asm-powerpc/tracehook.h         |   80 +
 include/asm-s390/tracehook.h            |   53 +
 include/asm-sparc64/tracehook.h         |   44 
 include/asm-x86_64/fpu32.h              |    3 
 include/asm-x86_64/thread_info.h        |    2 
 include/asm-x86_64/tracehook.h          |   54 +
 include/linux/init_task.h               |    3 
 include/linux/ptrace.h                  |  224 +++-
 include/linux/sched.h                   |   25 
 include/linux/tracehook.h               |  707 +++++++++++++
 include/linux/utrace.h                  |  484 +++++++++
 init/Kconfig                            |   29 
 kernel/Makefile                         |    1 
 kernel/exit.c                           |  254 +---
 kernel/fork.c                           |   62 -
 kernel/ptrace.c                         | 1630 ++++++++++++++++++++++++-------
 kernel/signal.c                         |  211 ----
 kernel/sys.c                            |    2 
 kernel/timer.c                          |    4 
 kernel/utrace.c                         | 1590 ++++++++++++++++++++++++++++++
 security/selinux/hooks.c                |   54 -
 security/selinux/include/objsec.h       |    1 
 95 files changed, 9625 insertions(+), 4566 deletions(-)

Index: linux-2.6-utrace.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-5/linux-2.6-utrace.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-utrace.patch	22 Sep 2006 22:46:11 -0000	1.1
+++ linux-2.6-utrace.patch	2 Oct 2006 03:39:42 -0000	1.2
@@ -333,7 +333,7 @@
   * FPU state for core dumps...
 --- linux-2.6/include/asm-i386/signal.h.utrace-ptrace-compat
 +++ linux-2.6/include/asm-i386/signal.h
-@@ -219,10 +219,8 @@ struct pt_regs;
+@@ -221,10 +221,8 @@ struct pt_regs;
  
  #define ptrace_signal_deliver(regs, cookie)		\
  	do {						\
@@ -8696,7 +8696,7 @@
  }
 --- linux-2.6/arch/i386/kernel/entry.S.utrace-ptrace-compat
 +++ linux-2.6/arch/i386/kernel/entry.S
-@@ -310,7 +310,7 @@ sysenter_past_esp:
+@@ -314,7 +314,7 @@ sysenter_past_esp:
  	GET_THREAD_INFO(%ebp)
  
  	/* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */
@@ -8705,7 +8705,7 @@
  	jnz syscall_trace_entry
  	cmpl $(nr_syscalls), %eax
  	jae syscall_badsys
-@@ -344,7 +344,7 @@ ENTRY(system_call)
+@@ -348,7 +348,7 @@ ENTRY(system_call)
  no_singlestep:
  					# system call tracing in operation / emulation
  	/* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */
@@ -8714,7 +8714,7 @@
  	jnz syscall_trace_entry
  	cmpl $(nr_syscalls), %eax
  	jae syscall_badsys
-@@ -472,9 +472,6 @@ syscall_trace_entry:
+@@ -476,9 +476,6 @@ syscall_trace_entry:
  	movl %esp, %eax
  	xorl %edx,%edx
  	call do_syscall_trace
@@ -15443,7 +15443,7 @@
 +			 */
 +			val &= ~DR_CONTROL_RESERVED;
 +			for (i = 0; i < 4; i++)
-+				if ((0x5f54 >> ((val >> (16 + 4*i)) & 0xf))
++				if ((0x5554 >> ((val >> (16 + 4*i)) & 0xf))
 +				    & 1)
 +					return -EIO;
 +			SET_DBREG(7);


--- linux-2.6-x86_64-opterons-synchronize-p-state-using-TSC.patch DELETED ---




More information about the fedora-cvs-commits mailing list