]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: add flags param to Operations::execute_snap_create
authorMykola Golub <mgolub@suse.com>
Wed, 20 May 2020 15:32:02 +0000 (16:32 +0100)
committerMykola Golub <mgolub@suse.com>
Fri, 22 May 2020 08:20:00 +0000 (09:20 +0100)
and pass skip_object_map as a flag instead of a bool param.

Signed-off-by: Mykola Golub <mgolub@suse.com>
src/librbd/Operations.cc
src/librbd/Operations.h
src/librbd/Types.h
src/librbd/deep_copy/SnapshotCreateRequest.cc
src/librbd/journal/Replay.cc
src/librbd/operation/SnapshotCreateRequest.cc
src/librbd/operation/SnapshotCreateRequest.h
src/test/librbd/deep_copy/test_mock_SnapshotCreateRequest.cc
src/test/librbd/journal/test_mock_Replay.cc
src/test/librbd/mock/MockOperations.h
src/test/librbd/operation/test_mock_SnapshotCreateRequest.cc

index 43098d7764d65941e30181242d4a71c269b735aa..ee401bb61bed282fe44155ce339ba1be48f326db 100644 (file)
@@ -742,7 +742,7 @@ void Operations<I>::snap_create(const cls::rbd::SnapshotNamespace &snap_namespac
     m_image_ctx, "snap_create", exclusive_lock::OPERATION_REQUEST_TYPE_GENERAL,
     true,
     boost::bind(&Operations<I>::execute_snap_create, this, snap_namespace, snap_name,
-               _1, 0, false, boost::ref(*prog_ctx)),
+               _1, 0, 0, boost::ref(*prog_ctx)),
     boost::bind(&ImageWatcher<I>::notify_snap_create, m_image_ctx.image_watcher,
                 request_id, snap_namespace, snap_name, boost::ref(*prog_ctx),
                 _1),
