@@ -4982,12 +4982,6 @@ static void rbd_dev_release(struct device *dev)
module_put(THIS_MODULE);
}
-static void __rbd_remove(struct rbd_device *rbd_dev)
-{
- rbd_remove_all_snaps(rbd_dev);
- rbd_bus_del_dev(rbd_dev);
-}
-
static void rbd_dev_remove_parent(struct rbd_device *rbd_dev)
{
while (rbd_dev->parent_spec) {
@@ -5003,7 +4997,8 @@ static void rbd_dev_remove_parent(struct
rbd_device *rbd_dev)
first = second;
second = third;
}
- __rbd_remove(second);
+ rbd_remove_all_snaps(second);
+ rbd_bus_del_dev(second);
rbd_spec_put(first->parent_spec);
first->parent_spec = NULL;
The function __rbd_remove() is used in two spots, and it's fairly simple. It combines cleanup of part of the ceph-side state as well as cleaning up the Linux-side state. Just open code it in the two callers and eliminate the function. Signed-off-by: Alex Elder <elder@inktank.com> --- drivers/block/rbd.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) first->parent_overlap = 0; @@ -5049,8 +5044,8 @@ static ssize_t rbd_remove(struct bus_type *bus, if (rbd_dev->parent) rbd_dev_remove_parent(rbd_dev); - __rbd_remove(rbd_dev); - + rbd_remove_all_snaps(rbd_dev); + rbd_bus_del_dev(rbd_dev); done: mutex_unlock(&ctl_mutex);