diff mbox

[3/4] rbd: don't register snapshots in bus_add_dev()

Message ID 504A09B4.3080909@inktank.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alex Elder Sept. 7, 2012, 2:50 p.m. UTC
When rbd_bus_add_dev() is called (one spot--in rbd_add()), the rbd
image header has not even been read yet.  This means that the list
of snapshots will be empty at the time of the call.  As a result,
there is no need for the code that calls rbd_register_snap_dev()
for each entry in that list--so get rid of it.

Once the header has been read (just after returning), a call will
be made to rbd_dev_snap_devs_update(), which will then find every
snapshot in the context to be new and will therefore call
rbd_register_snap_dev() via __rbd_add_snap_dev() accomplishing
the same thing.

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

Comments

Josh Durgin Sept. 10, 2012, 10:21 p.m. UTC | #1
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>

On 09/07/2012 07:50 AM, Alex Elder wrote:
> When rbd_bus_add_dev() is called (one spot--in rbd_add()), the rbd
> image header has not even been read yet.  This means that the list
> of snapshots will be empty at the time of the call.  As a result,
> there is no need for the code that calls rbd_register_snap_dev()
> for each entry in that list--so get rid of it.
>
> Once the header has been read (just after returning), a call will
> be made to rbd_dev_snap_devs_update(), which will then find every
> snapshot in the context to be new and will therefore call
> rbd_register_snap_dev() via __rbd_add_snap_dev() accomplishing
> the same thing.
>
> Signed-off-by: Alex Elder <elder@inktank.com>
> ---
>   drivers/block/rbd.c |   14 +++-----------
>   1 file changed, 3 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index 6af09f1..e922989 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -2244,29 +2244,21 @@ static int rbd_dev_snap_devs_update(struct
> rbd_device *rbd_dev)
>
>   static int rbd_bus_add_dev(struct rbd_device *rbd_dev)
>   {
> -	int ret;
>   	struct device *dev;
> -	struct rbd_snap *snap;
> +	int ret;
>
>   	mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);
> -	dev = &rbd_dev->dev;
>
> +	dev = &rbd_dev->dev;
>   	dev->bus = &rbd_bus_type;
>   	dev->type = &rbd_device_type;
>   	dev->parent = &rbd_root_dev;
>   	dev->release = rbd_dev_release;
>   	dev_set_name(dev, "%d", rbd_dev->dev_id);
>   	ret = device_register(dev);
> -	if (ret < 0)
> -		goto out;
>
> -	list_for_each_entry(snap, &rbd_dev->snaps, node) {
> -		ret = rbd_register_snap_dev(snap, &rbd_dev->dev);
> -		if (ret < 0)
> -			break;
> -	}
> -out:
>   	mutex_unlock(&ctl_mutex);
> +
>   	return ret;
>   }
>

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 6af09f1..e922989 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -2244,29 +2244,21 @@  static int rbd_dev_snap_devs_update(struct
rbd_device *rbd_dev)

 static int rbd_bus_add_dev(struct rbd_device *rbd_dev)
 {
-	int ret;
 	struct device *dev;
-	struct rbd_snap *snap;
+	int ret;

 	mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);
-	dev = &rbd_dev->dev;

+	dev = &rbd_dev->dev;
 	dev->bus = &rbd_bus_type;
 	dev->type = &rbd_device_type;
 	dev->parent = &rbd_root_dev;
 	dev->release = rbd_dev_release;
 	dev_set_name(dev, "%d", rbd_dev->dev_id);
 	ret = device_register(dev);
-	if (ret < 0)
-		goto out;

-	list_for_each_entry(snap, &rbd_dev->snaps, node) {
-		ret = rbd_register_snap_dev(snap, &rbd_dev->dev);
-		if (ret < 0)
-			break;
-	}
-out:
 	mutex_unlock(&ctl_mutex);
+
 	return ret;
 }