rbd: don't print warning if not mapping a parent
The presence of the LAYERING bit in an rbd image's feature mask does not guarantee the image actually has a parent image. Currently that bit is set only when a clone (i.e., image with a parent) is created, but it is (currently) not cleared if that clone gets flattened back into a "normal" image. A "parent_id" query will leave the parent_spec for the image being mapped a null pointer, but will not return an error. Currently, whenever an image with the LAYERED feature gets mapped, a warning about the use of layered images gets printed. But we don't want to do this for a flattened image, so print the warning only if we find there is a parent spec after the probe. Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
This commit is contained in:
parent
29334ba49c
commit
c734b79655
|
@ -4567,13 +4567,14 @@ static int rbd_dev_v2_probe(struct rbd_device *rbd_dev)
|
|||
ret = rbd_dev_v2_parent_info(rbd_dev);
|
||||
if (ret)
|
||||
goto out_err;
|
||||
|
||||
/*
|
||||
* Don't print a warning for parent images. We can
|
||||
* tell this point because we won't know its pool
|
||||
* name yet (just its pool id).
|
||||
* Print a warning if this image has a parent.
|
||||
* Don't print it if the image now being probed
|
||||
* is itself a parent. We can tell at this point
|
||||
* because we won't know its pool name yet (just its
|
||||
* pool id).
|
||||
*/
|
||||
if (rbd_dev->spec->pool_name)
|
||||
if (rbd_dev->parent_spec && rbd_dev->spec->pool_name)
|
||||
rbd_warn(rbd_dev, "WARNING: kernel layering "
|
||||
"is EXPERIMENTAL!");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue