[Pkg-lustre-svn-commit] updated: [35bda3d] Adapted ldiskfs patchset.

Marco Nelles marco.nelles at credativ.de
Mon Aug 27 10:11:51 UTC 2012


The following commit has been merged in the master branch:
commit 35bda3da7bcbc5279859c6963ee55e52a460a58e
Author: Marco Nelles <marco.nelles at credativ.de>
Date:   Mon Aug 27 12:11:25 2012 +0200

    Adapted ldiskfs patchset.

diff --git a/debian/patches/ldiskfs-kernel-patchset.patch b/debian/patches/ldiskfs-kernel-patchset.patch
index 796126f..7c383cd 100644
--- a/debian/patches/ldiskfs-kernel-patchset.patch
+++ b/debian/patches/ldiskfs-kernel-patchset.patch
@@ -1015,7 +1015,7 @@ index 0000000..065740c
 + 	ext4_journal_stop(handle);
 diff --git a/ldiskfs/kernel_patches/patches/ext4-extents-mount-option-squeeze.patch b/ldiskfs/kernel_patches/patches/ext4-extents-mount-option-squeeze.patch
 new file mode 100644
-index 0000000..8a602e4
+index 0000000..b427954
 --- /dev/null
 +++ b/ldiskfs/kernel_patches/patches/ext4-extents-mount-option-squeeze.patch
 @@ -0,0 +1,170 @@
@@ -1148,8 +1148,8 @@ index 0000000..8a602e4
 ++		case Opt_extents:
 ++			if (!EXT4_HAS_INCOMPAT_FEATURE(sb,
 ++					EXT4_FEATURE_INCOMPAT_EXTENTS)) {
-++				ext4_warning(sb, "extents feature not enabled "
-++						 "on this filesystem, use tune2fs");
+++				ext4_warning(sb, __func__, "extents feature not enabled "
+++							   "on this filesystem, use tune2fs");
 ++				return 0;
 ++			}
 ++			set_opt(sbi->s_mount_opt, EXTENTS);
@@ -1533,10 +1533,22 @@ index 0000000..a86aea6
 +  */
 diff --git a/ldiskfs/kernel_patches/patches/ext4-journal-callback-squeeze.patch b/ldiskfs/kernel_patches/patches/ext4-journal-callback-squeeze.patch
 new file mode 100644
-index 0000000..e84ff3f
+index 0000000..dece4cb
 --- /dev/null
 +++ b/ldiskfs/kernel_patches/patches/ext4-journal-callback-squeeze.patch
-@@ -0,0 +1,461 @@
+@@ -0,0 +1,497 @@
++diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
++index ed568ce..279cd8a 100644
++--- a/fs/ext4/ext4.h
+++++ b/fs/ext4/ext4.h
++@@ -771,6 +771,7 @@ struct ext4_inode_info {
++ #define EXT4_MOUNT_DELALLOC		0x8000000 /* Delalloc support */
++ #define EXT4_MOUNT_DATA_ERR_ABORT	0x10000000 /* Abort on file data write */
++ #define EXT4_MOUNT_BLOCK_VALIDITY	0x20000000 /* Block validity checking */
+++#define EXT4_MOUNT_DISCARD		0x40000000 /* Issue DISCARD requests */
++ 
++ #define clear_opt(o, opt)		o &= ~EXT4_MOUNT_##opt
++ #define set_opt(o, opt)			o |= EXT4_MOUNT_##opt
 +Index: linux-2.6-2.6.32/fs/ext4/ext4_jbd2.h
 +===================================================================
 +--- linux-2.6-2.6.32.orig/fs/ext4/ext4_jbd2.h	2012-08-24 10:44:26.235517786 +0200
@@ -1695,7 +1707,31 @@ index 0000000..e84ff3f
 +-		sbi->s_journal->j_commit_callback = release_blocks_on_commit;
 + 	return 0;
 + }
++
++@@ -2697,6 +2697,23 @@ int ext4_mb_release(struct super_block *sb)
++ 	return 0;
++ }
 + 
