@@ -5738,7 +5738,7 @@ int RGWRados::Object::Delete::delete_obj(optional_yield y, const DoutPrefixProvi
57385738 }
57395739 result.delete_marker = dirent.is_delete_marker ();
57405740 r = store->unlink_obj_instance (dpp, target->get_ctx (), target->get_bucket_info (), obj, params.olh_epoch ,
5741- y, params.null_verid , params.zones_trace , add_log);
5741+ y, params.bilog_flags , params. null_verid , params.zones_trace , add_log);
57425742 if (r < 0 ) {
57435743 return r;
57445744 }
@@ -7847,7 +7847,8 @@ int RGWRados::bucket_index_unlink_instance(const DoutPrefixProvider *dpp,
78477847 RGWBucketInfo& bucket_info,
78487848 const rgw_obj& obj_instance,
78497849 const string& op_tag, const string& olh_tag,
7850- uint64_t olh_epoch, optional_yield y, bool null_verid,
7850+ uint64_t olh_epoch, optional_yield y,
7851+ uint16_t bilog_flags,
78517852 rgw_zone_set *_zones_trace, bool log_op)
78527853{
78537854 rgw_rados_ref ref;
@@ -7872,7 +7873,7 @@ int RGWRados::bucket_index_unlink_instance(const DoutPrefixProvider *dpp,
78727873 op.assert_exists (); // bucket index shard must exist
78737874 cls_rgw_guard_bucket_resharding (op, -ERR_BUSY_RESHARDING);
78747875 cls_rgw_bucket_unlink_instance (op, key, op_tag,
7875- olh_tag, olh_epoch, log_op, null_verid , zones_trace);
7876+ olh_tag, olh_epoch, log_op, bilog_flags , zones_trace);
78767877 return rgw_rados_operate (dpp, ref.ioctx , ref.obj .oid , &op, y);
78777878 }, y);
78787879 if (r < 0 ) {
@@ -8408,7 +8409,7 @@ int RGWRados::set_olh(const DoutPrefixProvider *dpp, RGWObjectCtx& obj_ctx,
84088409}
84098410
84108411int RGWRados::unlink_obj_instance (const DoutPrefixProvider *dpp, RGWObjectCtx& obj_ctx, RGWBucketInfo& bucket_info, const rgw_obj& target_obj,
8411- uint64_t olh_epoch, optional_yield y, bool null_verid, rgw_zone_set *zones_trace, bool log_op)
8412+ uint64_t olh_epoch, optional_yield y, uint16_t bilog_flags, bool null_verid, rgw_zone_set *zones_trace, bool log_op)
84128413{
84138414 string op_tag;
84148415
@@ -8447,7 +8448,13 @@ int RGWRados::unlink_obj_instance(const DoutPrefixProvider *dpp, RGWObjectCtx& o
84478448 std::this_thread::sleep_for (cct->_conf ->rgw_debug_inject_latency_bi_unlink * std::chrono::seconds{1 });
84488449 }
84498450
8450- ret = bucket_index_unlink_instance (dpp, bucket_info, target_obj, op_tag, olh_tag, olh_epoch, y, null_verid, zones_trace, log_op);
8451+ if (null_verid) {
8452+ bilog_flags = bilog_flags | RGW_BILOG_FLAG_VERSIONED_OP | RGW_BILOG_NULL_VERSION;
8453+ } else {
8454+ bilog_flags = bilog_flags | RGW_BILOG_FLAG_VERSIONED_OP;
8455+ }
8456+
8457+ ret = bucket_index_unlink_instance (dpp, bucket_info, target_obj, op_tag, olh_tag, olh_epoch, y, bilog_flags, zones_trace, log_op);
84518458 if (ret < 0 ) {
84528459 olh_cancel_modification (dpp, bucket_info, *state, olh_obj, op_tag, y);
84538460 ldpp_dout (dpp, 20 ) << " bucket_index_unlink_instance() target_obj=" << target_obj << " returned " << ret << dendl;
0 commit comments