]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
objclass: change objclass exec read calls to write ones where needed
authorYehuda Sadeh <ysadehwe@ibm.com>
Thu, 9 May 2024 13:42:50 +0000 (09:42 -0400)
committerCasey Bodley <cbodley@redhat.com>
Thu, 12 Dec 2024 22:11:08 +0000 (17:11 -0500)
Many of the exec calls were using a read version of the API while they
were calling a write objclass method. This modifies the calls to use
the write API.

Fixes: https://tracker.ceph.com/issues/65889
Signed-off-by: Yehuda Sadeh <ysadehwe@ibm.com>
src/cls/lua/cls_lua_client.cc
src/cls/numops/cls_numops_client.cc
src/cls/otp/cls_otp_client.cc
src/cls/rbd/cls_rbd_client.cc
src/cls/rgw/cls_rgw_client.cc
src/test/cls_lua/test_cls_lua.cc
src/test/cls_sdk/test_cls_sdk.cc

index 0e6544a269370f621f68ec05e077adddf9c77209..b19cfa9c7b331cc8e661bb3df5082dbc331e9026 100644 (file)
@@ -29,6 +29,9 @@ namespace cls_lua_client {
     bufferlist inbl;
     encode(op, inbl);
 
-    return ioctx.exec(oid, "lua", "eval_bufferlist", inbl, output);
+    librados::ObjectWriteOperation wop;
+    int rval;
+    wop.exec("lua", "eval_bufferlist", inbl, &output, &rval);
+    return ioctx.operate(oid, &wop);
   }
 }
