Skip to content

Commit

Permalink
ocfs2/xattr: fix credits calculation during index create
Browse files Browse the repository at this point in the history
When creating a xattr index block, the old calculation forget
to add credits for the meta change of the alloc file. So add
more credits and more comments to explain it.

Signed-off-by: Tao Ma <tao.ma@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
  • Loading branch information
Tao Ma authored and Mark Fasheh committed Jan 5, 2009
1 parent 4b3f620 commit 90cb546
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion fs/ocfs2/xattr.c
Original file line number Diff line number Diff line change
Expand Up @@ -2359,13 +2359,21 @@ static int ocfs2_calc_xattr_set_need(struct inode *inode,
} else
xb = (struct ocfs2_xattr_block *)xbs->xattr_bh->b_data;

/*
* If there is already an xattr tree, good, we can calculate
* like other b-trees. Otherwise we may have the chance of
* create a tree, the credit calculation is borrowed from
* ocfs2_calc_extend_credits with root_el = NULL. And the
* new tree will be cluster based, so no meta is needed.
*/
if (le16_to_cpu(xb->xb_flags) & OCFS2_XATTR_INDEXED) {
struct ocfs2_extent_list *el =
&xb->xb_attrs.xb_root.xt_list;
meta_add += ocfs2_extend_meta_needed(el);
credits += ocfs2_calc_extend_credits(inode->i_sb,
el, 1);
}
} else
credits += OCFS2_SUBALLOC_ALLOC + 1;

/*
* This cluster will be used either for new bucket or for
Expand Down

0 comments on commit 90cb546

Please sign in to comment.