Message ID | 20180109144625.28381-4-anand.jain@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Jan 09, 2018 at 10:46:23PM +0800, Anand Jain wrote: > Instead of pointer to btrfs_fs_devices from device_list_add() its > better to get pointer to btrfs_device, then we have both, pointer > to btrfs_device and btrfs_fs_devices. This is needed in preparation > to add handling reappearing missing device feature. > > Signed-off-by: Anand Jain <anand.jain@oracle.com> Can we just change device_list_add to return struct btrfs_device * instead, and just do PTR_ERR() if there's a problem? Thanks, Josef -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 01/10/2018 12:13 AM, Josef Bacik wrote: > On Tue, Jan 09, 2018 at 10:46:23PM +0800, Anand Jain wrote: >> Instead of pointer to btrfs_fs_devices from device_list_add() its >> better to get pointer to btrfs_device, then we have both, pointer >> to btrfs_device and btrfs_fs_devices. This is needed in preparation >> to add handling reappearing missing device feature. >> >> Signed-off-by: Anand Jain <anand.jain@oracle.com> > > Can we just change device_list_add to return struct btrfs_device * instead, and > just do PTR_ERR() if there's a problem? Thanks, That's much better. Will do. Thanks, Anand > Josef > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index f9aaf65e27f5..2317ca1b3d83 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -732,7 +732,7 @@ static int btrfs_open_one_device(struct btrfs_fs_devices *fs_devices, */ static noinline int device_list_add(const char *path, struct btrfs_super_block *disk_super, - u64 devid, struct btrfs_fs_devices **fs_devices_ret) + u64 devid, struct btrfs_device **device_ret) { struct btrfs_device *device; struct btrfs_fs_devices *fs_devices; @@ -846,7 +846,7 @@ static noinline int device_list_add(const char *path, fs_devices->total_devices = btrfs_super_num_devices(disk_super); - *fs_devices_ret = fs_devices; + *device_ret = device; return 0; } @@ -1183,6 +1183,7 @@ int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder, struct btrfs_fs_devices **fs_devices_ret) { struct btrfs_super_block *disk_super; + struct btrfs_device *device; struct block_device *bdev; struct page *page; int ret; @@ -1210,9 +1211,11 @@ int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder, devid = btrfs_stack_device_id(&disk_super->dev_item); mutex_lock(&uuid_mutex); - ret = device_list_add(path, disk_super, devid, fs_devices_ret); + ret = device_list_add(path, disk_super, devid, &device); mutex_unlock(&uuid_mutex); + *fs_devices_ret = device->fs_devices; + btrfs_release_disk_super(page); error_bdev_put:
Instead of pointer to btrfs_fs_devices from device_list_add() its better to get pointer to btrfs_device, then we have both, pointer to btrfs_device and btrfs_fs_devices. This is needed in preparation to add handling reappearing missing device feature. Signed-off-by: Anand Jain <anand.jain@oracle.com> --- fs/btrfs/volumes.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)