Message ID | 518E8203.6050308@inktank.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Reviewed-by: Josh Durgin <josh.durgin@inktank.com> On 05/11/2013 10:38 AM, Alex Elder wrote: > An rbd clone image that has an overlap with its parent of 0 is > effectively not a layered image at all. Detect this case and treat > such an image as non-layered. Issue a warning to be sure the user > knows what's going on. > > This resolves: > http://tracker.ceph.com/issues/5028 > > Signed-off-by: Alex Elder <elder@inktank.com> > --- > drivers/block/rbd.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c > index b9221a0..3a8135f 100644 > --- a/drivers/block/rbd.c > +++ b/drivers/block/rbd.c > @@ -3655,9 +3655,13 @@ static int rbd_dev_v2_parent_info(struct > rbd_device *rbd_dev) > ceph_decode_64_safe(&p, end, parent_spec->snap_id, out_err); > ceph_decode_64_safe(&p, end, overlap, out_err); > > - rbd_dev->parent_overlap = overlap; > - rbd_dev->parent_spec = parent_spec; > - parent_spec = NULL; /* rbd_dev now owns this */ > + if (overlap) { > + rbd_dev->parent_spec = parent_spec; > + parent_spec = NULL; /* rbd_dev now owns this */ > + rbd_dev->parent_overlap = overlap; > + } else { > + rbd_warn(rbd_dev, "ignoring parent of clone with overlap 0\n"); > + } > out: > ret = 0; > out_err: > -- 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 --git a/drivers/block/rbd.c b/drivers/block/rbd.c index b9221a0..3a8135f 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -3655,9 +3655,13 @@ static int rbd_dev_v2_parent_info(struct rbd_device *rbd_dev) ceph_decode_64_safe(&p, end, parent_spec->snap_id, out_err); ceph_decode_64_safe(&p, end, overlap, out_err); - rbd_dev->parent_overlap = overlap; - rbd_dev->parent_spec = parent_spec; - parent_spec = NULL; /* rbd_dev now owns this */ + if (overlap) { + rbd_dev->parent_spec = parent_spec; + parent_spec = NULL; /* rbd_dev now owns this */ + rbd_dev->parent_overlap = overlap; + } else { + rbd_warn(rbd_dev, "ignoring parent of clone with overlap 0\n"); + } out: ret = 0;
An rbd clone image that has an overlap with its parent of 0 is effectively not a layered image at all. Detect this case and treat such an image as non-layered. Issue a warning to be sure the user knows what's going on. This resolves: http://tracker.ceph.com/issues/5028 Signed-off-by: Alex Elder <elder@inktank.com> --- drivers/block/rbd.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) out_err: