Commit 2dfeca9b authored by David Sterba's avatar David Sterba

btrfs: merge alloc_device helpers

There are two helpers called in chain from one location, we can merge the
functionaliy.

Originally, alloc_fs_devices could fill the device uuid randomly if we
we didn't give the uuid buffer. This happens for seed devices but the
fsid is generated in btrfs_prepare_sprout, so we can remove it.
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 4b81ba48
...@@ -152,7 +152,15 @@ struct list_head *btrfs_get_fs_uuids(void) ...@@ -152,7 +152,15 @@ struct list_head *btrfs_get_fs_uuids(void)
return &fs_uuids; return &fs_uuids;
} }
static struct btrfs_fs_devices *__alloc_fs_devices(void) /*
* alloc_fs_devices - allocate struct btrfs_fs_devices
* @fsid: if not NULL, copy the uuid to fs_devices::fsid
*
* Return a pointer to a new struct btrfs_fs_devices on success, or ERR_PTR().
* The returned struct is not linked onto any lists and can be destroyed with
* kfree() right away.
*/
static struct btrfs_fs_devices *alloc_fs_devices(const u8 *fsid)
{ {
struct btrfs_fs_devices *fs_devs; struct btrfs_fs_devices *fs_devs;
...@@ -166,31 +174,8 @@ static struct btrfs_fs_devices *__alloc_fs_devices(void) ...@@ -166,31 +174,8 @@ static struct btrfs_fs_devices *__alloc_fs_devices(void)
INIT_LIST_HEAD(&fs_devs->resized_devices); INIT_LIST_HEAD(&fs_devs->resized_devices);
INIT_LIST_HEAD(&fs_devs->alloc_list); INIT_LIST_HEAD(&fs_devs->alloc_list);
INIT_LIST_HEAD(&fs_devs->list); INIT_LIST_HEAD(&fs_devs->list);
return fs_devs;
}
/**
* alloc_fs_devices - allocate struct btrfs_fs_devices
* @fsid: a pointer to UUID for this FS. If NULL a new UUID is
* generated.
*
* Return: a pointer to a new &struct btrfs_fs_devices on success;
* ERR_PTR() on error. Returned struct is not linked onto any lists and
* can be destroyed with kfree() right away.
*/
static struct btrfs_fs_devices *alloc_fs_devices(const u8 *fsid)
{
struct btrfs_fs_devices *fs_devs;
fs_devs = __alloc_fs_devices();
if (IS_ERR(fs_devs))
return fs_devs;
if (fsid) if (fsid)
memcpy(fs_devs->fsid, fsid, BTRFS_FSID_SIZE); memcpy(fs_devs->fsid, fsid, BTRFS_FSID_SIZE);
else
generate_random_uuid(fs_devs->fsid);
return fs_devs; return fs_devs;
} }
...@@ -2197,7 +2182,7 @@ static int btrfs_prepare_sprout(struct btrfs_fs_info *fs_info) ...@@ -2197,7 +2182,7 @@ static int btrfs_prepare_sprout(struct btrfs_fs_info *fs_info)
if (!fs_devices->seeding) if (!fs_devices->seeding)
return -EINVAL; return -EINVAL;
seed_devices = __alloc_fs_devices(); seed_devices = alloc_fs_devices(NULL);
if (IS_ERR(seed_devices)) if (IS_ERR(seed_devices))
return PTR_ERR(seed_devices); return PTR_ERR(seed_devices);
...@@ -6522,6 +6507,7 @@ static struct btrfs_fs_devices *open_seed_devices(struct btrfs_fs_info *fs_info, ...@@ -6522,6 +6507,7 @@ static struct btrfs_fs_devices *open_seed_devices(struct btrfs_fs_info *fs_info,
int ret; int ret;
BUG_ON(!mutex_is_locked(&uuid_mutex)); BUG_ON(!mutex_is_locked(&uuid_mutex));
ASSERT(fsid);
fs_devices = fs_info->fs_devices->seed; fs_devices = fs_info->fs_devices->seed;
while (fs_devices) { while (fs_devices) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment