[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