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.j...@oracle.com> --- fs/btrfs/volumes.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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: -- 2.7.0 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html