Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b536f69a authored by Alex Elder's avatar Alex Elder Committed by Sage Weil
Browse files

rbd: set up devices only for mapped images

Stop setting up Linux devices during the image probe operation.
Instead, set up the devices as a separate step after the image
probe, in rbd_add().

A consequence of this is that only mapped images get devices
assigned to them, which is pretty sweet.

This resolves:
    http://tracker.ceph.com/issues/4774



Signed-off-by: default avatarAlex Elder <elder@inktank.com>
Reviewed-by: default avatarJosh Durgin <josh.durgin@inktank.com>
parent 8ad42cd0
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -4879,10 +4879,6 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev)
		goto err_out_snaps;

	ret = rbd_dev_probe_parent(rbd_dev);
	if (ret)
		goto err_out_snaps;

	ret = rbd_dev_device_setup(rbd_dev);
	if (!ret)
		return 0;

@@ -4964,9 +4960,12 @@ static ssize_t rbd_add(struct bus_type *bus,
	if (rc < 0)
		goto err_out_rbd_dev;

	rc = rbd_dev_device_setup(rbd_dev);
	if (!rc)
		return count;

	rbd_dev_image_release(rbd_dev);
err_out_rbd_dev:
	kfree(rbd_dev->header_name);
	rbd_dev_destroy(rbd_dev);
err_out_client:
	rbd_put_client(rbdc);
@@ -5029,7 +5028,6 @@ static void rbd_dev_remove_parent(struct rbd_device *rbd_dev)
			second = third;
		}
		rbd_assert(second);
		rbd_bus_del_dev(second);
		rbd_dev_image_release(second);
		first->parent = NULL;
		first->parent_overlap = 0;