diff options
| author | Alex Elder <elder@inktank.com> | 2013-04-29 00:32:34 -0400 |
|---|---|---|
| committer | Sage Weil <sage@inktank.com> | 2013-05-02 00:20:05 -0400 |
| commit | 8ad42cd0c002fa278f6d0135e22fcb188e400a28 (patch) | |
| tree | 802d421f6ea5637541218df660bbd83b16e04b00 | |
| parent | 6fd48b3be9f6d195a970b92040d097b5b886a99b (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.c | 4 |
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 | ||
| 5018 | static void rbd_dev_remove_parent(struct rbd_device *rbd_dev) | 5016 | static 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); |
| 5081 | done: | 5081 | done: |
| 5082 | mutex_unlock(&ctl_mutex); | 5082 | mutex_unlock(&ctl_mutex); |
