diff options
author | Tao Ma <tao.ma@oracle.com> | 2008-08-18 05:38:43 -0400 |
---|---|---|
committer | Mark Fasheh <mfasheh@suse.com> | 2008-10-13 16:57:58 -0400 |
commit | 811f933df1e55615fd0bb4818f31e3868a8e6e23 (patch) | |
tree | 53335e59bdff02d7ddb3a2ec15d36239fe50003d /fs/ocfs2/journal.h | |
parent | 231b87d10920e024efaf0f9e86e1bab7bced1620 (diff) |
ocfs2: Use ocfs2_extent_list instead of ocfs2_dinode.
ocfs2_extend_meta_needed(), ocfs2_calc_extend_credits() and
ocfs2_reserve_new_metadata() are all useful for extent tree operations. But
they are all limited to an inode btree because they use a struct
ocfs2_dinode parameter. Change their parameter to struct ocfs2_extent_list
(the part of an ocfs2_dinode they actually use) so that the xattr btree code
can use these functions.
Signed-off-by: Tao Ma <tao.ma@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Diffstat (limited to 'fs/ocfs2/journal.h')
-rw-r--r-- | fs/ocfs2/journal.h | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/fs/ocfs2/journal.h b/fs/ocfs2/journal.h index 2178ebffa05f..9485f8037d9b 100644 --- a/fs/ocfs2/journal.h +++ b/fs/ocfs2/journal.h | |||
@@ -340,11 +340,16 @@ int ocfs2_journal_dirty_data(handle_t *handle, | |||
340 | #define OCFS2_RENAME_CREDITS (3 * OCFS2_INODE_UPDATE_CREDITS + 3 \ | 340 | #define OCFS2_RENAME_CREDITS (3 * OCFS2_INODE_UPDATE_CREDITS + 3 \ |
341 | + OCFS2_UNLINK_CREDITS) | 341 | + OCFS2_UNLINK_CREDITS) |
342 | 342 | ||
343 | /* | ||
344 | * Please note that the caller must make sure that root_el is the root | ||
345 | * of extent tree. So for an inode, it should be &fe->id2.i_list. Otherwise | ||
346 | * the result may be wrong. | ||
347 | */ | ||
343 | static inline int ocfs2_calc_extend_credits(struct super_block *sb, | 348 | static inline int ocfs2_calc_extend_credits(struct super_block *sb, |
344 | struct ocfs2_dinode *fe, | 349 | struct ocfs2_extent_list *root_el, |
345 | u32 bits_wanted) | 350 | u32 bits_wanted) |
346 | { | 351 | { |
347 | int bitmap_blocks, sysfile_bitmap_blocks, dinode_blocks; | 352 | int bitmap_blocks, sysfile_bitmap_blocks, extent_blocks; |
348 | 353 | ||
349 | /* bitmap dinode, group desc. + relinked group. */ | 354 | /* bitmap dinode, group desc. + relinked group. */ |
350 | bitmap_blocks = OCFS2_SUBALLOC_ALLOC; | 355 | bitmap_blocks = OCFS2_SUBALLOC_ALLOC; |
@@ -355,16 +360,16 @@ static inline int ocfs2_calc_extend_credits(struct super_block *sb, | |||
355 | * however many metadata chunks needed * a remaining suballoc | 360 | * however many metadata chunks needed * a remaining suballoc |
356 | * alloc. */ | 361 | * alloc. */ |
357 | sysfile_bitmap_blocks = 1 + | 362 | sysfile_bitmap_blocks = 1 + |
358 | (OCFS2_SUBALLOC_ALLOC - 1) * ocfs2_extend_meta_needed(fe); | 363 | (OCFS2_SUBALLOC_ALLOC - 1) * ocfs2_extend_meta_needed(root_el); |
359 | 364 | ||
360 | /* this does not include *new* metadata blocks, which are | 365 | /* this does not include *new* metadata blocks, which are |
361 | * accounted for in sysfile_bitmap_blocks. fe + | 366 | * accounted for in sysfile_bitmap_blocks. root_el + |
362 | * prev. last_eb_blk + blocks along edge of tree. | 367 | * prev. last_eb_blk + blocks along edge of tree. |
363 | * calc_symlink_credits passes because we just need 1 | 368 | * calc_symlink_credits passes because we just need 1 |
364 | * credit for the dinode there. */ | 369 | * credit for the dinode there. */ |
365 | dinode_blocks = 1 + 1 + le16_to_cpu(fe->id2.i_list.l_tree_depth); | 370 | extent_blocks = 1 + 1 + le16_to_cpu(root_el->l_tree_depth); |
366 | 371 | ||
367 | return bitmap_blocks + sysfile_bitmap_blocks + dinode_blocks; | 372 | return bitmap_blocks + sysfile_bitmap_blocks + extent_blocks; |
368 | } | 373 | } |
369 | 374 | ||
370 | static inline int ocfs2_calc_symlink_credits(struct super_block *sb) | 375 | static inline int ocfs2_calc_symlink_credits(struct super_block *sb) |