diff options
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) |