Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e71b5d5 authored by Li Zefan's avatar Li Zefan
Browse files

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: default avatarJosef Bacik <josef@redhat.com>
Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
parent 70b7da30
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -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;
}