From: Jason Dillaman Date: Mon, 24 Aug 2015 14:58:52 +0000 (-0400) Subject: librbd: error closing image while set to invalid snapshot X-Git-Tag: v9.1.0~306^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F5647%2Fhead;p=ceph.git librbd: error closing image while set to invalid snapshot With cache disabled, closing the image will result in a flush which might result in the image being refreshed. If this happens while the image is set to an invalid snapshot, an error will be returned while closing the image. Fixes: #12765 Backport: infernalis Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index e1bccdc516dd..8b9f3b9dc457 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -2140,11 +2140,12 @@ reprotect_and_return_err: if (ictx->parent) { uint64_t overlap; r = ictx->get_parent_overlap(ictx->snap_id, &overlap); - if (r < 0) + if (r < 0 && r != -ENOENT) { return r; - if (!overlap || + } + if (r == -ENOENT || overlap == 0 || ictx->parent->md_ctx.get_id() != - ictx->get_parent_pool_id(ictx->snap_id) || + ictx->get_parent_pool_id(ictx->snap_id) || ictx->parent->id != ictx->get_parent_image_id(ictx->snap_id) || ictx->parent->snap_id != ictx->get_parent_snap_id(ictx->snap_id)) { ictx->clear_nonexistence_cache();