This diff contain mballoc fixes and update for ext3-4 migrate patch.

Testing:
ext3 to ext4 migration.

I will be putting the patch queue for abat test now.

-aneesh

diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index ebcd25e..99d16f5 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -62,7 +62,7 @@ static ext4_fsblk_t ext_pblock(struct ext4_extent *ex)
  * idx_pblock:
  * combine low and high parts of a leaf physical block number into ext4_fsblk_t
  */
-static ext4_fsblk_t idx_pblock(struct ext4_extent_idx *ix)
+ext4_fsblk_t idx_pblock(struct ext4_extent_idx *ix)
 {
        ext4_fsblk_t block;
 
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index a60672c..9de0cdf 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -2723,7 +2723,7 @@ int ext4_mb_release(struct super_block *sb)
 #endif
                        ext4_lock_group(sb, i);
                        ext4_mb_cleanup_pa(grinfo);
-                       ext4_lock_group(sb, i);
+                       ext4_unlock_group(sb, i);
                        kfree(grinfo);
                }
                num_meta_group_infos = (sbi->s_groups_count +
@@ -4452,7 +4452,6 @@ do_more:
                overflow = bit + count - EXT4_BLOCKS_PER_GROUP(sb);
                count -= overflow;
        }
-       put_bh(bitmap_bh);
        bitmap_bh = read_block_bitmap(sb, block_group);
        if (!bitmap_bh)
                goto error_return;
diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c
index 70a4d9c..3ebc233 100644
--- a/fs/ext4/migrate.c
+++ b/fs/ext4/migrate.c
@@ -342,16 +342,6 @@ err_out:
        return retval;
 }
 
-/* Will go away */
-static ext4_fsblk_t idx_pblock(struct ext4_extent_idx *ix)
-{
-       ext4_fsblk_t block;
-
-       block = le32_to_cpu(ix->ei_leaf_lo);
-       block |= ((ext4_fsblk_t) le16_to_cpu(ix->ei_leaf_hi) << 31) << 1;
-       return block;
-}
-
 static int free_ext_idx(handle_t *handle, struct inode *inode,
                                        struct ext4_extent_idx *ix)
 {
@@ -366,9 +356,7 @@ static int free_ext_idx(handle_t *handle, struct inode 
*inode,
                return -EIO;
 
        eh = (struct ext4_extent_header *)bh->b_data;
-       if (eh->eh_depth == 0)
-               ext4_free_blocks(handle, inode, block, 1, 1);
-       else {
+       if (eh->eh_depth != 0) {
                ix = EXT_FIRST_INDEX(eh);
                for (i = 0; i < le16_to_cpu(eh->eh_entries); i++, ix++) {
                        retval = free_ext_idx(handle, inode, ix);
@@ -377,6 +365,7 @@ static int free_ext_idx(handle_t *handle, struct inode 
*inode,
                }
        }
        put_bh(bh);
+       ext4_free_blocks(handle, inode, block, 1, 1);
        return retval;
 }
 
diff --git a/include/linux/ext4_fs_extents.h b/include/linux/ext4_fs_extents.h
index f536b2f..697da4b 100644
--- a/include/linux/ext4_fs_extents.h
+++ b/include/linux/ext4_fs_extents.h
@@ -212,6 +212,7 @@ static inline int ext4_ext_get_actual_len(struct 
ext4_extent *ext)
                (le16_to_cpu(ext->ee_len) - EXT_INIT_MAX_LEN));
 }
 
+extern ext4_fsblk_t idx_pblock(struct ext4_extent_idx *);
 extern void ext4_ext_store_pblock(struct ext4_extent *, ext4_fsblk_t);
 extern int ext4_extent_tree_init(handle_t *, struct inode *);
 extern int ext4_ext_calc_credits_for_insert(struct inode *, struct 
ext4_ext_path *);
-
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to