From 9677f7d31c7db8f2333ea7438a68d54963169b8e Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 12 May 2017 11:47:54 -0700 Subject: [PATCH] cls/rgw: changes to support reshard guard on olh bi ops Signed-off-by: Yehuda Sadeh --- src/cls/rgw/cls_rgw_client.cc | 17 ++++++++++------- src/cls/rgw/cls_rgw_client.h | 10 ++++++---- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/cls/rgw/cls_rgw_client.cc b/src/cls/rgw/cls_rgw_client.cc index 6e6bdc801ea71..edc6136e38af8 100644 --- a/src/cls/rgw/cls_rgw_client.cc +++ b/src/cls/rgw/cls_rgw_client.cc @@ -329,7 +329,8 @@ int cls_rgw_bi_list(librados::IoCtx& io_ctx, const string oid, return 0; } -int cls_rgw_bucket_link_olh(librados::IoCtx& io_ctx, const string& oid, const cls_rgw_obj_key& key, bufferlist& olh_tag, +int cls_rgw_bucket_link_olh(librados::IoCtx& io_ctx, librados::ObjectWriteOperation& op, + const string& oid, const cls_rgw_obj_key& key, bufferlist& olh_tag, bool delete_marker, const string& op_tag, struct rgw_bucket_dir_entry_meta *meta, uint64_t olh_epoch, ceph::real_time unmod_since, bool high_precision_time, bool log_op, rgw_zone_set& zones_trace) { @@ -348,14 +349,16 @@ int cls_rgw_bucket_link_olh(librados::IoCtx& io_ctx, const string& oid, const cl call.high_precision_time = high_precision_time; call.zones_trace = zones_trace; ::encode(call, in); - int r = io_ctx.exec(oid, RGW_CLASS, RGW_BUCKET_LINK_OLH, in, out); + op.exec(RGW_CLASS, RGW_BUCKET_LINK_OLH, in); + int r = io_ctx.operate(oid, &op); if (r < 0) return r; return 0; } -int cls_rgw_bucket_unlink_instance(librados::IoCtx& io_ctx, const string& oid, +int cls_rgw_bucket_unlink_instance(librados::IoCtx& io_ctx, librados::ObjectWriteOperation& op, + const string& oid, const cls_rgw_obj_key& key, const string& op_tag, const string& olh_tag, uint64_t olh_epoch, bool log_op, rgw_zone_set& zones_trace) { @@ -368,7 +371,8 @@ int cls_rgw_bucket_unlink_instance(librados::IoCtx& io_ctx, const string& oid, call.log_op = log_op; call.zones_trace = zones_trace; ::encode(call, in); - int r = io_ctx.exec(oid, RGW_CLASS, RGW_BUCKET_UNLINK_INSTANCE, in, out); + op.exec(RGW_CLASS, RGW_BUCKET_UNLINK_INSTANCE, in); + int r = io_ctx.operate(oid, &op); if (r < 0) return r; @@ -424,14 +428,13 @@ void cls_rgw_trim_olh_log(librados::ObjectWriteOperation& op, const cls_rgw_obj_ op.exec(RGW_CLASS, RGW_BUCKET_TRIM_OLH_LOG, in); } -int cls_rgw_clear_olh(IoCtx& io_ctx, string& oid, const cls_rgw_obj_key& olh, const string& olh_tag) +int cls_rgw_clear_olh(IoCtx& io_ctx, librados::ObjectWriteOperation& op, string& oid, const cls_rgw_obj_key& olh, const string& olh_tag) { bufferlist in, out; struct rgw_cls_bucket_clear_olh_op call; call.key = olh; call.olh_tag = olh_tag; ::encode(call, in); - librados::ObjectWriteOperation op; int op_ret; op.exec(RGW_CLASS, RGW_BUCKET_CLEAR_OLH, in, &out, &op_ret); int r = io_ctx.operate(oid, &op); @@ -886,7 +889,7 @@ int cls_rgw_get_bucket_resharding(librados::IoCtx& io_ctx, const string& oid, return 0; } -void cls_rgw_guard_bucket_resharding(librados::ObjectWriteOperation& op, int ret_err) +void cls_rgw_guard_bucket_resharding(librados::ObjectOperation& op, int ret_err) { bufferlist in, out; struct cls_rgw_guard_bucket_resharding_op call; diff --git a/src/cls/rgw/cls_rgw_client.h b/src/cls/rgw/cls_rgw_client.h index c1abcf0cccd78..90f0d6f31643b 100644 --- a/src/cls/rgw/cls_rgw_client.h +++ b/src/cls/rgw/cls_rgw_client.h @@ -337,16 +337,18 @@ int cls_rgw_bi_list(librados::IoCtx& io_ctx, const string oid, list *entries, bool *is_truncated); -int cls_rgw_bucket_link_olh(librados::IoCtx& io_ctx, const string& oid, const cls_rgw_obj_key& key, bufferlist& olh_tag, +int cls_rgw_bucket_link_olh(librados::IoCtx& io_ctx, librados::ObjectWriteOperation& op, + const string& oid, const cls_rgw_obj_key& key, bufferlist& olh_tag, bool delete_marker, const string& op_tag, struct rgw_bucket_dir_entry_meta *meta, uint64_t olh_epoch, ceph::real_time unmod_since, bool high_precision_time, bool log_op, rgw_zone_set& zones_trace); -int cls_rgw_bucket_unlink_instance(librados::IoCtx& io_ctx, const string& oid, const cls_rgw_obj_key& key, const string& op_tag, +int cls_rgw_bucket_unlink_instance(librados::IoCtx& io_ctx, librados::ObjectWriteOperation& op, + const string& oid, const cls_rgw_obj_key& key, const string& op_tag, const string& olh_tag, uint64_t olh_epoch, bool log_op, rgw_zone_set& zones_trace); int cls_rgw_get_olh_log(librados::IoCtx& io_ctx, string& oid, librados::ObjectReadOperation& op, const cls_rgw_obj_key& olh, uint64_t ver_marker, const string& olh_tag, map > *log, bool *is_truncated); void cls_rgw_trim_olh_log(librados::ObjectWriteOperation& op, const cls_rgw_obj_key& olh, uint64_t ver, const string& olh_tag); -int cls_rgw_clear_olh(librados::IoCtx& io_ctx, string& oid, const cls_rgw_obj_key& olh, const string& olh_tag); +int cls_rgw_clear_olh(librados::IoCtx& io_ctx, librados::ObjectWriteOperation& op, string& oid, const cls_rgw_obj_key& olh, const string& olh_tag); /** * List the bucket with the starting object and filter prefix. @@ -515,7 +517,7 @@ void cls_rgw_reshard_remove(librados::ObjectWriteOperation& op, const cls_rgw_re int cls_rgw_set_bucket_resharding(librados::IoCtx& io_ctx, const string& oid, const cls_rgw_bucket_instance_entry& entry); int cls_rgw_clear_bucket_resharding(librados::IoCtx& io_ctx, const string& oid); -void cls_rgw_guard_bucket_resharding(librados::ObjectWriteOperation& op, int ret_err); +void cls_rgw_guard_bucket_resharding(librados::ObjectOperation& op, int ret_err); int cls_rgw_get_bucket_resharding(librados::IoCtx& io_ctx, const string& oid, cls_rgw_bucket_instance_entry *entry); -- 2.39.5