aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Elder <elder@inktank.com>2013-04-29 00:32:34 -0400
committerSage Weil <sage@inktank.com>2013-05-02 00:20:05 -0400
commit8ad42cd0c002fa278f6d0135e22fcb188e400a28 (patch)
tree802d421f6ea5637541218df660bbd83b16e04b00
parent6fd48b3be9f6d195a970b92040d097b5b886a99b (diff)
rbd: don't have device release destroy rbd_dev
Currently an rbd_device structure gets destroyed from the release routine for the device embedded within it. Stop doing that, instead calling rbd_dev_image_release() right after rbd_bus_del_dev() wherever the latter is called. Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
-rw-r--r--drivers/block/rbd.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 408e29f102c8..57e56617e45f 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -5011,8 +5011,6 @@ static void rbd_dev_device_release(struct device *dev)
5011 rbd_dev->major = 0; 5011 rbd_dev->major = 0;
5012 rbd_dev_id_put(rbd_dev); 5012 rbd_dev_id_put(rbd_dev);
5013 rbd_dev_mapping_clear(rbd_dev); 5013 rbd_dev_mapping_clear(rbd_dev);
5014
5015 rbd_dev_image_release(rbd_dev);
5016} 5014}
5017 5015
5018static void rbd_dev_remove_parent(struct rbd_device *rbd_dev) 5016static void rbd_dev_remove_parent(struct rbd_device *rbd_dev)
@@ -5032,6 +5030,7 @@ static void rbd_dev_remove_parent(struct rbd_device *rbd_dev)
5032 } 5030 }
5033 rbd_assert(second); 5031 rbd_assert(second);
5034 rbd_bus_del_dev(second); 5032 rbd_bus_del_dev(second);
5033 rbd_dev_image_release(second);
5035 first->parent = NULL; 5034 first->parent = NULL;
5036 first->parent_overlap = 0; 5035 first->parent_overlap = 0;
5037 5036
@@ -5077,6 +5076,7 @@ static ssize_t rbd_remove(struct bus_type *bus,
5077 goto done; 5076 goto done;
5078 ret = count; 5077 ret = count;
5079 rbd_bus_del_dev(rbd_dev); 5078 rbd_bus_del_dev(rbd_dev);
5079 rbd_dev_image_release(rbd_dev);
5080 module_put(THIS_MODULE); 5080 module_put(THIS_MODULE);
5081done: 5081done:
5082 mutex_unlock(&ctl_mutex); 5082 mutex_unlock(&ctl_mutex);