mirror of
https://github.com/kdave/btrfs-progs
synced 2025-02-16 17:56:51 +00:00
btrfs-progs: provide fs_info from btrfs_device
Likewise in the kernel code, provide fs_info access from struct btrfs_device. This will help to unify the code between the kernel and the userland. Since fs_info can be NULL at the time of btrfs_add_to_fsid(), let's use btrfs_open_devices() to set fs_info to the devices. Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
c4d2704c9a
commit
acdd22ab68
@ -1446,7 +1446,7 @@ open_ctree_with_broken_chunk(struct recover_control *rc)
|
||||
fs_info->is_chunk_recover = 1;
|
||||
|
||||
fs_info->fs_devices = rc->fs_devices;
|
||||
ret = btrfs_open_devices(fs_info->fs_devices, O_RDWR);
|
||||
ret = btrfs_open_devices(fs_info, fs_info->fs_devices, O_RDWR);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
|
@ -141,6 +141,7 @@ int btrfs_add_to_fsid(struct btrfs_trans_handle *trans,
|
||||
dev_item = &disk_super->dev_item;
|
||||
|
||||
uuid_generate(device->uuid);
|
||||
device->fs_info = fs_info;
|
||||
device->devid = 0;
|
||||
device->type = 0;
|
||||
device->io_width = io_width;
|
||||
|
@ -1270,7 +1270,7 @@ static struct btrfs_fs_info *__open_ctree_fd(int fp, struct open_ctree_flags *oc
|
||||
if (flags & OPEN_CTREE_EXCLUSIVE)
|
||||
oflags |= O_EXCL;
|
||||
|
||||
ret = btrfs_open_devices(fs_devices, oflags);
|
||||
ret = btrfs_open_devices(fs_info, fs_devices, oflags);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
|
@ -389,13 +389,17 @@ void btrfs_close_all_devices(void)
|
||||
}
|
||||
}
|
||||
|
||||
int btrfs_open_devices(struct btrfs_fs_devices *fs_devices, int flags)
|
||||
int btrfs_open_devices(struct btrfs_fs_info *fs_info,
|
||||
struct btrfs_fs_devices *fs_devices, int flags)
|
||||
{
|
||||
int fd;
|
||||
struct btrfs_device *device;
|
||||
int ret;
|
||||
|
||||
list_for_each_entry(device, &fs_devices->devices, dev_list) {
|
||||
if (!device->fs_info)
|
||||
device->fs_info = fs_info;
|
||||
|
||||
if (!device->name) {
|
||||
printk("no name for device %llu, skip it now\n", device->devid);
|
||||
continue;
|
||||
@ -2106,7 +2110,7 @@ static int open_seed_devices(struct btrfs_fs_info *fs_info, u8 *fsid)
|
||||
memcpy(fs_devices->fsid, fsid, BTRFS_FSID_SIZE);
|
||||
}
|
||||
|
||||
ret = btrfs_open_devices(fs_devices, O_RDONLY);
|
||||
ret = btrfs_open_devices(fs_info, fs_devices, O_RDONLY);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
|
@ -28,6 +28,7 @@ struct btrfs_device {
|
||||
struct list_head dev_list;
|
||||
struct btrfs_root *dev_root;
|
||||
struct btrfs_fs_devices *fs_devices;
|
||||
struct btrfs_fs_info *fs_info;
|
||||
|
||||
u64 total_ios;
|
||||
|
||||
@ -282,8 +283,8 @@ int btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
|
||||
u64 *num_bytes, u64 type);
|
||||
int btrfs_alloc_data_chunk(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_fs_info *fs_info, u64 *start, u64 num_bytes);
|
||||
int btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
|
||||
int flags);
|
||||
int btrfs_open_devices(struct btrfs_fs_info *fs_info,
|
||||
struct btrfs_fs_devices *fs_devices, int flags);
|
||||
int btrfs_close_devices(struct btrfs_fs_devices *fs_devices);
|
||||
void btrfs_close_all_devices(void);
|
||||
int btrfs_insert_dev_extent(struct btrfs_trans_handle *trans,
|
||||
|
Loading…
Reference in New Issue
Block a user