btrfs: Update stats when allocating from a cluster
When allocating extent entry from a cluster, we should update the free_space and free_extents fields of the block group. Reviewed-by: Josef Bacik <josef@redhat.com> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
This commit is contained in:
parent
70b7da304f
commit
5e71b5d5ec
|
@ -1843,15 +1843,26 @@ u64 btrfs_alloc_from_cluster(struct btrfs_block_group_cache *block_group,
|
|||
entry->offset += bytes;
|
||||
entry->bytes -= bytes;
|
||||
|
||||
if (entry->bytes == 0) {
|
||||
if (entry->bytes == 0)
|
||||
rb_erase(&entry->offset_index, &cluster->root);
|
||||
kfree(entry);
|
||||
}
|
||||
break;
|
||||
}
|
||||
out:
|
||||
spin_unlock(&cluster->lock);
|
||||
|
||||
if (!ret)
|
||||
return 0;
|
||||
|
||||
spin_lock(&block_group->tree_lock);
|
||||
|
||||
block_group->free_space -= bytes;
|
||||
if (entry->bytes == 0) {
|
||||
block_group->free_extents--;
|
||||
kfree(entry);
|
||||
}
|
||||
|
||||
spin_unlock(&block_group->tree_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue