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 <[email protected]>
---
 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);

-- 
1.7.9.5

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

Reply via email to