diff mbox

[5/6] rbd: remove parent devices on probe error

Message ID 517BC69F.6020906@inktank.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alex Elder April 27, 2013, 12:37 p.m. UTC
When an error occurs while finishing probing a device it is assumed
that parent devices get cleaned up when deleting a device.  They
don't.  Add a call to clean them up.  Note that this means the
parent spec will already be cleaned up so it doesn't have to be
in one of the rbd_add() error paths.

Signed-off-by: Alex Elder <elder@inktank.com>
---
 drivers/block/rbd.c |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

 	return ret;
@@ -4922,7 +4922,6 @@ static ssize_t rbd_add(struct bus_type *bus,

 	return count;
 err_out_rbd_dev:
-	rbd_spec_put(rbd_dev->parent_spec);
 	kfree(rbd_dev->header_name);
 	rbd_dev_destroy(rbd_dev);
 err_out_client:
diff mbox

Patch

diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 99d231b..c81b319 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -4806,8 +4806,8 @@  static int rbd_dev_probe_finish(struct rbd_device
*rbd_dev)
 	return ret;

 err_out_bus:
-	/* this will also clean up rest of rbd_dev stuff */
-
+	if (rbd_dev->parent)
+		rbd_dev_remove_parent(rbd_dev);
 	rbd_bus_del_dev(rbd_dev);