index fa1a69f2e22420c3cd0a3c0fa243befd744a1d4a..a111a9b655bf62902cd70ab231a8a92ca87fd79b 100644 (file)
@@ -28,7 +28,7 @@ namespace rados {
               const std::string& key,
               double value_to_add)
       {
-        bufferlist in, out;
+        bufferlist in;
         encode(key, in);
 
         std::stringstream stream;
@@ -36,7 +36,10 @@ namespace rados {
 
         encode(stream.str(), in);
 
-        return ioctx->exec(oid, "numops", "add", in, out);
+        librados::ObjectWriteOperation op;
+        op.exec("numops", "add", in);
+
+        return ioctx->operate(oid, &op);
       }
 
       int sub(librados::IoCtx *ioctx,
@@ -60,7 +63,10 @@ namespace rados {
 
         encode(stream.str(), in);
 
-        return ioctx->exec(oid, "numops", "mul", in, out);
+        librados::ObjectWriteOperation op;
+        op.exec("numops", "mul", in);
+
+        return ioctx->operate(oid, &op);
       }
 
       int div(librados::IoCtx *ioctx,
index 0ba55571f8d1dae9dd2fdd8687edfcd8973e4df6..2462a0dc69db1794eac6eb2ebf3eba2df5e10ab3 100644 (file)
@@ -68,7 +68,9 @@ namespace rados {
         bufferlist in;
         bufferlist out;
         encode(op, in);
-        int r = ioctx.exec(oid, "otp", "otp_check", in, out);
+        librados::ObjectWriteOperation wop;
+        wop.exec("otp", "otp_check", in);
+        int r = ioctx.operate(oid, &wop);
         if (r < 0) {
           return r;
         }
index fca2d0ea18b7a07e21f552b95d0c38fa0a28039d..bc98e427cb0c0fe2c22a174e06342221493de33c 100644 (file)
@@ -1873,9 +1873,9 @@ int mirror_mode_set(librados::IoCtx *ioctx,
   bufferlist in_bl;
   encode(static_cast<uint32_t>(mirror_mode), in_bl);
 
-  bufferlist out_bl;
-  int r = ioctx->exec(RBD_MIRRORING, "rbd", "mirror_mode_set", in_bl,
-                      out_bl);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "mirror_mode_set", in_bl);
+  int r = ioctx->operate(RBD_MIRRORING, &op);
   if (r < 0) {
     return r;
   }
@@ -2002,9 +2002,9 @@ int mirror_peer_remove(librados::IoCtx *ioctx,
   bufferlist in_bl;
   encode(uuid, in_bl);
 
-  bufferlist out_bl;
-  int r = ioctx->exec(RBD_MIRRORING, "rbd", "mirror_peer_remove", in_bl,
-                      out_bl);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "mirror_peer_remove", in_bl);
+  int r = ioctx->operate(RBD_MIRRORING, &op);
   if (r < 0) {
     return r;
   }
@@ -2018,9 +2018,9 @@ int mirror_peer_set_client(librados::IoCtx *ioctx,
   encode(uuid, in_bl);
   encode(client_name, in_bl);
 
-  bufferlist out_bl;
-  int r = ioctx->exec(RBD_MIRRORING, "rbd", "mirror_peer_set_client",
-                      in_bl, out_bl);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "mirror_peer_set_client", in_bl);
+  int r = ioctx->operate(RBD_MIRRORING, &op);
   if (r < 0) {
     return r;
   }
@@ -2034,9 +2034,9 @@ int mirror_peer_set_cluster(librados::IoCtx *ioctx,
   encode(uuid, in_bl);
   encode(cluster_name, in_bl);
 
-  bufferlist out_bl;
-  int r = ioctx->exec(RBD_MIRRORING, "rbd", "mirror_peer_set_cluster",
-                      in_bl, out_bl);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "mirror_peer_set_cluster", in_bl);
+  int r = ioctx->operate(RBD_MIRRORING, &op);
   if (r < 0) {
     return r;
   }
@@ -2050,9 +2050,9 @@ int mirror_peer_set_direction(
   encode(uuid, in_bl);
   encode(static_cast<uint8_t>(mirror_peer_direction), in_bl);
 
-  bufferlist out_bl;
-  int r = ioctx->exec(RBD_MIRRORING, "rbd", "mirror_peer_set_direction",
-                      in_bl, out_bl);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "mirror_peer_set_direction", in_bl);
+  int r = ioctx->operate(RBD_MIRRORING, &op);
   if (r < 0) {
     return r;
   }
@@ -2630,39 +2630,47 @@ int group_dir_list(librados::IoCtx *ioctx, const std::string &oid,
 int group_dir_add(librados::IoCtx *ioctx, const std::string &oid,
                   const std::string &name, const std::string &id)
 {
-  bufferlist in, out;
+  bufferlist in;
   encode(name, in);
   encode(id, in);
-  return ioctx->exec(oid, "rbd", "group_dir_add", in, out);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "group_dir_add", in);
+  return ioctx->operate(oid, &op);
 }
 
 int group_dir_rename(librados::IoCtx *ioctx, const std::string &oid,
                      const std::string &src, const std::string &dest,
                      const std::string &id)
 {
-  bufferlist in, out;
+  bufferlist in;
   encode(src, in);
   encode(dest, in);
   encode(id, in);
-  return ioctx->exec(oid, "rbd", "group_dir_rename", in, out);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "group_dir_rename", in);
+  return ioctx->operate(oid, &op);
 }
 
 int group_dir_remove(librados::IoCtx *ioctx, const std::string &oid,
                      const std::string &name, const std::string &id)
 {
-  bufferlist in, out;
+  bufferlist in;
   encode(name, in);
   encode(id, in);
-  return ioctx->exec(oid, "rbd", "group_dir_remove", in, out);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "group_dir_remove", in);
+  return ioctx->operate(oid, &op);
 }
 
 int group_image_remove(librados::IoCtx *ioctx, const std::string &oid,
                        const cls::rbd::GroupImageSpec &spec)
 {
-  bufferlist bl, bl2;
+  bufferlist bl;
   encode(spec, bl);
 
-  return ioctx->exec(oid, "rbd", "group_image_remove", bl, bl2);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "group_image_remove", bl);
+  return ioctx->operate(oid, &op);
 }
 
 int group_image_list(librados::IoCtx *ioctx,
@@ -2692,28 +2700,34 @@ int group_image_list(librados::IoCtx *ioctx,
 int group_image_set(librados::IoCtx *ioctx, const std::string &oid,
                     const cls::rbd::GroupImageStatus &st)
 {
-  bufferlist bl, bl2;
+  bufferlist bl;
   encode(st, bl);
 
-  return ioctx->exec(oid, "rbd", "group_image_set", bl, bl2);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "group_image_set", bl);
+  return ioctx->operate(oid, &op);
 }
 
 int image_group_add(librados::IoCtx *ioctx, const std::string &oid,
                     const cls::rbd::GroupSpec &group_spec)
 {
-  bufferlist bl, bl2;
+  bufferlist bl;
   encode(group_spec, bl);
 
-  return ioctx->exec(oid, "rbd", "image_group_add", bl, bl2);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "image_group_add", bl);
+  return ioctx->operate(oid, &op);
 }
 
 int image_group_remove(librados::IoCtx *ioctx, const std::string &oid,
                        const cls::rbd::GroupSpec &group_spec)
 {
-  bufferlist bl, bl2;
+  bufferlist bl;
   encode(group_spec, bl);
 
-  return ioctx->exec(oid, "rbd", "image_group_remove", bl, bl2);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "image_group_remove", bl);
+  return ioctx->operate(oid, &op);
 }
 
 void image_group_get_start(librados::ObjectReadOperation *op)
@@ -2753,9 +2767,11 @@ int group_snap_set(librados::IoCtx *ioctx, const std::string &oid,
                    const cls::rbd::GroupSnapshot &snapshot)
 {
   using ceph::encode;
-  bufferlist inbl, outbl;
+  bufferlist inbl;
   encode(snapshot, inbl);
-  int r = ioctx->exec(oid, "rbd", "group_snap_set", inbl, outbl);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "group_snap_set", inbl);
+  int r = ioctx->operate(oid, &op);
   return r;
 }
 
@@ -2763,9 +2779,11 @@ int group_snap_remove(librados::IoCtx *ioctx, const std::string &oid,
                       const std::string &snap_id)
 {
   using ceph::encode;
-  bufferlist inbl, outbl;
+  bufferlist inbl;
   encode(snap_id, inbl);
-  return ioctx->exec(oid, "rbd", "group_snap_remove", inbl, outbl);
+  librados::ObjectWriteOperation op;
+  op.exec("rbd", "group_snap_remove", inbl);
+  return ioctx->operate(oid, &op);
 }
 
 int group_snap_get_by_id(librados::IoCtx *ioctx, const std::string &oid,
index bb6eb4d13e7ccd4ff095f4a64a2eebf799adb903..a965b11f381ed390109208bdea6df150064e2ca2 100644 (file)
@@ -481,7 +481,9 @@ int cls_rgw_bi_put(librados::IoCtx& io_ctx, const string oid, const rgw_cls_bi_e
   rgw_cls_bi_put_op call;
   call.entry = entry;
   encode(call, in);
-  int r = io_ctx.exec(oid, RGW_CLASS, RGW_BI_PUT, in, out);
+  librados::ObjectWriteOperation op;
+  op.exec(RGW_CLASS, RGW_BI_PUT, in);
+  int r = io_ctx.operate(oid, &op);
   if (r < 0)
     return r;
 
@@ -1223,7 +1225,9 @@ int cls_rgw_set_bucket_resharding(librados::IoCtx& io_ctx, const string& oid,
   cls_rgw_set_bucket_resharding_op call;
   call.entry = entry;
   encode(call, in);
-  return io_ctx.exec(oid, RGW_CLASS, RGW_SET_BUCKET_RESHARDING, in, out);
+  librados::ObjectWriteOperation op;
+  op.exec(RGW_CLASS, RGW_SET_BUCKET_RESHARDING, in);
+  return io_ctx.operate(oid, &op);
 }
 
 int cls_rgw_clear_bucket_resharding(librados::IoCtx& io_ctx, const string& oid)
@@ -1231,7 +1235,9 @@ int cls_rgw_clear_bucket_resharding(librados::IoCtx& io_ctx, const string& oid)
   bufferlist in, out;
   cls_rgw_clear_bucket_resharding_op call;
   encode(call, in);
-  return io_ctx.exec(oid, RGW_CLASS, RGW_CLEAR_BUCKET_RESHARDING, in, out);
+  librados::ObjectWriteOperation op;
+  op.exec(RGW_CLASS, RGW_CLEAR_BUCKET_RESHARDING, in);
+  return io_ctx.operate(oid, &op);
 }
 
 int cls_rgw_get_bucket_resharding(librados::IoCtx& io_ctx, const string& oid,
index a7d09aba46406df5e5d0a7e97e0c327401df92eb..0bc3876941da7ae4bf61f8cfb7d4c014e6b45a2e 100644 (file)
@@ -1100,7 +1100,10 @@ TEST_F(ClsLua, Json) {
 
   inbl.append(json_test_script);
 
-  int ret = ioctx.exec(oid, "lua", "eval_json", inbl, outbl);
+  librados::ObjectWriteOperation wop;
+  int rval;
+  wop.exec("lua", "eval_json", inbl, &outbl, &rval);
+  int ret = ioctx.operate(oid, &wop);
   ASSERT_EQ(ret, 0);
 
   std::string out(outbl.c_str(), outbl.length());
index 44b32196b3aacb4243c8eb57660d60f11b7bbf40..775c8c3ff371e6f132603bb65801364d4abc58ff 100644 (file)
@@ -13,8 +13,10 @@ TEST(ClsSDK, TestSDKCoverageWrite) {
   IoCtx ioctx;
   cluster.ioctx_create(pool_name.c_str(), ioctx);
 
-  bufferlist in, out;
-  ASSERT_EQ(0, ioctx.exec("myobject", "sdk", "test_coverage_write", in, out));
+  bufferlist in;
+  librados::ObjectWriteOperation op;
+  op.exec("sdk", "test_coverage_write", in);
+  ASSERT_EQ(0, ioctx.operate("myobject", &op));
 
   ASSERT_EQ(0, destroy_one_pool_pp(pool_name, cluster));
 }
@@ -26,9 +28,14 @@ TEST(ClsSDK, TestSDKCoverageReplay) {
   IoCtx ioctx;
   cluster.ioctx_create(pool_name.c_str(), ioctx);
 
-  bufferlist in, out;
-  ASSERT_EQ(0, ioctx.exec("myobject", "sdk", "test_coverage_write", in, out));
-  ASSERT_EQ(0, ioctx.exec("myobject", "sdk", "test_coverage_replay", in, out));
+  bufferlist in;
+  librados::ObjectWriteOperation op;
+  op.exec("sdk", "test_coverage_write", in);
+  ASSERT_EQ(0, ioctx.operate("myobject", &op));
+
+  librados::ObjectWriteOperation op2;
+  op2.exec("sdk", "test_coverage_replay", in);
+  ASSERT_EQ(0, ioctx.operate("myobject", &op2));
 
   ASSERT_EQ(0, destroy_one_pool_pp(pool_name, cluster));
 }