The following commit has been merged in the master branch:
commit 35bda3da7bcbc5279859c6963ee55e52a460a58e
Author: Marco Nelles <marco.nel...@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 

_______________________________________________
Pkg-lustre-svn-commit mailing list
Pkg-lustre-svn-commit@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-lustre-svn-commit

Reply via email to