From: Jason Dillaman Date: Thu, 19 Mar 2020 14:57:03 +0000 (-0400) Subject: librbd: request exclusive lock when moving to trash X-Git-Tag: v15.2.0~6^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ae726336d274ec9d5e02ecd05ddeab2750ff8959;p=ceph.git librbd: request exclusive lock when moving to trash Even if the image is in-use, moving it to the trash does not remove any data. This also solves a race between snapshot-based mirroring shutting down and being able to move a mirrored image to the trash. Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/api/Trash.cc b/src/librbd/api/Trash.cc index 7d615050a254..720be6f55aa9 100644 --- a/src/librbd/api/Trash.cc +++ b/src/librbd/api/Trash.cc @@ -158,7 +158,7 @@ int Trash::move(librados::IoCtx &io_ctx, rbd_trash_image_source_t source, ictx->exclusive_lock->block_requests(0); r = ictx->operations->prepare_image_update( - exclusive_lock::OPERATION_REQUEST_TYPE_GENERAL, false); + exclusive_lock::OPERATION_REQUEST_TYPE_GENERAL, true); if (r < 0) { lderr(cct) << "cannot obtain exclusive lock - not removing" << dendl; ictx->owner_lock.unlock_shared();