aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/journal.h
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ocfs2/journal.h')
-rw-r--r--fs/ocfs2/journal.h17
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 */
343static inline int ocfs2_calc_extend_credits(struct super_block *sb, 348static 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
370static inline int ocfs2_calc_symlink_credits(struct super_block *sb) 375static inline int ocfs2_calc_symlink_credits(struct super_block *sb)