From 3d58b70eae311210d6d1f6c566d041002827df98 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Fri, 9 Sep 2011 18:46:51 -0400 Subject: [PATCH] --- yaml --- r: 273112 b: refs/heads/master c: 3212a80a58062056bb922811071062be58d8fee1 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/ext4/balloc.c | 6 ++++-- trunk/fs/ext4/mballoc.h | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index df0f502e3bdb..aa621191bb44 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d5b8f31007a93777cfb0603b665858fb7aebebfc +refs/heads/master: 3212a80a58062056bb922811071062be58d8fee1 diff --git a/trunk/fs/ext4/balloc.c b/trunk/fs/ext4/balloc.c index 1c6d777b35a2..89abf1f7b253 100644 --- a/trunk/fs/ext4/balloc.c +++ b/trunk/fs/ext4/balloc.c @@ -28,7 +28,8 @@ */ /* - * Calculate the block group number and offset, given a block number + * Calculate the block group number and offset into the block/cluster + * allocation bitmap, given a block number */ void ext4_get_group_no_and_offset(struct super_block *sb, ext4_fsblk_t blocknr, ext4_group_t *blockgrpp, ext4_grpblk_t *offsetp) @@ -37,7 +38,8 @@ void ext4_get_group_no_and_offset(struct super_block *sb, ext4_fsblk_t blocknr, ext4_grpblk_t offset; blocknr = blocknr - le32_to_cpu(es->s_first_data_block); - offset = do_div(blocknr, EXT4_BLOCKS_PER_GROUP(sb)); + offset = do_div(blocknr, EXT4_BLOCKS_PER_GROUP(sb)) >> + EXT4_SB(sb)->s_cluster_bits; if (offsetp) *offsetp = offset; if (blockgrpp) diff --git a/trunk/fs/ext4/mballoc.h b/trunk/fs/ext4/mballoc.h index 9d4a636b546c..3cdb8aa9f6b7 100644 --- a/trunk/fs/ext4/mballoc.h +++ b/trunk/fs/ext4/mballoc.h @@ -216,6 +216,7 @@ struct ext4_buddy { static inline ext4_fsblk_t ext4_grp_offs_to_block(struct super_block *sb, struct ext4_free_extent *fex) { - return ext4_group_first_block_no(sb, fex->fe_group) + fex->fe_start; + return ext4_group_first_block_no(sb, fex->fe_group) + + (fex->fe_start << EXT4_SB(sb)->s_cluster_bits); } #endif