+++static inline int ext4_issue_discard(struct super_block *sb, ext4_group_t block_group,
+++			       ext4_grpblk_t block, int count)
+++{
+++	int ret;
+++	ext4_fsblk_t discard_block;
+++
+++	discard_block = block + ext4_group_first_block_no(sb, block_group);
+++	trace_ext4_discard_blocks(sb,
+++			(unsigned long long) discard_block, count);
+++	ret = sb_issue_discard(sb, discard_block, count);
+++	if (ret == EOPNOTSUPP) {
+++		ext4_warning(sb, __func__, "discard not supported, disabling");
+++			     clear_opt(EXT4_SB(sb)->s_mount_opt, DISCARD);
+++	}
+++	return ret;
+++}
+++
++ /*
++  * This function is called by the jbd2 layer once the commit has finished,
++  * so we know we can free the blocks that were released with that commit.
 +@@ -2701,53 +2700,52 @@
 +  * This function is called by the jbd2 layer once the commit has finished,
 +  * so we know we can free the blocks that were released with that commit.
@@ -1746,8 +1782,8 @@ index 0000000..e84ff3f
 ++		ret = ext4_issue_discard(sb, entry->efd_group,
 ++					 entry->efd_start_blk, entry->efd_count);
 ++		if (unlikely(ret == -EOPNOTSUPP)) {
-++			ext4_warning(sb, "discard not supported, "
-++					 "disabling");
+++			ext4_warning(sb, __func__, "discard not supported, "
+++						   "disabling");
 ++			clear_opt(EXT4_SB(sb)->s_mount_opt, DISCARD);
 + 		}
 +-		ext4_unlock_group(sb, entry->group);
@@ -2000,7 +2036,7 @@ index 0000000..e84ff3f
 + 	if (test_opt(sb, NOBH)) {
 diff --git a/ldiskfs/kernel_patches/patches/ext4-kill-dx_root-squeeze.patch b/ldiskfs/kernel_patches/patches/ext4-kill-dx_root-squeeze.patch
 new file mode 100644
-index 0000000..ee6a62e
+index 0000000..d226fd8
 --- /dev/null
 +++ b/ldiskfs/kernel_patches/patches/ext4-kill-dx_root-squeeze.patch
 @@ -0,0 +1,237 @@
@@ -2079,7 +2115,7 @@ index 0000000..ee6a62e
 ++	if (info->hash_version != DX_HASH_TEA &&
 ++	    info->hash_version != DX_HASH_HALF_MD4 &&
 ++	    info->hash_version != DX_HASH_LEGACY) {
-+ 		ext4_warning(dir->i_sb, "Unrecognised inode hash code %d for directory "
++ 		ext4_warning(dir->i_sb, __func__, "Unrecognised inode hash code %d for directory "
 +-			     "#%lu", root->info.hash_version, dir->i_ino);
 ++			     "#%lu", info->hash_version, dir->i_ino);
 + 		brelse(bh);
@@ -2243,15 +2279,23 @@ index 0000000..ee6a62e
 + 			frame = frames + 1;
 diff --git a/ldiskfs/kernel_patches/patches/ext4-large-eas-squeeze.patch b/ldiskfs/kernel_patches/patches/ext4-large-eas-squeeze.patch
 new file mode 100644
-index 0000000..9bce44c
+index 0000000..4b5210e
 --- /dev/null
 +++ b/ldiskfs/kernel_patches/patches/ext4-large-eas-squeeze.patch
-@@ -0,0 +1,736 @@
-+Index: linux-2.6-2.6.32/fs/ext4/ext4.h
+@@ -0,0 +1,744 @@
++Index: linux-source-2.6.32-lustre-2.2/fs/ext4/ext4.h
 +===================================================================
-+--- linux-2.6-2.6.32.orig/fs/ext4/ext4.h	2012-08-24 10:23:40.791087985 +0200
-++++ linux-2.6-2.6.32/fs/ext4/ext4.h	2012-08-24 10:24:02.646814750 +0200
-+@@ -1131,6 +1131,7 @@
++--- linux-source-2.6.32-lustre-2.2.orig/fs/ext4/ext4.h	2012-08-27 09:25:07.177660622 +0200
+++++ linux-source-2.6.32-lustre-2.2/fs/ext4/ext4.h	2012-08-27 09:25:10.072624376 +0200
++@@ -285,6 +285,7 @@
++ #define EXT4_TOPDIR_FL			0x00020000 /* Top of directory hierarchies*/
++ #define EXT4_HUGE_FILE_FL               0x00040000 /* Set to each huge file */
++ #define EXT4_EXTENTS_FL			0x00080000 /* Inode uses extents */
+++#define EXT4_EA_INODE_FL		0x00200000 /* Inode used for large EA */
++ #define EXT4_RESERVED_FL		0x80000000 /* reserved for ext4 lib */
++ 
++ #define EXT4_FL_USER_VISIBLE		0x000BDFFF /* User visible flags */
++@@ -1131,6 +1132,7 @@
 + #define EXT4_FEATURE_INCOMPAT_64BIT		0x0080
 + #define EXT4_FEATURE_INCOMPAT_MMP               0x0100
 + #define EXT4_FEATURE_INCOMPAT_FLEX_BG		0x0200