@@ -755,7 +755,7 @@ void Operations<I>::execute_snap_create(const cls::rbd::SnapshotNamespace &snap_
                                        const std::string &snap_name,
                                         Context *on_finish,
                                         uint64_t journal_op_tid,
-                                        bool skip_object_map,
+                                        uint64_t flags,
                                         ProgressContext &prog_ctx) {
   ceph_assert(ceph_mutex_is_locked(m_image_ctx.owner_lock));
   ceph_assert(m_image_ctx.exclusive_lock == nullptr ||
@@ -781,7 +781,7 @@ void Operations<I>::execute_snap_create(const cls::rbd::SnapshotNamespace &snap_
   operation::SnapshotCreateRequest<I> *req =
     new operation::SnapshotCreateRequest<I>(
       m_image_ctx, new C_NotifyUpdate<I>(m_image_ctx, on_finish),
-      snap_namespace, snap_name, journal_op_tid, skip_object_map, prog_ctx);
+      snap_namespace, snap_name, journal_op_tid, flags, prog_ctx);
   req->send();
 }
 
index b1fbfe1dd66ad1581101f558fd2e51121c3b9af9..705d80273440f17c47ddc4216a92b5468f0a8351 100644 (file)
@@ -54,9 +54,8 @@ public:
   void snap_create(const cls::rbd::SnapshotNamespace &snap_namespace,
                   const std::string& snap_name, Context *on_finish);
   void execute_snap_create(const cls::rbd::SnapshotNamespace &snap_namespace,
-                          const std::string &snap_name,
-                          Context *on_finish,
-                           uint64_t journal_op_tid, bool skip_object_map,
+                          const std::string &snap_name, Context *on_finish,
+                           uint64_t journal_op_tid, uint64_t flags,
                            ProgressContext &prog_ctx);
 
   int snap_rollback(const cls::rbd::SnapshotNamespace& snap_namespace,
index 2e014b8b476439ffc72aa047fc801e94092f8ab0..42d605be7200b83b48a1f56595613adb0eab7fd8 100644 (file)
@@ -99,6 +99,10 @@ enum ImageReadOnlyFlag {
   IMAGE_READ_ONLY_FLAG_NON_PRIMARY = 1 << 1,
 };
 
+enum SnapCreateFlag {
+  SNAP_CREATE_FLAG_SKIP_OBJECT_MAP     = 1 << 0,
+};
+
 struct MigrationInfo {
   int64_t pool_id = -1;
   std::string pool_namespace;
index 2674da3dd31a88a95afca5bb51dda5affcd76440..ca22e5d1c03ad1da9434ab6824c15e25ccd2b742 100644 (file)
@@ -81,9 +81,9 @@ void SnapshotCreateRequest<I>::send_create_snap() {
       finish_op_ctx->complete(0);
     });
   std::shared_lock owner_locker{m_dst_image_ctx->owner_lock};
-  m_dst_image_ctx->operations->execute_snap_create(m_snap_namespace,
-                                                   m_snap_name.c_str(), ctx, 0U,
-                                                   true, m_prog_ctx);
+  m_dst_image_ctx->operations->execute_snap_create(
+      m_snap_namespace, m_snap_name.c_str(), ctx, 0U,
+      SNAP_CREATE_FLAG_SKIP_OBJECT_MAP, m_prog_ctx);
 }
 
 template <typename I>
index f5b30e57bb5f1a79e2b57adc3b41835984ea7cad..9efeeae0b114f065dbd6bcd411ec7a3ff66c9b13 100644 (file)
@@ -42,7 +42,7 @@ struct ExecuteOp : public Context {
     image_ctx.operations->execute_snap_create(event.snap_namespace,
                                              event.snap_name,
                                               on_op_complete,
-                                              event.op_tid, false,
+                                              event.op_tid, 0,
                                               no_op_progress_callback);
   }
 
index 7c5f14244d861576f152e7675b768600fe33c09c..38f489c408dcff7c33c279bf96996cf08799a598 100644 (file)
@@ -30,11 +30,12 @@ SnapshotCreateRequest<I>::SnapshotCreateRequest(I &image_ctx,
                                                const cls::rbd::SnapshotNamespace &snap_namespace,
                                                 const std::string &snap_name,
                                                 uint64_t journal_op_tid,
-                                                bool skip_object_map,
+                                                uint64_t flags,
                                                 ProgressContext &prog_ctx)
   : Request<I>(image_ctx, on_finish, journal_op_tid),
     m_snap_namespace(snap_namespace), m_snap_name(snap_name),
-    m_skip_object_map(skip_object_map), m_prog_ctx(prog_ctx) {
+    m_skip_object_map(flags & SNAP_CREATE_FLAG_SKIP_OBJECT_MAP),
+    m_prog_ctx(prog_ctx) {
 }
 
 template <typename I>
index 544c04165c885e500673105d7ac00d32cf536e32..9f53399a9fb98859a10bbfe11a6c9109c0560a9e 100644 (file)
@@ -71,7 +71,7 @@ public:
   SnapshotCreateRequest(ImageCtxT &image_ctx, Context *on_finish,
                         const cls::rbd::SnapshotNamespace &snap_namespace,
                         const std::string &snap_name, uint64_t journal_op_tid,
-                        bool skip_object_map, ProgressContext &prog_ctx);
+                        uint64_t flags, ProgressContext &prog_ctx);
 
 protected:
   void send_op() override;
index 17ed8b71cf144ef68e8efd3221c40f70e49c97f6..975aea937d86c4dddaf05e48b7666ac51cd14f85 100644 (file)
@@ -108,7 +108,8 @@ public:
   void expect_snap_create(librbd::MockTestImageCtx &mock_image_ctx,
                           const std::string &snap_name, uint64_t snap_id, int r) {
     EXPECT_CALL(*mock_image_ctx.operations,
-                execute_snap_create(_, StrEq(snap_name), _, 0, true, _))
+                execute_snap_create(_, StrEq(snap_name), _, 0,
+                                    SNAP_CREATE_FLAG_SKIP_OBJECT_MAP, _))
                   .WillOnce(DoAll(InvokeWithoutArgs([&mock_image_ctx, snap_id, snap_name]() {
                                     inject_snap(mock_image_ctx, snap_id, snap_name);
                                   }),
index 37a5ce7536fb9c632be9357e93c49b1d97dc083c..c0c77517c53803fc0e5f52b2c6be038fe5432135 100644 (file)
@@ -219,7 +219,7 @@ public:
                           Context **on_finish, const char *snap_name,
                           uint64_t op_tid) {
     EXPECT_CALL(*mock_image_ctx.operations, execute_snap_create(_, StrEq(snap_name), _,
-                                                                op_tid, false, _))
+                                                                op_tid, 0, _))
                   .WillOnce(DoAll(SaveArg<2>(on_finish),
                                   NotifyInvoke(&m_invoke_lock, &m_invoke_cond)));
   }
