@@ -3127,8 +3127,8 @@ int RGWRados::swift_versioning_restore(RGWObjectCtx& obj_ctx,
31273127
31283128int RGWRados::Object::Write::_do_write_meta (uint64_t size, uint64_t accounted_size,
31293129 map<string, bufferlist>& attrs,
3130- bool assume_noent, bool modify_tail ,
3131- void *_index_op, const req_context& rctx,
3130+ bool assume_noent, void *_index_op ,
3131+ const req_context& rctx,
31323132 jspan_context& trace, bool log_op)
31333133{
31343134 RGWRados::Bucket::UpdateIndex *index_op = static_cast <RGWRados::Bucket::UpdateIndex *>(_index_op);
@@ -3172,7 +3172,7 @@ int RGWRados::Object::Write::_do_write_meta(uint64_t size, uint64_t accounted_si
31723172 if (!ptag && !index_op->get_optag ()->empty ()) {
31733173 ptag = index_op->get_optag ();
31743174 }
3175- r = target->prepare_atomic_modification (rctx.dpp , op, reset_obj, ptag, meta.if_match , meta.if_nomatch , false , modify_tail, rctx.y );
3175+ r = target->prepare_atomic_modification (rctx.dpp , op, reset_obj, ptag, meta.if_match , meta.if_nomatch , false , meta. modify_tail , rctx.y );
31763176 if (r < 0 )
31773177 return r;
31783178
@@ -3339,7 +3339,7 @@ int RGWRados::Object::Write::_do_write_meta(uint64_t size, uint64_t accounted_si
33393339
33403340 poolid = ioctx.get_id ();
33413341
3342- r = target->complete_atomic_modification (rctx.dpp , rctx.y );
3342+ r = target->complete_atomic_modification (rctx.dpp , meta. keep_tail , rctx.y );
33433343 if (r < 0 ) {
33443344 ldpp_dout (rctx.dpp , 0 ) << " ERROR: complete_atomic_modification returned r=" << r << dendl;
33453345 }
@@ -3457,13 +3457,13 @@ int RGWRados::Object::Write::write_meta(uint64_t size, uint64_t accounted_size,
34573457 bool assume_noent = (meta.if_match == NULL && meta.if_nomatch == NULL );
34583458 int r;
34593459 if (assume_noent) {
3460- r = _do_write_meta (size, accounted_size, attrs, assume_noent, meta. modify_tail , (void *)&index_op, rctx, trace, log_op);
3460+ r = _do_write_meta (size, accounted_size, attrs, assume_noent, (void *)&index_op, rctx, trace, log_op);
34613461 if (r == -EEXIST) {
34623462 assume_noent = false ;
34633463 }
34643464 }
34653465 if (!assume_noent) {
3466- r = _do_write_meta (size, accounted_size, attrs, assume_noent, meta. modify_tail , (void *)&index_op, rctx, trace, log_op);
3466+ r = _do_write_meta (size, accounted_size, attrs, assume_noent, (void *)&index_op, rctx, trace, log_op);
34673467 }
34683468 return r;
34693469}
@@ -5011,8 +5011,6 @@ int RGWRados::copy_obj(RGWObjectCtx& src_obj_ctx,
50115011 pmanifest = &manifest;
50125012 } else {
50135013 pmanifest = amanifest;
5014- /* don't send the object's tail for garbage collection */
5015- astate->keep_tail = true ;
50165014 }
50175015
50185016 if (copy_first) {
@@ -5037,6 +5035,7 @@ int RGWRados::copy_obj(RGWObjectCtx& src_obj_ctx,
50375035 write_op.meta .olh_epoch = olh_epoch;
50385036 write_op.meta .delete_at = delete_at;
50395037 write_op.meta .modify_tail = !copy_itself;
5038+ write_op.meta .keep_tail = copy_itself;
50405039
50415040 ret = write_op.write_meta (obj_size, astate->accounted_size , attrs, rctx, trace);
50425041 if (ret < 0 ) {
@@ -5659,9 +5658,9 @@ int RGWRados::bucket_suspended(const DoutPrefixProvider *dpp, rgw_bucket& bucket
56595658 return 0 ;
56605659}
56615660
5662- int RGWRados::Object::complete_atomic_modification (const DoutPrefixProvider *dpp, optional_yield y)
5661+ int RGWRados::Object::complete_atomic_modification (const DoutPrefixProvider *dpp, bool keep_tail, optional_yield y)
56635662{
5664- if ((!manifest)|| state-> keep_tail )
5663+ if ((!manifest) || keep_tail)
56655664 return 0 ;
56665665
56675666 cls_rgw_obj_chain chain;
@@ -6238,7 +6237,7 @@ int RGWRados::Object::Delete::delete_obj(optional_yield y, const DoutPrefixProvi
62386237 }
62396238 r = index_op.complete_del (dpp, poolid, epoch, state->mtime , params.remove_objs , y, log_op);
62406239
6241- int ret = target->complete_atomic_modification (dpp, y);
6240+ int ret = target->complete_atomic_modification (dpp, false , y);
62426241 if (ret < 0 ) {
62436242 ldpp_dout (dpp, 0 ) << " ERROR: complete_atomic_modification returned ret=" << ret << dendl;
62446243 }
0 commit comments