Skip to content

Commit

Permalink
rbd: don't print warning if not mapping a parent
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Alex Elder committed May 8, 2013
1 parent 29334ba commit c734b79
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions drivers/block/rbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -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!");
}
Expand Down

0 comments on commit c734b79

Please sign in to comment.