rpms/kernel/devel kernel.spec, 1.370, 1.371 linux-2.6-ext4-jbd2-patch-queue.patch, 1.2, 1.3 linux-2.6-ext4-jbd2-support-patch-queue.patch, 1.1, 1.2

Eric Sandeen (sandeen) fedora-extras-commits at redhat.com
Mon Jan 21 18:45:48 UTC 2008


Author: sandeen

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv18879

Modified Files:
	kernel.spec linux-2.6-ext4-jbd2-patch-queue.patch 
	linux-2.6-ext4-jbd2-support-patch-queue.patch 
Log Message:
* Mon Jan 21 2008 Eric Sandeen <sandeen at redhat.com>
- Update ext4 patch to latest stable patch queue



Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.370
retrieving revision 1.371
diff -u -r1.370 -r1.371
--- kernel.spec	19 Jan 2008 03:14:36 -0000	1.370
+++ kernel.spec	21 Jan 2008 18:45:09 -0000	1.371
@@ -652,7 +652,7 @@
 Patch2001: linux-2.6-netdev-e1000-disable-alpm.patch
 
 # ext4dev upstream patch queue, slated for 2.6.25
-# "stable" patches as of 1/9/2008
+# "stable" patches as of 1/21/2008
 # supporting files, and ext4/jbd2 core files
 Patch2100: linux-2.6-ext4-jbd2-support-patch-queue.patch
 Patch2101: linux-2.6-ext4-jbd2-patch-queue.patch
@@ -1759,6 +1759,9 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL} -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf %{with_xen} xen
 
 %changelog
+* Mon Jan 21 2008 Eric Sandeen <sandeen at redhat.com>
+- Update ext4 patch to latest stable patch queue
+
 * Fri Jan 18 2008 Jarod Wilson <jwilson at redhat.com>
 - Increase management orb reply timeout in firewire-sbp2 driver,
   should make a lot of firewire drives behave a LOT better with

linux-2.6-ext4-jbd2-patch-queue.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.2 -r 1.3 linux-2.6-ext4-jbd2-patch-queue.patch
Index: linux-2.6-ext4-jbd2-patch-queue.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-ext4-jbd2-patch-queue.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-ext4-jbd2-patch-queue.patch	14 Jan 2008 16:29:01 -0000	1.2
+++ linux-2.6-ext4-jbd2-patch-queue.patch	21 Jan 2008 18:45:09 -0000	1.3
@@ -200,7 +200,7 @@
  	Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
  	Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota,
 -	Opt_grpquota, Opt_extents, Opt_noextents,
-+	Opt_grpquota, Opt_extents, Opt_noextents,Opt_i_version,
++	Opt_grpquota, Opt_extents, Opt_noextents, Opt_i_version,
 +	Opt_mballoc, Opt_nomballoc, Opt_stripe,
  };
  
@@ -230,11 +230,11 @@
  			*journal_devnum = option;
  			break;
 +		case Opt_journal_checksum:
-+			set_opt (sbi->s_mount_opt, JOURNAL_CHECKSUM);
++			set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM);
 +			break;
 +		case Opt_journal_async_commit:
-+			set_opt (sbi->s_mount_opt, JOURNAL_ASYNC_COMMIT);
-+			set_opt (sbi->s_mount_opt, JOURNAL_CHECKSUM);
++			set_opt(sbi->s_mount_opt, JOURNAL_ASYNC_COMMIT);
++			set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM);
 +			break;
  		case Opt_noload:
  			set_opt (sbi->s_mount_opt, NOLOAD);
@@ -244,7 +244,7 @@
  			clear_opt (sbi->s_mount_opt, EXTENTS);
  			break;
 +		case Opt_i_version:
-+			set_opt (sbi->s_mount_opt, I_VERSION);
++			set_opt(sbi->s_mount_opt, I_VERSION);
 +			sb->s_flags |= MS_I_VERSION;
 +			break;
 +		case Opt_mballoc:
@@ -444,7 +444,7 @@
  	int has_super = 0;
  
  	first_meta_bg = le32_to_cpu(sbi->s_es->s_first_meta_bg);
-@@ -1584,8 +1764,37 @@ static ext4_fsblk_t descriptor_loc(struc
+@@ -1584,8 +1764,38 @@ static ext4_fsblk_t descriptor_loc(struc
  	return (has_super + ext4_group_first_block_no(sb, bg));
  }
  
@@ -462,7 +462,8 @@
 +static unsigned long ext4_get_stripe_size(struct ext4_sb_info *sbi)
 +{
 +	unsigned long stride = le16_to_cpu(sbi->s_es->s_raid_stride);
-+	unsigned long stripe_width = le32_to_cpu(sbi->s_es->s_raid_stripe_width);
++	unsigned long stripe_width =
++			le32_to_cpu(sbi->s_es->s_raid_stripe_width);
 +
 +	if (sbi->s_stripe && sbi->s_stripe <= sbi->s_blocks_per_group) {
 +		return sbi->s_stripe;
@@ -482,7 +483,7 @@
  {
  	struct buffer_head * bh;
  	struct ext4_super_block *es = NULL;
-@@ -1599,7 +1808,6 @@ static int ext4_fill_super (struct super
+@@ -1599,7 +1809,6 @@ static int ext4_fill_super (struct super
  	unsigned long def_mount_opts;
  	struct inode *root;
  	int blocksize;
@@ -490,7 +491,7 @@
  	int db_count;
  	int i;
  	int needs_recovery;
-@@ -1624,6 +1832,11 @@ static int ext4_fill_super (struct super
+@@ -1624,6 +1833,11 @@ static int ext4_fill_super (struct super
  		goto out_fail;
  	}
  
@@ -502,7 +503,7 @@
  	/*
  	 * The ext4 superblock will not be buffer aligned for other than 1kB
  	 * block sizes.  We need to calculate the offset from buffer start.
-@@ -1674,10 +1887,10 @@ static int ext4_fill_super (struct super
+@@ -1674,10 +1888,10 @@ static int ext4_fill_super (struct super
  
  	if (le16_to_cpu(sbi->s_es->s_errors) == EXT4_ERRORS_PANIC)
  		set_opt(sbi->s_mount_opt, ERRORS_PANIC);
@@ -516,7 +517,7 @@
  
  	sbi->s_resuid = le16_to_cpu(es->s_def_resuid);
  	sbi->s_resgid = le16_to_cpu(es->s_def_resgid);
-@@ -1689,6 +1902,11 @@ static int ext4_fill_super (struct super
+@@ -1689,6 +1903,11 @@ static int ext4_fill_super (struct super
  	 * User -o noextents to turn it off
  	 */
  	set_opt(sbi->s_mount_opt, EXTENTS);
@@ -528,7 +529,7 @@
  
  	if (!parse_options ((char *) data, sb, &journal_inum, &journal_devnum,
  			    NULL, 0))
-@@ -1723,6 +1941,19 @@ static int ext4_fill_super (struct super
+@@ -1723,6 +1942,19 @@ static int ext4_fill_super (struct super
  		       sb->s_id, le32_to_cpu(features));
  		goto failed_mount;
  	}
@@ -548,7 +549,7 @@
  	blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size);
  
  	if (blocksize < EXT4_MIN_BLOCK_SIZE ||
-@@ -1733,20 +1964,16 @@ static int ext4_fill_super (struct super
+@@ -1733,20 +1965,16 @@ static int ext4_fill_super (struct super
  		goto failed_mount;
  	}
  
@@ -574,7 +575,7 @@
  		logical_sb_block = sb_block * EXT4_MIN_BLOCK_SIZE;
  		offset = do_div(logical_sb_block, blocksize);
  		bh = sb_bread(sb, logical_sb_block);
-@@ -1764,6 +1991,7 @@ static int ext4_fill_super (struct super
+@@ -1764,6 +1992,7 @@ static int ext4_fill_super (struct super
  		}
  	}
  
@@ -582,7 +583,7 @@
  	sb->s_maxbytes = ext4_max_size(sb->s_blocksize_bits);
  
  	if (le32_to_cpu(es->s_rev_level) == EXT4_GOOD_OLD_REV) {
-@@ -1838,6 +2066,17 @@ static int ext4_fill_super (struct super
+@@ -1838,6 +2067,17 @@ static int ext4_fill_super (struct super
  
  	if (EXT4_BLOCKS_PER_GROUP(sb) == 0)
  		goto cantfind_ext4;
@@ -600,7 +601,7 @@
  	blocks_count = (ext4_blocks_count(es) -
  			le32_to_cpu(es->s_first_data_block) +
  			EXT4_BLOCKS_PER_GROUP(sb) - 1);
-@@ -1900,6 +2139,8 @@ static int ext4_fill_super (struct super
+@@ -1900,6 +2140,8 @@ static int ext4_fill_super (struct super
  	sbi->s_rsv_window_head.rsv_goal_size = 0;
  	ext4_rsv_window_add(sb, &sbi->s_rsv_window_head);
  
@@ -609,7 +610,7 @@
  	/*
  	 * set up enough so that it can read an inode
  	 */
-@@ -1944,6 +2185,21 @@ static int ext4_fill_super (struct super
+@@ -1944,6 +2186,21 @@ static int ext4_fill_super (struct super
  		goto failed_mount4;
  	}
  
@@ -631,7 +632,7 @@
  	/* We have now updated the journal if required, so we can
  	 * validate the data journaling mode. */
  	switch (test_opt(sb, DATA_FLAGS)) {
-@@ -2044,6 +2300,7 @@ static int ext4_fill_super (struct super
+@@ -2044,6 +2301,7 @@ static int ext4_fill_super (struct super
  		"writeback");
  
  	ext4_ext_init(sb);
@@ -639,7 +640,7 @@
  
  	lock_kernel();
  	return 0;
-@@ -2673,7 +2930,7 @@ static int ext4_statfs (struct dentry * 
+@@ -2673,7 +2931,7 @@ static int ext4_statfs (struct dentry * 
  	if (test_opt(sb, MINIX_DF)) {
  		sbi->s_overhead_last = 0;
  	} else if (sbi->s_blocks_last != ext4_blocks_count(es)) {
@@ -648,7 +649,7 @@
  		ext4_fsblk_t overhead = 0;
  		smp_rmb();
  
-@@ -2909,7 +3166,7 @@ static ssize_t ext4_quota_read(struct su
+@@ -2909,7 +3167,7 @@ static ssize_t ext4_quota_read(struct su
  			       size_t len, loff_t off)
  {
  	struct inode *inode = sb_dqopt(sb)->files[type];
@@ -657,7 +658,7 @@
  	int err = 0;
  	int offset = off & (sb->s_blocksize - 1);
  	int tocopy;
-@@ -2947,7 +3204,7 @@ static ssize_t ext4_quota_write(struct s
+@@ -2947,7 +3205,7 @@ static ssize_t ext4_quota_write(struct s
  				const char *data, size_t len, loff_t off)
  {
  	struct inode *inode = sb_dqopt(sb)->files[type];
@@ -666,7 +667,7 @@
  	int err = 0;
  	int offset = off & (sb->s_blocksize - 1);
  	int tocopy;
-@@ -3002,7 +3259,6 @@ out:
+@@ -3002,7 +3260,6 @@ out:
  		i_size_write(inode, off+len-towrite);
  		EXT4_I(inode)->i_disksize = inode->i_size;
  	}
@@ -674,7 +675,7 @@
  	inode->i_mtime = inode->i_ctime = CURRENT_TIME;
  	ext4_mark_inode_dirty(handle, inode);
  	mutex_unlock(&inode->i_mutex);
-@@ -3027,9 +3283,15 @@ static struct file_system_type ext4dev_f
[...2198 lines suppressed...]
-+	loff_t size, orig_size;
++	loff_t size, orig_size, start_off;
 +	ext4_lblk_t start, orig_start;
 +	struct ext4_inode_info *ei = EXT4_I(ac->ac_inode);
 +
@@ -9548,12 +9827,12 @@
 +	max = EXT4_BLOCKS_PER_GROUP(ac->ac_sb) - 1 - 1 -
 +				EXT4_SB(ac->ac_sb)->s_itb_per_group;
 +
-+#define NRL_CHECK_SIZE(req,size,max,bits)	\
++#define NRL_CHECK_SIZE(req, size, max,bits)	\
 +		(req <= (size) || max <= ((size) >> bits))
 +
 +	/* first, try to predict filesize */
 +	/* XXX: should this table be tunable? */
-+	start = 0;
++	start_off = 0;
 +	if (size <= 16 * 1024) {
 +		size = 16 * 1024;
 +	} else if (size <= 32 * 1024) {
@@ -9569,25 +9848,24 @@
 +	} else if (size <= 1024 * 1024) {
 +		size = 1024 * 1024;
 +	} else if (NRL_CHECK_SIZE(size, 4 * 1024 * 1024, max, bsbits)) {
-+		start = ac->ac_o_ex.fe_logical << bsbits;
-+		start = (start / (1024 * 1024)) * (1024 * 1024);
++		start_off = ((loff_t)ac->ac_o_ex.fe_logical >>
++						(20 - bsbits)) << 20;
 +		size = 1024 * 1024;
 +	} else if (NRL_CHECK_SIZE(size, 8 * 1024 * 1024, max, bsbits)) {
-+		start = ac->ac_o_ex.fe_logical << bsbits;
-+		start = (start / (4 * (1024 * 1024))) * 4 * (1024 * 1024);
++		start_off = ((loff_t)ac->ac_o_ex.fe_logical >>
++							(22 - bsbits)) << 22;
 +		size = 4 * 1024 * 1024;
-+	} else if(NRL_CHECK_SIZE(ac->ac_o_ex.fe_len,(8<<20)>>bsbits,max,bsbits)){
-+		start = ac->ac_o_ex.fe_logical;
-+		start = start << bsbits;
-+		start = (start / (8 * (1024 * 1024))) * 8 * (1024 * 1024);
++	} else if (NRL_CHECK_SIZE(ac->ac_o_ex.fe_len,
++					(8<<20)>>bsbits, max, bsbits)) {
++		start_off = ((loff_t)ac->ac_o_ex.fe_logical >>
++							(23 - bsbits)) << 23;
 +		size = 8 * 1024 * 1024;
 +	} else {
-+		start = ac->ac_o_ex.fe_logical;
-+		start = start << bsbits;
-+		size = ac->ac_o_ex.fe_len << bsbits;
++		start_off = (loff_t)ac->ac_o_ex.fe_logical << bsbits;
++		size	  = ac->ac_o_ex.fe_len << bsbits;
 +	}
 +	orig_size = size = size >> bsbits;
-+	orig_start = start = start >> bsbits;
++	orig_start = start = start_off >> bsbits;
 +
 +	/* don't cover already allocated blocks in selected range */
 +	if (ar->pleft && start <= ar->lleft) {
@@ -9847,7 +10125,7 @@
 +static void ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap,
 +					ext4_group_t group)
 +{
-+	struct ext4_group_info *grp = EXT4_GROUP_INFO(sb, group);
++	struct ext4_group_info *grp = ext4_get_group_info(sb, group);
 +	struct ext4_prealloc_space *pa;
 +	struct list_head *cur;
 +	ext4_group_t groupnr;
@@ -9874,7 +10152,8 @@
 +		if (unlikely(len == 0))
 +			continue;
 +		BUG_ON(groupnr != group);
-+		mb_set_bits(sb_bgl_lock(EXT4_SB(sb), group), bitmap, start, len);
++		mb_set_bits(sb_bgl_lock(EXT4_SB(sb), group),
++						bitmap, start, len);
 +		preallocated += len;
 +		count++;
 +	}
@@ -10010,7 +10289,7 @@
 +	atomic_add(pa->pa_free, &EXT4_SB(sb)->s_mb_preallocated);
 +
 +	ei = EXT4_I(ac->ac_inode);
-+	grp = EXT4_GROUP_INFO(sb, ac->ac_b_ex.fe_group);
++	grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
 +
 +	pa->pa_obj_lock = &ei->i_prealloc_lock;
 +	pa->pa_inode = ac->ac_inode;
@@ -10065,7 +10344,7 @@
 +	ext4_mb_use_group_pa(ac, pa);
 +	atomic_add(pa->pa_free, &EXT4_SB(sb)->s_mb_preallocated);
 +
-+	grp = EXT4_GROUP_INFO(sb, ac->ac_b_ex.fe_group);
++	grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
 +	lg = ac->ac_lg;
 +	BUG_ON(lg == NULL);
 +
@@ -10201,7 +10480,7 @@
 +static int ext4_mb_discard_group_preallocations(struct super_block *sb,
 +					ext4_group_t group, int needed)
 +{
-+	struct ext4_group_info *grp = EXT4_GROUP_INFO(sb, group);
++	struct ext4_group_info *grp = ext4_get_group_info(sb, group);
 +	struct buffer_head *bitmap_bh = NULL;
 +	struct ext4_prealloc_space *pa, *tmp;
 +	struct list_head list;
@@ -10228,7 +10507,7 @@
 +	if (needed == 0)
 +		needed = EXT4_BLOCKS_PER_GROUP(sb) + 1;
 +
-+	grp = EXT4_GROUP_INFO(sb, group);
++	grp = ext4_get_group_info(sb, group);
 +	INIT_LIST_HEAD(&list);
 +
 +repeat:
@@ -10431,7 +10710,7 @@
 +			ac->ac_status, ac->ac_flags);
 +	printk(KERN_ERR "EXT4-fs: orig %lu/%lu/%lu@%lu, goal %lu/%lu/%lu@%lu, "
 +			"best %lu/%lu/%lu@%lu cr %d\n",
-+			(unsigned long )ac->ac_o_ex.fe_group,
++			(unsigned long)ac->ac_o_ex.fe_group,
 +			(unsigned long)ac->ac_o_ex.fe_start,
 +			(unsigned long)ac->ac_o_ex.fe_len,
 +			(unsigned long)ac->ac_o_ex.fe_logical,
@@ -10448,7 +10727,7 @@
 +		ac->ac_found);
 +	printk(KERN_ERR "EXT4-fs: groups: \n");
 +	for (i = 0; i < EXT4_SB(sb)->s_groups_count; i++) {
-+		struct ext4_group_info *grp = EXT4_GROUP_INFO(sb, i);
++		struct ext4_group_info *grp = ext4_get_group_info(sb, i);
 +		struct ext4_prealloc_space *pa;
 +		ext4_grpblk_t start;
 +		struct list_head *cur;
@@ -10459,7 +10738,8 @@
 +			ext4_get_group_no_and_offset(sb, pa->pa_pstart,
 +						     NULL, &start);
 +			spin_unlock(&pa->pa_lock);
-+			printk(KERN_ERR "PA:%lu:%d:%u \n", i, start, pa->pa_len);
++			printk(KERN_ERR "PA:%lu:%d:%u \n", i,
++							start, pa->pa_len);
 +		}
 +
 +		if (grp->bb_free == 0)
@@ -10641,13 +10921,6 @@
 +	sbi = EXT4_SB(sb);
 +
 +	if (!test_opt(sb, MBALLOC)) {
-+#if 0
-+		static int ext4_mballoc_warning = 0;
-+		if (ext4_mballoc_warning++ == 0)
-+			printk(KERN_ERR "EXT4-fs: multiblock request with "
-+					"mballoc disabled!\n");
-+		ar->len = 1;
-+#endif
 +		block = ext4_new_blocks_old(handle, ar->inode, ar->goal,
 +					    &(ar->len), errp);
 +		return block;
@@ -10714,7 +10987,8 @@
 +}
 +EXPORT_SYMBOL(ext4_mb_new_blocks);
 +
-+static void ext4_mb_poll_new_transaction(struct super_block *sb, handle_t *handle)
++static void ext4_mb_poll_new_transaction(struct super_block *sb,
++						handle_t *handle)
 +{
 +	struct ext4_sb_info *sbi = EXT4_SB(sb);
 +
@@ -10943,7 +11217,8 @@
 +	/* And the group descriptor block */
 +	BUFFER_TRACE(gd_bh, "dirtied group descriptor block");
 +	ret = ext4_journal_dirty_metadata(handle, gd_bh);
-+	if (!err) err = ret;
++	if (!err)
++		err = ret;
 +
 +	if (overflow && !err) {
 +		block += count;
@@ -10978,3 +11253,25 @@
  				error = -EIO;
  				goto cleanup;
  			}
+Index: linux-2.6.23.noarch/fs/jbd2/revoke.c
+===================================================================
+--- linux-2.6.23.noarch.orig/fs/jbd2/revoke.c
++++ linux-2.6.23.noarch/fs/jbd2/revoke.c
+@@ -171,13 +171,15 @@ int __init jbd2_journal_init_revoke_cach
+ {
+ 	jbd2_revoke_record_cache = kmem_cache_create("jbd2_revoke_record",
+ 					   sizeof(struct jbd2_revoke_record_s),
+-					   0, SLAB_HWCACHE_ALIGN, NULL);
++					   0,
++					   SLAB_HWCACHE_ALIGN|SLAB_TEMPORARY,
++					   NULL);
+ 	if (jbd2_revoke_record_cache == 0)
+ 		return -ENOMEM;
+ 
+ 	jbd2_revoke_table_cache = kmem_cache_create("jbd2_revoke_table",
+ 					   sizeof(struct jbd2_revoke_table_s),
+-					   0, 0, NULL);
++					   0, SLAB_TEMPORARY, NULL);
+ 	if (jbd2_revoke_table_cache == 0) {
+ 		kmem_cache_destroy(jbd2_revoke_record_cache);
+ 		jbd2_revoke_record_cache = NULL;

linux-2.6-ext4-jbd2-support-patch-queue.patch:

Index: linux-2.6-ext4-jbd2-support-patch-queue.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-ext4-jbd2-support-patch-queue.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-ext4-jbd2-support-patch-queue.patch	10 Jan 2008 18:38:46 -0000	1.1
+++ linux-2.6-ext4-jbd2-support-patch-queue.patch	21 Jan 2008 18:45:09 -0000	1.2
@@ -2,15 +2,14 @@
 ===================================================================
 --- linux-2.6.23.noarch.orig/fs/read_write.c
 +++ linux-2.6.23.noarch/fs/read_write.c
-@@ -451,6 +451,8 @@ unsigned long iov_shorten(struct iovec *
+@@ -451,6 +451,7 @@ unsigned long iov_shorten(struct iovec *
+ 	}
  	return seg;
  }
- 
 +EXPORT_SYMBOL(iov_shorten);
-+
+ 
  ssize_t do_sync_readv_writev(struct file *filp, const struct iovec *iov,
  		unsigned long nr_segs, size_t len, loff_t *ppos, iov_fn_t fn)
- {
 Index: linux-2.6.23.noarch/fs/buffer.c
 ===================================================================
 --- linux-2.6.23.noarch.orig/fs/buffer.c




More information about the fedora-extras-commits mailing list