diff options
author | Andrew Morton <akpm@osdl.org> | 2006-10-11 12:21:18 +0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-11 22:14:18 +0400 |
commit | 72b64b594081ef0a0717f6aad77e891c72ed4afa (patch) | |
tree | 50fdb2b2743a95066ee83f58bed9c44daf707506 /fs/ext4 | |
parent | 8fadc14323684c547f74cf2f4d13517c6c264731 (diff) | |
download | linux-72b64b594081ef0a0717f6aad77e891c72ed4afa.tar.xz |
[PATCH] ext4 uninline ext4_get_group_no_and_offset()
Way too big to inline.
Cc: <linux-ext4@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/ext4')
-rw-r--r-- | fs/ext4/balloc.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c index 3e85886a6382..402475a6f3df 100644 --- a/fs/ext4/balloc.c +++ b/fs/ext4/balloc.c @@ -25,6 +25,24 @@ */ /* + * Calculate the block group number and offset, given a block number + */ +void ext4_get_group_no_and_offset(struct super_block *sb, ext4_fsblk_t blocknr, + unsigned long *blockgrpp, ext4_grpblk_t *offsetp) +{ + struct ext4_super_block *es = EXT4_SB(sb)->s_es; + ext4_grpblk_t offset; + + blocknr = blocknr - le32_to_cpu(es->s_first_data_block); + offset = sector_div(blocknr, EXT4_BLOCKS_PER_GROUP(sb)); + if (offsetp) + *offsetp = offset; + if (blockgrpp) + *blockgrpp = blocknr; + +} + +/* * The free blocks are managed by bitmaps. A file system contains several * blocks groups. Each group contains 1 bitmap block for blocks, 1 bitmap * block for inodes, N blocks for the inode table and data blocks. |