index ca30e55defe4c8cf7c74f178874ef713491eae80..93fd2fa4502791e1bce56ec8396d6bd3c05eb38e 100644 (file)
@@ -32,7 +32,7 @@ struct MockOperations {
                                         const std::string &snap_name,
                                          Context *on_finish,
                                          uint64_t journal_op_tid,
-                                         bool skip_object_map,
+                                         uint64_t flags,
                                          ProgressContext &prog_ctx));
   MOCK_METHOD3(snap_remove, void(const cls::rbd::SnapshotNamespace &snap_namespace,
                                 const std::string &snap_name,
index c80f7627e6b8b09c750574591639316374bc41fe..cba2d5633e0c2a8c0f011957c546362f875c0732 100644 (file)
@@ -188,7 +188,7 @@ TEST_F(TestMockOperationSnapshotCreateRequest, Success) {
   librbd::NoOpProgressContext prog_ctx;
   MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
     mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
-    "snap1", 0, false, prog_ctx);
+    "snap1", 0, 0, prog_ctx);
   {
     std::shared_lock owner_locker{mock_image_ctx.owner_lock};
     req->send();
@@ -211,7 +211,7 @@ TEST_F(TestMockOperationSnapshotCreateRequest, NotifyQuiesceError) {
   librbd::NoOpProgressContext prog_ctx;
   MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
     mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
-    "snap1", 0, false, prog_ctx);
+    "snap1", 0, 0, prog_ctx);
   {
     std::shared_lock owner_locker{mock_image_ctx.owner_lock};
     req->send();
@@ -244,7 +244,7 @@ TEST_F(TestMockOperationSnapshotCreateRequest, AllocateSnapIdError) {
   librbd::NoOpProgressContext prog_ctx;
   MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
     mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
-    "snap1", 0, false, prog_ctx);
+    "snap1", 0, 0, prog_ctx);
   {
     std::shared_lock owner_locker{mock_image_ctx.owner_lock};
     req->send();
@@ -286,7 +286,7 @@ TEST_F(TestMockOperationSnapshotCreateRequest, CreateSnapStale) {
   librbd::NoOpProgressContext prog_ctx;
   MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
     mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
-    "snap1", 0, false, prog_ctx);
+    "snap1", 0, 0, prog_ctx);
   {
     std::shared_lock owner_locker{mock_image_ctx.owner_lock};
     req->send();
@@ -320,7 +320,7 @@ TEST_F(TestMockOperationSnapshotCreateRequest, CreateSnapError) {
   librbd::NoOpProgressContext prog_ctx;
   MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
     mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
-    "snap1", 0, false, prog_ctx);
+    "snap1", 0, 0, prog_ctx);
   {
     std::shared_lock owner_locker{mock_image_ctx.owner_lock};
     req->send();
@@ -354,7 +354,7 @@ TEST_F(TestMockOperationSnapshotCreateRequest, ReleaseSnapIdError) {
   librbd::NoOpProgressContext prog_ctx;
   MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
     mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
-    "snap1", 0, false, prog_ctx);
+    "snap1", 0, 0, prog_ctx);
   {
     std::shared_lock owner_locker{mock_image_ctx.owner_lock};
     req->send();
@@ -394,7 +394,7 @@ TEST_F(TestMockOperationSnapshotCreateRequest, SkipObjectMap) {
   librbd::NoOpProgressContext prog_ctx;
   MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
     mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
-    "snap1", 0, true, prog_ctx);
+    "snap1", 0, SNAP_CREATE_FLAG_SKIP_OBJECT_MAP, prog_ctx);
   {
     std::shared_lock owner_locker{mock_image_ctx.owner_lock};
     req->send();
@@ -441,7 +441,7 @@ TEST_F(TestMockOperationSnapshotCreateRequest, SetImageState) {
     mock_image_ctx, &cond_ctx,
     cls::rbd::MirrorSnapshotNamespace{
       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {}, "", CEPH_NOSNAP},
-    "snap1", 0, false, prog_ctx);
+    "snap1", 0, 0, prog_ctx);
   {
     std::shared_lock owner_locker{mock_image_ctx.owner_lock};
     req->send();