mirror of
https://github.com/torvalds/linux.git
synced 2024-12-03 01:21:28 +00:00
rbd: ignore zero-overlap parent
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> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
This commit is contained in:
parent
b91f09f17b
commit
70cf49cfc7
@ -3665,9 +3665,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, parent_spec->snap_id, out_err);
|
||||||
ceph_decode_64_safe(&p, end, overlap, out_err);
|
ceph_decode_64_safe(&p, end, overlap, out_err);
|
||||||
|
|
||||||
rbd_dev->parent_overlap = overlap;
|
if (overlap) {
|
||||||
rbd_dev->parent_spec = parent_spec;
|
rbd_dev->parent_spec = parent_spec;
|
||||||
parent_spec = NULL; /* rbd_dev now owns this */
|
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:
|
out:
|
||||||
ret = 0;
|
ret = 0;
|
||||||
out_err:
|
out_err:
|
||||||
|
Loading…
Reference in New Issue
Block a user