@@ -2259,7 +2303,7 @@ index 0000000..9bce44c
 + #define EXT4_FEATURE_INCOMPAT_DIRDATA		0x1000
 + 
 + #define EXT4_FEATURE_COMPAT_SUPP	EXT2_FEATURE_COMPAT_EXT_ATTR
-+@@ -1140,6 +1141,7 @@
++@@ -1140,6 +1142,7 @@
 + 					 EXT4_FEATURE_INCOMPAT_EXTENTS| \
 + 					 EXT4_FEATURE_INCOMPAT_64BIT| \
 + 					 EXT4_FEATURE_INCOMPAT_FLEX_BG| \
@@ -2267,7 +2311,7 @@ index 0000000..9bce44c
 + 					 EXT4_FEATURE_INCOMPAT_MMP| \
 + 					 EXT4_FEATURE_INCOMPAT_DIRDATA)
 + 
-+@@ -1438,6 +1440,12 @@
++@@ -1438,6 +1441,12 @@
 + #endif
 + 
 + /*
@@ -2280,10 +2324,10 @@ index 0000000..9bce44c
 +  * Function prototypes
 +  */
 + 
-+Index: linux-2.6-2.6.32/fs/ext4/xattr.c
++Index: linux-source-2.6.32-lustre-2.2/fs/ext4/xattr.c
 +===================================================================
-+--- linux-2.6-2.6.32.orig/fs/ext4/xattr.c	2012-08-23 15:08:50.633334162 +0200
-++++ linux-2.6-2.6.32/fs/ext4/xattr.c	2012-08-24 10:24:02.649814711 +0200
++--- linux-source-2.6.32-lustre-2.2.orig/fs/ext4/xattr.c	2012-08-27 09:25:07.190660457 +0200
+++++ linux-source-2.6.32-lustre-2.2/fs/ext4/xattr.c	2012-08-27 09:25:10.075624339 +0200
 +@@ -168,19 +168,26 @@
 + }
 + 
@@ -2368,7 +2412,7 @@ index 0000000..9bce44c
 ++
 ++	ea_inode = ext4_iget(parent->i_sb, ea_ino);
 ++	if (ea_inode == NULL || is_bad_inode(ea_inode)) {
-++		ext4_error(parent->i_sb, "error while reading EA inode %d",
+++		ext4_error(parent->i_sb, __func__, "error while reading EA inode %d",
 ++			   ea_ino);
 ++		*err = -EIO;
 ++		return NULL;
@@ -2376,14 +2420,14 @@ index 0000000..9bce44c
 ++
 ++	if (ea_inode->i_xattr_inode_parent != parent->i_ino ||
 ++	    ea_inode->i_generation != parent->i_generation) {
-++		ext4_error(parent->i_sb, "Backpointer from EA inode %d "
+++		ext4_error(parent->i_sb, __func__, "Backpointer from EA inode %d "
 ++			   "to parent invalid.", ea_ino);
 ++		*err = -EINVAL;
 ++		goto error;
 ++	}
 ++
 ++	if (!(EXT4_I(ea_inode)->i_flags & EXT4_EA_INODE_FL)) {
-++		ext4_error(parent->i_sb, "EA inode %d does not have "
+++		ext4_error(parent->i_sb, __func__, "EA inode %d does not have "
 ++			   "EXT4_EA_INODE_FL flag set.\n", ea_ino);
 ++		*err = -EINVAL;
 ++		goto error;
@@ -2895,7 +2939,7 @@ index 0000000..9bce44c
 ++	struct ext4_xattr_entry *entry;
 ++	int error;
 + 
-++	if (!ext4_test_inode_state(inode, EXT4_STATE_XATTR))
+++	if (!(EXT4_I(inode)->i_state & EXT4_STATE_DA_ALLOC_CLOSE))
 ++		goto delete_external_ea;
 ++
 ++	error = ext4_get_inode_loc(inode, &iloc);
@@ -2954,10 +2998,10 @@ index 0000000..9bce44c
 + 		__le32 *value = (__le32 *)((char *)header +
 + 			le16_to_cpu(entry->e_value_offs));
 + 		for (n = (le32_to_cpu(entry->e_value_size) +
-+Index: linux-2.6-2.6.32/fs/ext4/xattr.h
++Index: linux-source-2.6.32-lustre-2.2/fs/ext4/xattr.h
 +===================================================================
-+--- linux-2.6-2.6.32.orig/fs/ext4/xattr.h	2012-08-23 14:43:19.026481882 +0200
-++++ linux-2.6-2.6.32/fs/ext4/xattr.h	2012-08-24 10:24:02.708813971 +0200
++--- linux-source-2.6.32-lustre-2.2.orig/fs/ext4/xattr.h	2012-08-27 09:25:07.191660445 +0200
+++++ linux-source-2.6.32-lustre-2.2/fs/ext4/xattr.h	2012-08-27 09:25:10.078624302 +0200
 +@@ -38,7 +38,7 @@
 + 	__u8	e_name_len;	/* length of name */
 + 	__u8	e_name_index;	/* attribute name index */
@@ -3200,7 +3244,7 @@ index 0000000..fe8780e
 + 
 diff --git a/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-squeeze.patch b/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-squeeze.patch
 new file mode 100644
-index 0000000..ad12c00
+index 0000000..5fe2e2c
 --- /dev/null
 +++ b/ldiskfs/kernel_patches/patches/ext4-mballoc-extra-checks-squeeze.patch
 @@ -0,0 +1,313 @@
@@ -3252,7 +3296,7 @@ index 0000000..ad12c00
 +-		grp->bb_free = free;
 ++		struct ext4_group_desc *gdp;
 ++		gdp = ext4_get_group_desc (sb, group, NULL);
-++		ext4_error(sb, "group %lu: %u blocks in bitmap, %u in bb, "
+++		ext4_error(sb, __func__, "group %lu: %u blocks in bitmap, %u in bb, "
 ++			"%u in gd, %lu pa's\n", (long unsigned int)group,
 ++			free, grp->bb_free, ext4_free_blks_count(sb, gdp),
 ++			grp->bb_prealloc_nr);
@@ -3382,7 +3426,7 @@ index 0000000..ad12c00
 ++	}
 ++
 ++	if (free != ext4_free_blks_count(sb, gdp)) {
-++		ext4_error(sb, "on-disk bitmap for group %d"
+++		ext4_error(sb, __func__, "on-disk bitmap for group %d"
 ++			"corrupted: %u blocks free in bitmap, %u - in gd\n",
 ++			group, free, ext4_free_blks_count(sb, gdp));
 ++		return -EIO;
@@ -3439,7 +3483,7 @@ index 0000000..ad12c00
 + 		count++;
 + 	}
 ++	if (count + skip != grp->bb_prealloc_nr) {
-++		ext4_error(sb, "lost preallocations: "
+++		ext4_error(sb, __func__, "lost preallocations: "
 ++			   "count %d, bb_prealloc_nr %lu, skip %d\n",
 ++			   count, grp->bb_prealloc_nr, skip);
 ++		return -EIO;
@@ -3519,7 +3563,7 @@ index 0000000..ad12c00
 +  * default group prealloc size 512 blocks
 diff --git a/ldiskfs/kernel_patches/patches/ext4-mballoc-pa_free-mismatch-squeeze.patch b/ldiskfs/kernel_patches/patches/ext4-mballoc-pa_free-mismatch-squeeze.patch
 new file mode 100644
-index 0000000..8dbe81b
+index 0000000..24779ad
 --- /dev/null
 +++ b/ldiskfs/kernel_patches/patches/ext4-mballoc-pa_free-mismatch-squeeze.patch
 @@ -0,0 +1,111 @@
@@ -3566,7 +3610,7 @@ index 0000000..8dbe81b
 ++	/* "free < pa->pa_free" means we maybe double alloc the same blocks,
 ++	 * otherwise maybe leave some free blocks unavailable, no need to BUG.*/
 ++	if ((free > pa->pa_free && !pa->pa_error) || (free < pa->pa_free)) {
-++		ext4_error(sb, "pa free mismatch: [pa %p] "
+++		ext4_error(sb, __func__, "pa free mismatch: [pa %p] "
 ++				"[phy %lu] [logic %lu] [len %u] [free %u] "
 ++				"[error %u] [inode %lu] [freed %u]", pa,
 ++				(unsigned long)pa->pa_pstart,
@@ -3599,7 +3643,7 @@ index 0000000..8dbe81b
 ++				 * been updated or not when fail case. So can
 ++				 * not revert pa_free back, just mark pa_error*/
 ++				pa->pa_error++;
-++				ext4_error(sb,
+++				ext4_error(sb, __func__,
 ++					"Updating bitmap error: [err %d] "
 ++					"[pa %p] [phy %lu] [logic %lu] "
 ++					"[len %u] [free %u] [error %u] "
@@ -3900,7 +3944,7 @@ index 0000000..569e0d6
 + 			       "Unrecognized mount option \"%s\" "
 diff --git a/ldiskfs/kernel_patches/patches/ext4-mmp-squeeze.patch b/ldiskfs/kernel_patches/patches/ext4-mmp-squeeze.patch
 new file mode 100644
-index 0000000..f4caddc
+index 0000000..f881660
 --- /dev/null
 +++ b/ldiskfs/kernel_patches/patches/ext4-mmp-squeeze.patch
 @@ -0,0 +1,575 @@
@@ -4118,7 +4162,7 @@ index 0000000..f4caddc
 ++               }
 ++       }
 ++       if (!*bh) {
-++               ext4_warning(sb, "Error while reading MMP block %llu",
+++               ext4_warning(sb, __func__, "Error while reading MMP block %llu",
 ++                            mmp_block);
 ++               return -EIO;
 ++       }
@@ -4136,8 +4180,8 @@ index 0000000..f4caddc
 ++void __dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp,
 ++                   const char *function, const char *msg)
 ++{
-++       __ext4_warning(sb, function, msg);
-++       __ext4_warning(sb, function,
+++       ext4_warning(sb, function, msg);
+++       ext4_warning(sb, function,
 ++                      "MMP failure info: last update time: %llu, last update "
 ++                      "node: %s, last update device: %s\n",
 ++                      (long long unsigned int) le64_to_cpu(mmp->mmp_time),
@@ -4192,20 +4236,20 @@ index 0000000..f4caddc
 ++                */
 ++               if (retval) {
 ++                       if ((failed_writes % 60) == 0)
-++                               ext4_error(sb, "Error writing to MMP block");
+++                               ext4_error(sb, __func__, "Error writing to MMP block");
 ++                       failed_writes++;
 ++               }
 ++
 ++               if (!(le32_to_cpu(es->s_feature_incompat) &
 ++                   EXT4_FEATURE_INCOMPAT_MMP)) {
-++                       ext4_warning(sb, "kmmpd being stopped since MMP feature"
+++                       ext4_warning(sb, __func__, "kmmpd being stopped since MMP feature"
 ++                                    " has been disabled.");
 ++                       EXT4_SB(sb)->s_mmp_tsk = NULL;
 ++                       goto failed;
 ++               }
 ++
 ++               if (sb->s_flags & MS_RDONLY) {
-++                       ext4_warning(sb, "kmmpd being stopped since filesystem "
+++                       ext4_warning(sb, __func__, "kmmpd being stopped since filesystem "
 ++                                    "has been remounted as readonly.");
 ++                       EXT4_SB(sb)->s_mmp_tsk = NULL;
 ++                       goto failed;
@@ -4228,7 +4272,7 @@ index 0000000..f4caddc
 ++
 ++                       retval = read_mmp_block(sb, &bh_check, mmp_block);
 ++                       if (retval) {
-++                               ext4_error(sb, "error reading MMP data: %d",
+++                               ext4_error(sb, __func__, "error reading MMP data: %d",
 ++                                          retval);
 ++
 ++                               EXT4_SB(sb)->s_mmp_tsk = NULL;
@@ -4243,7 +4287,7 @@ index 0000000..f4caddc
 ++                                            "Error while updating MMP info. "
 ++                                            "The filesystem seems to have been"
 ++                                            " multiply mounted.");
-++                               ext4_error(sb, "abort");
+++                               ext4_error(sb, __func__, "abort");
 ++                               goto failed;
 ++                       }
 ++                       put_bh(bh_check);
@@ -4305,7 +4349,7 @@ index 0000000..f4caddc
 ++
 ++       if (mmp_block < le32_to_cpu(es->s_first_data_block) ||
 ++           mmp_block >= ext4_blocks_count(es)) {
-++               ext4_warning(sb, "Invalid MMP block in superblock");
+++               ext4_warning(sb, __func__, "Invalid MMP block in superblock");
 ++               goto failed;
 ++       }
 ++
@@ -4339,11 +4383,11 @@ index 0000000..f4caddc
 ++
 ++       /* Print MMP interval if more than 20 secs. */
 ++       if (wait_time > EXT4_MMP_MIN_CHECK_INTERVAL * 4)
-++               ext4_warning(sb, "MMP interval %u higher than expected, please"
+++               ext4_warning(sb, __func__, "MMP interval %u higher than expected, please"
 ++                            " wait.\n", wait_time * 2);
 ++
 ++       if (schedule_timeout_interruptible(HZ * wait_time) != 0) {
-++               ext4_warning(sb, "MMP startup interrupted, failing mount\n");
+++               ext4_warning(sb, __func__, "MMP startup interrupted, failing mount\n");
 ++               goto failed;
 ++       }
 ++
@@ -4371,7 +4415,7 @@ index 0000000..f4caddc
 ++        * wait for MMP interval and check mmp_seq.
 ++        */
 ++       if (schedule_timeout_interruptible(HZ * wait_time) != 0) {
-++               ext4_warning(sb, "MMP startup interrupted, failing mount\n");
+++               ext4_warning(sb, __func__, "MMP startup interrupted, failing mount\n");
 ++               goto failed;
 ++       }
 ++
@@ -4387,7 +4431,7 @@ index 0000000..f4caddc
 ++
 ++       mmpd_data = kmalloc(sizeof(struct mmpd_data), GFP_KERNEL);
 ++       if (!mmpd_data) {
-++               ext4_warning(sb, "not enough memory for mmpd_data");
+++               ext4_warning(sb, __func__, "not enough memory for mmpd_data");
 ++               goto failed;
 ++       }
 ++       mmpd_data->sb = sb;
@@ -4402,7 +4446,7 @@ index 0000000..f4caddc
 ++       if (IS_ERR(EXT4_SB(sb)->s_mmp_tsk)) {
 ++               EXT4_SB(sb)->s_mmp_tsk = NULL;
 ++               kfree(mmpd_data);
-++               ext4_warning(sb, "Unable to create kmmpd thread for %s.",
+++               ext4_warning(sb, __func__, "Unable to create kmmpd thread for %s.",
 ++                            sb->s_id);
 ++               goto failed;
 ++       }
@@ -5294,7 +5338,7 @@ index 0000000..7507822
 + 
 diff --git a/ldiskfs/kernel_patches/patches/ext4-print-inum-in-htree-warning-squeeze.patch b/ldiskfs/kernel_patches/patches/ext4-print-inum-in-htree-warning-squeeze.patch
 new file mode 100644
-index 0000000..5cd3f57
+index 0000000..6eabf19
 --- /dev/null
 +++ b/ldiskfs/kernel_patches/patches/ext4-print-inum-in-htree-warning-squeeze.patch
 @@ -0,0 +1,16 @@
@@ -5309,7 +5353,7 @@ index 0000000..5cd3f57
 +-		ext4_warning(dir->i_sb, __func__,
 +-			     "Unrecognised inode hash code %d",
 +-			     root->info.hash_version);
-++		ext4_warning(dir->i_sb, "Unrecognised inode hash code %d for directory "
+++		ext4_warning(dir->i_sb, __func__, "Unrecognised inode hash code %d for directory "
 ++			     "#%lu", root->info.hash_version, dir->i_ino);
 + 		brelse(bh);
 + 		*err = ERR_BAD_DX_DIR;
@@ -6283,14 +6327,14 @@ index 0000000..8f43c78
 + 			ext4_error(inode->i_sb, __func__,
 diff --git a/ldiskfs/kernel_patches/patches/ext4_pdirop-squeeze.patch b/ldiskfs/kernel_patches/patches/ext4_pdirop-squeeze.patch
 new file mode 100644
-index 0000000..f13b222
+index 0000000..f12cbd5
 --- /dev/null
 +++ b/ldiskfs/kernel_patches/patches/ext4_pdirop-squeeze.patch
-@@ -0,0 +1,2274 @@
-+Index: linux-2.6-2.6.32/include/linux/htree_lock.h
+@@ -0,0 +1,2273 @@
++Index: linux-source-2.6.32-lustre-2.2/include/linux/htree_lock.h
 +===================================================================
 +--- /dev/null	1970-01-01 00:00:00.000000000 +0000
-++++ linux-2.6-2.6.32/include/linux/htree_lock.h	2012-08-24 11:09:17.934868978 +0200
+++++ linux-source-2.6.32-lustre-2.2/include/linux/htree_lock.h	2012-08-27 10:32:14.108317009 +0200
 +@@ -0,0 +1,187 @@
 ++/*
 ++ * include/linux/htree_lock.h
@@ -6479,10 +6523,10 @@ index 0000000..f13b222
 ++	((lck)->lk_nodes[dep].ln_mode == HTREE_LOCK_NL)
 ++
 ++#endif
-+Index: linux-2.6-2.6.32/fs/ext4/htree_lock.c
++Index: linux-source-2.6.32-lustre-2.2/fs/ext4/htree_lock.c
 +===================================================================
 +--- /dev/null	1970-01-01 00:00:00.000000000 +0000
-++++ linux-2.6-2.6.32/fs/ext4/htree_lock.c	2012-08-24 11:09:17.936868952 +0200
+++++ linux-source-2.6.32-lustre-2.2/fs/ext4/htree_lock.c	2012-08-27 10:32:14.111316970 +0200
 +@@ -0,0 +1,880 @@
 ++/*
 ++ * fs/ext4/htree_lock.c
@@ -7364,10 +7408,10 @@ index 0000000..f13b222
 ++	kfree(lck);
 ++}
 ++EXPORT_SYMBOL(htree_lock_free);
-+Index: linux-2.6-2.6.32/fs/ext4/ext4.h
++Index: linux-source-2.6.32-lustre-2.2/fs/ext4/ext4.h
 +===================================================================
-+--- linux-2.6-2.6.32.orig/fs/ext4/ext4.h	2012-08-24 10:28:35.000000000 +0200
-++++ linux-2.6-2.6.32/fs/ext4/ext4.h	2012-08-24 11:09:17.940868903 +0200
++--- linux-source-2.6.32-lustre-2.2.orig/fs/ext4/ext4.h	2012-08-27 09:59:15.594051839 +0200
+++++ linux-source-2.6.32-lustre-2.2/fs/ext4/ext4.h	2012-08-27 10:32:14.137316644 +0200
 +@@ -28,6 +28,7 @@
 + #include <linux/mutex.h>
 + #include <linux/timer.h>
@@ -7376,7 +7420,7 @@ index 0000000..f13b222
 + #include <linux/blockgroup_lock.h>
 + #include <linux/percpu_counter.h>
 + 
-+@@ -1142,6 +1143,7 @@
++@@ -1143,6 +1144,7 @@
 + #define EXT4_FEATURE_INCOMPAT_FLEX_BG		0x0200
 + #define EXT4_FEATURE_INCOMPAT_EA_INODE		0x0400
 + #define EXT4_FEATURE_INCOMPAT_DIRDATA		0x1000
@@ -7384,7 +7428,7 @@ index 0000000..f13b222
 + 
 + #define EXT4_FEATURE_COMPAT_SUPP	EXT2_FEATURE_COMPAT_EXT_ATTR
 + #define EXT4_FEATURE_INCOMPAT_SUPP	(EXT4_FEATURE_INCOMPAT_FILETYPE| \
-+@@ -1152,7 +1154,8 @@
++@@ -1153,7 +1155,8 @@
 + 					 EXT4_FEATURE_INCOMPAT_FLEX_BG| \
 + 					 EXT4_FEATURE_INCOMPAT_EA_INODE| \
 + 					 EXT4_FEATURE_INCOMPAT_MMP| \
@@ -7394,7 +7438,7 @@ index 0000000..f13b222
 + 
 + #define EXT4_FEATURE_RO_COMPAT_SUPP	(EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER| \
 + 					 EXT4_FEATURE_RO_COMPAT_LARGE_FILE| \
-+@@ -1369,6 +1372,76 @@
++@@ -1370,6 +1373,76 @@
 +  */
 + #define ERR_BAD_DX_DIR	-75000
 + 
@@ -7471,7 +7515,7 @@ index 0000000..f13b222
 + void ext4_get_group_no_and_offset(struct super_block *sb, ext4_fsblk_t blocknr,
 + 			ext4_group_t *blockgrpp, ext4_grpblk_t *offsetp);
 + 
-+@@ -1606,14 +1679,16 @@
++@@ -1607,14 +1680,16 @@
 + extern struct inode *ext4_create_inode(handle_t *handle,
 + 				       struct inode * dir, int mode);
 + extern int ext4_add_entry(handle_t *handle, struct dentry *dentry,
@@ -7491,7 +7535,7 @@ index 0000000..f13b222
 + extern int ext4_add_dot_dotdot(handle_t *handle, struct inode *dir,
 + 			       struct inode *inode, const void *, const void *);
 + extern struct buffer_head *ext4_append(handle_t *handle,
-+@@ -1723,13 +1798,15 @@
++@@ -1724,13 +1799,15 @@
 + 	es->s_r_blocks_count_hi = cpu_to_le32(blk >> 32);
 + }
 + 
@@ -7511,10 +7555,10 @@ index 0000000..f13b222
 + }
 + 
 + static inline void ext4_isize_set(struct ext4_inode *raw_inode, loff_t i_size)
-+Index: linux-2.6-2.6.32/fs/ext4/namei.c
++Index: linux-source-2.6.32-lustre-2.2/fs/ext4/namei.c
 +===================================================================
-+--- linux-2.6-2.6.32.orig/fs/ext4/namei.c	2012-08-24 11:09:04.917031723 +0200
-++++ linux-2.6-2.6.32/fs/ext4/namei.c	2012-08-24 11:09:17.948868803 +0200
++--- linux-source-2.6.32-lustre-2.2.orig/fs/ext4/namei.c	2012-08-27 09:59:14.893060654 +0200
+++++ linux-source-2.6.32-lustre-2.2/fs/ext4/namei.c	2012-08-27 10:32:14.141316596 +0200
 +@@ -176,7 +176,7 @@
 + 				 struct inode *dir,
 + 				 struct dx_hash_info *hinfo,
@@ -7800,18 +7844,17 @@ index 0000000..f13b222
 + 	}
 + 
 +-	if ((indirect = info->indirect_levels) > 1) {
-+-		ext4_warning(dir->i_sb, __func__,
-+-			     "Unimplemented inode hash depth: %#06x",
-+-			     info->indirect_levels);
 ++	indirect = info->indirect_levels;
 ++	if (indirect >= ext4_dir_htree_level(dir->i_sb)) {
-++		ext4_warning(dir->i_sb,
++ 		ext4_warning(dir->i_sb, __func__,
++-			     "Unimplemented inode hash depth: %#06x",
++-			     info->indirect_levels);
 ++			     "Directory (ino: %lu) htree depth %#06x exceed "
 ++			     "supported value", dir->i_ino,
 ++			     ext4_dir_htree_level(dir->i_sb));
 ++		if (ext4_dir_htree_level(dir->i_sb) < EXT4_HTREE_LEVEL) {
-++			ext4_warning(dir->i_sb, "Enable large directory "
-++						"feature to access it");
+++			ext4_warning(dir->i_sb, __func__, "Enable large directory "
+++							  "feature to access it");
 ++		}
 + 		brelse(bh);
 + 		*err = ERR_BAD_DX_DIR;
@@ -8310,13 +8353,13 @@ index 0000000..f13b222
 ++			restart = 1;
 ++		}
 ++		if (add_level && levels == ext4_dir_htree_level(sb)) {
-++			ext4_warning(sb, "Directory (ino: %lu) index full, "
-++					 "reach max htree level :%d",
-++					 dir->i_ino, levels);
+++			ext4_warning(sb, __func__, "Directory (ino: %lu) index full, "
+++						   "reach max htree level :%d",
+++						   dir->i_ino, levels);
 ++			if (ext4_dir_htree_level(sb) < EXT4_HTREE_LEVEL) {
-++				ext4_warning(sb, "Large directory feature is"
-++						 "not enabled on this "
-++						 "filesystem");
+++				ext4_warning(sb, __func__, "Large directory feature is"
+++							   "not enabled on this "
+++							   "filesystem");
 ++			}
 + 			err = -ENOSPC;
 + 			goto cleanup;
@@ -8535,10 +8578,10 @@ index 0000000..f13b222
 + 		if (old_bh2) {
 + 			retval = ext4_delete_entry(handle, old_dir,
 + 						   old_de2, old_bh2);
-+Index: linux-2.6-2.6.32/fs/ext4/inode.c
++Index: linux-source-2.6.32-lustre-2.2/fs/ext4/inode.c
 +===================================================================
-+--- linux-2.6-2.6.32.orig/fs/ext4/inode.c	2012-08-23 15:31:05.000000000 +0200
-++++ linux-2.6-2.6.32/fs/ext4/inode.c	2012-08-24 11:09:17.953868740 +0200
++--- linux-source-2.6.32-lustre-2.2.orig/fs/ext4/inode.c	2012-08-27 09:59:05.507177944 +0200
+++++ linux-source-2.6.32-lustre-2.2/fs/ext4/inode.c	2012-08-27 10:32:14.149316496 +0200
 +@@ -4840,7 +4840,7 @@
 + 	if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_64BIT))
 + 		ei->i_file_acl |=
@@ -8548,10 +8591,10 @@ index 0000000..f13b222
 + 	ei->i_disksize = inode->i_size;
 + 	inode->i_generation = le32_to_cpu(raw_inode->i_generation);
 + 	ei->i_block_group = iloc.block_group;
-+Index: linux-2.6-2.6.32/fs/ext4/Makefile
++Index: linux-source-2.6.32-lustre-2.2/fs/ext4/Makefile
 +===================================================================
-+--- linux-2.6-2.6.32.orig/fs/ext4/Makefile	2012-08-24 09:50:41.000000000 +0200
-++++ linux-2.6-2.6.32/fs/ext4/Makefile	2012-08-24 11:09:17.959868665 +0200
++--- linux-source-2.6.32-lustre-2.2.orig/fs/ext4/Makefile	2012-08-27 09:59:08.878135853 +0200
+++++ linux-source-2.6.32-lustre-2.2/fs/ext4/Makefile	2012-08-27 10:32:14.154316432 +0200
 +@@ -7,7 +7,7 @@
 + ext4-y	:= balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \
 + 		ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \

-- 
Lustre Debian Packaging 



More information about the Pkg-lustre-svn-commit mailing list