btrfs-progs: Port kernel fs_devices::total_rw_bytes

Unlike kernel, btrfs-progs doesn't (yet) support devices grow/shrink,
the port only needs to handle open_ctree() time initialization (at
read_one_dev()), and btrfs_add_device() used for mkfs.

This provide the basis for incoming unification of chunk allocator
behavior.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
master
Qu Wenruo 2019-02-05 14:53:11 +08:00 committed by David Sterba
parent aa4e8cbba2
commit 0dd9031159
2 changed files with 6 additions and 0 deletions

View File

@ -744,6 +744,7 @@ int btrfs_add_device(struct btrfs_trans_handle *trans,
write_extent_buffer(leaf, fs_info->fs_devices->metadata_uuid, ptr,
BTRFS_UUID_SIZE);
btrfs_mark_buffer_dirty(leaf);
fs_info->fs_devices->total_rw_bytes += device->total_bytes;
ret = 0;
out:
@ -2060,6 +2061,8 @@ static int read_one_dev(struct btrfs_fs_info *fs_info,
fill_device_from_item(leaf, dev_item, device);
device->dev_root = fs_info->dev_root;
fs_info->fs_devices->total_rw_bytes +=
btrfs_device_total_bytes(leaf, dev_item);
return ret;
}

View File

@ -77,6 +77,9 @@ struct btrfs_fs_devices {
u64 latest_devid;
u64 latest_trans;
u64 lowest_devid;
u64 total_rw_bytes;
int latest_bdev;
int lowest_bdev;
struct list_head devices;