Commit 976331d8 authored by Tao Ma's avatar Tao Ma Committed by Mark Fasheh

ocfs2/xattr: Only extend xattr bucket in need.

When the first block of a bucket is filled up with xattr
entries, we normally extend the bucket. But if we are
just replace one xattr with small length, we don't need
to extend it. This is important since we will calculate
what we need before the transaction and in this situation
no resources will be allocated.
Signed-off-by: default avatarTao Ma <tao.ma@oracle.com>
Signed-off-by: default avatarMark Fasheh <mfasheh@suse.com>
parent 757055ad
...@@ -4564,7 +4564,9 @@ static int ocfs2_xattr_set_entry_index_block(struct inode *inode, ...@@ -4564,7 +4564,9 @@ static int ocfs2_xattr_set_entry_index_block(struct inode *inode,
free, need, max_free, le16_to_cpu(xh->xh_free_start), free, need, max_free, le16_to_cpu(xh->xh_free_start),
le16_to_cpu(xh->xh_name_value_len)); le16_to_cpu(xh->xh_name_value_len));
if (free < need || count == ocfs2_xattr_max_xe_in_bucket(inode->i_sb)) { if (free < need ||
(xs->not_found &&
count == ocfs2_xattr_max_xe_in_bucket(inode->i_sb))) {
if (need <= max_free && if (need <= max_free &&
count < ocfs2_xattr_max_xe_in_bucket(inode->i_sb)) { count < ocfs2_xattr_max_xe_in_bucket(inode->i_sb)) {
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment