btrfs: merge alloc_device helpers
The device allocation is split to two functions, but one just calls the other and they're very far in the file. Merge them together. Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
500a44c9b3
commit
fe4f46d40c
|
@ -430,44 +430,6 @@ void __exit btrfs_cleanup_fs_uuids(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Returns a pointer to a new btrfs_device on success; ERR_PTR() on error.
|
|
||||||
* Returned struct is not linked onto any lists and must be destroyed using
|
|
||||||
* btrfs_free_device.
|
|
||||||
*/
|
|
||||||
static struct btrfs_device *__alloc_device(struct btrfs_fs_info *fs_info)
|
|
||||||
{
|
|
||||||
struct btrfs_device *dev;
|
|
||||||
|
|
||||||
dev = kzalloc(sizeof(*dev), GFP_KERNEL);
|
|
||||||
if (!dev)
|
|
||||||
return ERR_PTR(-ENOMEM);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Preallocate a bio that's always going to be used for flushing device
|
|
||||||
* barriers and matches the device lifespan
|
|
||||||
*/
|
|
||||||
dev->flush_bio = bio_kmalloc(GFP_KERNEL, 0);
|
|
||||||
if (!dev->flush_bio) {
|
|
||||||
kfree(dev);
|
|
||||||
return ERR_PTR(-ENOMEM);
|
|
||||||
}
|
|
||||||
|
|
||||||
INIT_LIST_HEAD(&dev->dev_list);
|
|
||||||
INIT_LIST_HEAD(&dev->dev_alloc_list);
|
|
||||||
INIT_LIST_HEAD(&dev->post_commit_list);
|
|
||||||
|
|
||||||
atomic_set(&dev->reada_in_flight, 0);
|
|
||||||
atomic_set(&dev->dev_stats_ccnt, 0);
|
|
||||||
btrfs_device_data_ordered_init(dev);
|
|
||||||
INIT_RADIX_TREE(&dev->reada_zones, GFP_NOFS & ~__GFP_DIRECT_RECLAIM);
|
|
||||||
INIT_RADIX_TREE(&dev->reada_extents, GFP_NOFS & ~__GFP_DIRECT_RECLAIM);
|
|
||||||
extent_io_tree_init(fs_info, &dev->alloc_state,
|
|
||||||
IO_TREE_DEVICE_ALLOC_STATE, NULL);
|
|
||||||
|
|
||||||
return dev;
|
|
||||||
}
|
|
||||||
|
|
||||||
static noinline struct btrfs_fs_devices *find_fsid(
|
static noinline struct btrfs_fs_devices *find_fsid(
|
||||||
const u8 *fsid, const u8 *metadata_fsid)
|
const u8 *fsid, const u8 *metadata_fsid)
|
||||||
{
|
{
|
||||||
|
@ -6857,9 +6819,31 @@ struct btrfs_device *btrfs_alloc_device(struct btrfs_fs_info *fs_info,
|
||||||
if (WARN_ON(!devid && !fs_info))
|
if (WARN_ON(!devid && !fs_info))
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
dev = __alloc_device(fs_info);
|
dev = kzalloc(sizeof(*dev), GFP_KERNEL);
|
||||||
if (IS_ERR(dev))
|
if (!dev)
|
||||||
return dev;
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Preallocate a bio that's always going to be used for flushing device
|
||||||
|
* barriers and matches the device lifespan
|
||||||
|
*/
|
||||||
|
dev->flush_bio = bio_kmalloc(GFP_KERNEL, 0);
|
||||||
|
if (!dev->flush_bio) {
|
||||||
|
kfree(dev);
|
||||||
|
return ERR_PTR(-ENOMEM);
|
||||||
|
}
|
||||||
|
|
||||||
|
INIT_LIST_HEAD(&dev->dev_list);
|
||||||
|
INIT_LIST_HEAD(&dev->dev_alloc_list);
|
||||||
|
INIT_LIST_HEAD(&dev->post_commit_list);
|
||||||
|
|
||||||
|
atomic_set(&dev->reada_in_flight, 0);
|
||||||
|
atomic_set(&dev->dev_stats_ccnt, 0);
|
||||||
|
btrfs_device_data_ordered_init(dev);
|
||||||
|
INIT_RADIX_TREE(&dev->reada_zones, GFP_NOFS & ~__GFP_DIRECT_RECLAIM);
|
||||||
|
INIT_RADIX_TREE(&dev->reada_extents, GFP_NOFS & ~__GFP_DIRECT_RECLAIM);
|
||||||
|
extent_io_tree_init(fs_info, &dev->alloc_state,
|
||||||
|
IO_TREE_DEVICE_ALLOC_STATE, NULL);
|
||||||
|
|
||||||
if (devid)
|
if (devid)
|
||||||
tmp = *devid;
|
tmp = *devid;
|
||||||
|
|
Loading…
Reference in New Issue