aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2008-11-25 15:11:52 -0500
committerTheodore Ts'o <tytso@mit.edu>2008-11-25 15:11:52 -0500
commitc3a326a657562dab81acf05aee106dc1fe345eb4 (patch)
tree228cf1c76cc51041fdc57e8b0b7ee7008400c457 /fs
parent920313a726e04fef0f2c0bcb04ad8229c0e700d8 (diff)
ext4: cleanup mballoc header files
Move some of the forward declaration of the static functions to mballoc.c where they are used. This enables us to include mballoc.h in other .c files. Also correct the buddy cache documentation. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs')
-rw-r--r--fs/ext4/mballoc.c23
-rw-r--r--fs/ext4/mballoc.h18
2 files changed, 20 insertions, 21 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index d2b1bcaf88ec..c17063ddb307 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -100,7 +100,7 @@
100 * inode as: 100 * inode as:
101 * 101 *
102 * { page } 102 * { page }
103 * [ group 0 buddy][ group 0 bitmap] [group 1][ group 1]... 103 * [ group 0 bitmap][ group 0 buddy] [group 1][ group 1]...
104 * 104 *
105 * 105 *
106 * one block each for bitmap and buddy information. So for each group we 106 * one block each for bitmap and buddy information. So for each group we
@@ -330,6 +330,16 @@
330 * object 330 * object
331 * 331 *
332 */ 332 */
333static struct kmem_cache *ext4_pspace_cachep;
334static struct kmem_cache *ext4_ac_cachep;
335static struct kmem_cache *ext4_free_ext_cachep;
336static void ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap,
337 ext4_group_t group);
338static int ext4_mb_init_per_dev_proc(struct super_block *sb);
339static int ext4_mb_destroy_per_dev_proc(struct super_block *sb);
340static void release_blocks_on_commit(journal_t *journal, transaction_t *txn);
341
342
333 343
334static inline void *mb_correct_addr_and_bit(int *bit, void *addr) 344static inline void *mb_correct_addr_and_bit(int *bit, void *addr)
335{ 345{
@@ -716,7 +726,7 @@ static void ext4_mb_generate_buddy(struct super_block *sb,
716 * stored in the inode as 726 * stored in the inode as
717 * 727 *
718 * { page } 728 * { page }
719 * [ group 0 buddy][ group 0 bitmap] [group 1][ group 1]... 729 * [ group 0 bitmap][ group 0 buddy] [group 1][ group 1]...
720 * 730 *
721 * 731 *
722 * one block each for bitmap and buddy information. 732 * one block each for bitmap and buddy information.
@@ -1322,8 +1332,13 @@ static void ext4_mb_use_best_found(struct ext4_allocation_context *ac,
1322 ac->ac_tail = ret & 0xffff; 1332 ac->ac_tail = ret & 0xffff;
1323 ac->ac_buddy = ret >> 16; 1333 ac->ac_buddy = ret >> 16;
1324 1334
1325 /* XXXXXXX: SUCH A HORRIBLE **CK */ 1335 /*
1326 /*FIXME!! Why ? */ 1336 * take the page reference. We want the page to be pinned
1337 * so that we don't get a ext4_mb_init_cache_call for this
1338 * group until we update the bitmap. That would mean we
1339 * double allocate blocks. The reference is dropped
1340 * in ext4_mb_release_context
1341 */
1327 ac->ac_bitmap_page = e4b->bd_bitmap_page; 1342 ac->ac_bitmap_page = e4b->bd_bitmap_page;
1328 get_page(ac->ac_bitmap_page); 1343 get_page(ac->ac_bitmap_page);
1329 ac->ac_buddy_page = e4b->bd_buddy_page; 1344 ac->ac_buddy_page = e4b->bd_buddy_page;
diff --git a/fs/ext4/mballoc.h b/fs/ext4/mballoc.h
index a931b6b4f6ad..997f78fff129 100644
--- a/fs/ext4/mballoc.h
+++ b/fs/ext4/mballoc.h
@@ -99,9 +99,6 @@
99 */ 99 */
100#define MB_DEFAULT_GROUP_PREALLOC 512 100#define MB_DEFAULT_GROUP_PREALLOC 512
101 101
102static struct kmem_cache *ext4_pspace_cachep;
103static struct kmem_cache *ext4_ac_cachep;
104static struct kmem_cache *ext4_free_ext_cachep;
105 102
106struct ext4_free_data { 103struct ext4_free_data {
107 /* this links the free block information from group_info */ 104 /* this links the free block information from group_info */
@@ -262,25 +259,12 @@ static inline void ext4_mb_store_history(struct ext4_allocation_context *ac)
262{ 259{
263 return; 260 return;
264} 261}
265#else
266static void ext4_mb_store_history(struct ext4_allocation_context *ac);
267#endif 262#endif
268 263
269#define in_range(b, first, len) ((b) >= (first) && (b) <= (first) + (len) - 1) 264#define in_range(b, first, len) ((b) >= (first) && (b) <= (first) + (len) - 1)
270 265
271struct buffer_head *read_block_bitmap(struct super_block *, ext4_group_t); 266struct buffer_head *read_block_bitmap(struct super_block *, ext4_group_t);
272 267
273static void ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap,
274 ext4_group_t group);
275static void ext4_mb_return_to_preallocation(struct inode *inode,
276 struct ext4_buddy *e4b, sector_t block,
277 int count);
278static void ext4_mb_put_pa(struct ext4_allocation_context *,
279 struct super_block *, struct ext4_prealloc_space *pa);
280static int ext4_mb_init_per_dev_proc(struct super_block *sb);
281static int ext4_mb_destroy_per_dev_proc(struct super_block *sb);
282static void release_blocks_on_commit(journal_t *journal, transaction_t *txn);
283
284 268
285static inline void ext4_lock_group(struct super_block *sb, ext4_group_t group) 269static inline void ext4_lock_group(struct super_block *sb, ext4_group_t group)
286{ 270{
@@ -306,7 +290,7 @@ static inline int ext4_is_group_locked(struct super_block *sb,
306 &(grinfo->bb_state)); 290 &(grinfo->bb_state));
307} 291}
308 292
309static ext4_fsblk_t ext4_grp_offs_to_block(struct super_block *sb, 293static inline ext4_fsblk_t ext4_grp_offs_to_block(struct super_block *sb,
310 struct ext4_free_extent *fex) 294 struct ext4_free_extent *fex)
311{ 295{
312 ext4_fsblk_t block; 296 ext4_fsblk_t block;