diff mbox

[1/3] rbd: don't use index in __rbd_add_snap_dev()

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

Commit Message

Alex Elder Sept. 7, 2012, 7:24 p.m. UTC
Pass the snapshot id and snapshot size rather than an index
to __rbd_add_snap_dev() to specify values for a new snapshot.

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

 	int ret;
@@ -2041,12 +2042,12 @@ static struct rbd_snap
*__rbd_add_snap_dev(struct rbd_device *rbd_dev,
 		return ERR_PTR(-ENOMEM);

 	ret = -ENOMEM;
-	snap->name = kstrdup(name, GFP_KERNEL);
+	snap->name = kstrdup(snap_name, GFP_KERNEL);
 	if (!snap->name)
 		goto err;

-	snap->size = rbd_dev->header.snap_sizes[i];
-	snap->id = rbd_dev->header.snapc->snaps[i];
+	snap->id = snap_id;
+	snap->size = snap_size;

 	return snap;

@@ -2111,12 +2112,13 @@ static int rbd_dev_snaps_update(struct
rbd_device *rbd_dev)
 		dout("entry %u: snap_id = %llu\n", (unsigned int) snap_count,
 			(unsigned long long) snap_id);
 		if (!snap || (snap_id != CEPH_NOSNAP && snap->id < snap_id)) {
+			struct rbd_image_header	*header = &rbd_dev->header;
 			struct rbd_snap *new_snap;

 			/* We haven't seen this snapshot before */

-			new_snap = __rbd_add_snap_dev(rbd_dev, index,
-							snap_name);
+			new_snap = __rbd_add_snap_dev(rbd_dev, snap_name,
+					snap_id, header->snap_sizes[index]);
 			if (IS_ERR(new_snap)) {
 				int err = PTR_ERR(new_snap);

Comments

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

On 09/07/2012 12:24 PM, Alex Elder wrote:
> Pass the snapshot id and snapshot size rather than an index
> to __rbd_add_snap_dev() to specify values for a new snapshot.
>
> Signed-off-by: Alex Elder <elder@inktank.com>
> ---
>   drivers/block/rbd.c |   14 ++++++++------
>   1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index d73edb1..2b048e3 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -2031,7 +2031,8 @@ static int rbd_register_snap_dev(struct rbd_snap
> *snap,
>   }
>
>   static struct rbd_snap *__rbd_add_snap_dev(struct rbd_device *rbd_dev,
> -					      int i, const char *name)
> +						const char *snap_name,
> +						u64 snap_id, u64 snap_size)
>   {
>   	struct rbd_snap *snap;
>   	int ret;
> @@ -2041,12 +2042,12 @@ static struct rbd_snap
> *__rbd_add_snap_dev(struct rbd_device *rbd_dev,
>   		return ERR_PTR(-ENOMEM);
>
>   	ret = -ENOMEM;
> -	snap->name = kstrdup(name, GFP_KERNEL);
> +	snap->name = kstrdup(snap_name, GFP_KERNEL);
>   	if (!snap->name)
>   		goto err;
>
> -	snap->size = rbd_dev->header.snap_sizes[i];
> -	snap->id = rbd_dev->header.snapc->snaps[i];
> +	snap->id = snap_id;
> +	snap->size = snap_size;
>
>   	return snap;
>
> @@ -2111,12 +2112,13 @@ static int rbd_dev_snaps_update(struct
> rbd_device *rbd_dev)
>   		dout("entry %u: snap_id = %llu\n", (unsigned int) snap_count,
>   			(unsigned long long) snap_id);
>   		if (!snap || (snap_id != CEPH_NOSNAP && snap->id < snap_id)) {
> +			struct rbd_image_header	*header = &rbd_dev->header;
>   			struct rbd_snap *new_snap;
>
>   			/* We haven't seen this snapshot before */
>
> -			new_snap = __rbd_add_snap_dev(rbd_dev, index,
> -							snap_name);
> +			new_snap = __rbd_add_snap_dev(rbd_dev, snap_name,
> +					snap_id, header->snap_sizes[index]);
>   			if (IS_ERR(new_snap)) {
>   				int err = PTR_ERR(new_snap);
>

--
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 d73edb1..2b048e3 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -2031,7 +2031,8 @@  static int rbd_register_snap_dev(struct rbd_snap
*snap,
 }

 static struct rbd_snap *__rbd_add_snap_dev(struct rbd_device *rbd_dev,
-					      int i, const char *name)
+						const char *snap_name,
+						u64 snap_id, u64 snap_size)
 {
 	struct rbd_snap *snap;