Commit 48dae9cf authored by David Sterba's avatar David Sterba

btrfs: introduce free_device helper

A helper to free a device and all it's dynamically allocated members,
like the rcu_string name or flush_bio. This is going to replace all
open coded places.
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent f06c5965
...@@ -180,6 +180,13 @@ static struct btrfs_fs_devices *alloc_fs_devices(const u8 *fsid) ...@@ -180,6 +180,13 @@ static struct btrfs_fs_devices *alloc_fs_devices(const u8 *fsid)
return fs_devs; return fs_devs;
} }
static void free_device(struct btrfs_device *device)
{
rcu_string_free(device->name);
bio_put(device->flush_bio);
kfree(device);
}
static void free_fs_devices(struct btrfs_fs_devices *fs_devices) static void free_fs_devices(struct btrfs_fs_devices *fs_devices)
{ {
struct btrfs_device *device; struct btrfs_device *device;
...@@ -220,6 +227,11 @@ void btrfs_cleanup_fs_uuids(void) ...@@ -220,6 +227,11 @@ void 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
* free_device.
*/
static struct btrfs_device *__alloc_device(void) static struct btrfs_device *__alloc_device(void)
{ {
struct btrfs_device *dev; struct btrfs_device *dev;
...@@ -6257,8 +6269,8 @@ static struct btrfs_device *add_missing_dev(struct btrfs_fs_devices *fs_devices, ...@@ -6257,8 +6269,8 @@ static struct btrfs_device *add_missing_dev(struct btrfs_fs_devices *fs_devices,
* is generated. * is generated.
* *
* Return: a pointer to a new &struct btrfs_device on success; ERR_PTR() * Return: a pointer to a new &struct btrfs_device on success; ERR_PTR()
* on error. Returned struct is not linked onto any lists and can be * on error. Returned struct is not linked onto any lists and must be
* destroyed with kfree() right away. * destroyed with free_device.
*/ */
struct btrfs_device *btrfs_alloc_device(struct btrfs_fs_info *fs_info, struct btrfs_device *btrfs_alloc_device(struct btrfs_fs_info *fs_info,
const u64 *devid, const u64 *devid,
......
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