From 5bb823098ed0728cf9b88c654ba4528f3e42d695 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Tue, 17 Jul 2018 22:45:18 +0300 Subject: [PATCH] librbd: ensure exclusive lock acquired when removing sync point snapshots Fixes: http://tracker.ceph.com/issues/24898 Signed-off-by: Mykola Golub --- src/librbd/mirror/DisableRequest.cc | 7 +++---- src/test/librbd/mirror/test_mock_DisableRequest.cc | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/librbd/mirror/DisableRequest.cc b/src/librbd/mirror/DisableRequest.cc index 79ccaacc89b00..d9b303fd27c88 100644 --- a/src/librbd/mirror/DisableRequest.cc +++ b/src/librbd/mirror/DisableRequest.cc @@ -314,10 +314,9 @@ void DisableRequest::send_remove_snap(const std::string &client_id, &DisableRequest::handle_remove_snap, client_id); ctx = new FunctionContext([this, snap_namespace, snap_name, ctx](int r) { - RWLock::WLocker owner_locker(m_image_ctx->owner_lock); - m_image_ctx->operations->execute_snap_remove(snap_namespace, - snap_name.c_str(), - ctx); + m_image_ctx->operations->snap_remove(snap_namespace, + snap_name.c_str(), + ctx); }); m_image_ctx->op_work_queue->queue(ctx, 0); diff --git a/src/test/librbd/mirror/test_mock_DisableRequest.cc b/src/test/librbd/mirror/test_mock_DisableRequest.cc index 6ab1be748e66e..e7a60e842a017 100644 --- a/src/test/librbd/mirror/test_mock_DisableRequest.cc +++ b/src/test/librbd/mirror/test_mock_DisableRequest.cc @@ -195,7 +195,7 @@ public: void expect_snap_remove(MockTestImageCtx &mock_image_ctx, const std::string &snap_name, int r) { - EXPECT_CALL(*mock_image_ctx.operations, execute_snap_remove(_, StrEq(snap_name), _)) + EXPECT_CALL(*mock_image_ctx.operations, snap_remove(_, StrEq(snap_name), _)) .WillOnce(WithArg<2>(CompleteContext(r, mock_image_ctx.image_ctx->op_work_queue))); } -- 2.39.5