cls_rgw_guard_bucket_resharding(o, -ERR_BUSY_RESHARDING);
cls_rgw_bucket_complete_op(o, c->op, c->tag, c->ver, c->key, c->dir_meta, &c->remove_objs,
c->log_op, c->bilog_op, &c->zones_trace);
- return bs->bucket_obj.operate(&o, null_yield);
+ return rgw_rados_operate(bs->index_ctx, bs->bucket_obj, &o, null_yield);
});
if (r < 0) {
ldout(cct, 0) << "ERROR: " << __func__ << "(): bucket index completion failed, obj=" << c->obj << " r=" << r << dendl;
#define HEAD_SIZE 512 * 1024
op.read(0, HEAD_SIZE, &data, NULL);
- ret = ioctx.operate(oid, &op, NULL);
+ ret = rgw_rados_operate(ioctx, oid, &op, &data, null_yield);
if (ret < 0) {
- lderr(cct) << "ERROR: ioctx.operate(oid=" << oid << ") returned ret=" << ret << dendl;
+ lderr(cct) << "ERROR: rgw_rados_operate(oid=" << oid << ") returned ret=" << ret << dendl;
return ret;
}
wop.write(0, data);
ioctx.locator_set_key(locator);
- ioctx.operate(oid, &wop);
+ rgw_rados_operate(ioctx, oid, &wop, null_yield);
}
if (remove_bad) {
mtime = real_clock::from_timespec(mtime_ts);
}
rop.read(ofs, chunk_size, &data, NULL);
- ret = src_ioctx.operate(src_oid, &rop, NULL);
+ ret = rgw_rados_operate(src_ioctx, src_oid, &rop, &data, null_yield);
if (ret < 0) {
goto done_err;
}
mtime = real_clock::from_timespec(mtime_ts);
}
wop.write(ofs, data);
- ret = dst_ioctx.operate(dst_oid, &wop);
+ ret = rgw_rados_operate(dst_ioctx, dst_oid, &wop, null_yield);
if (ret < 0) {
goto done_err;
}
auto& ioctx = ref.pool.ioctx();
tracepoint(rgw_rados, operate_enter, req_id.c_str());
- r = ioctx.operate(ref.obj.oid, &op);
+ r = rgw_rados_operate(ref.ioctx, ref.obj.oid, &op, null_yield);
tracepoint(rgw_rados, operate_exit, req_id.c_str());
if (r < 0) { /* we can expect to get -ECANCELED if object was replaced under,
or -ENOENT if was removed, or -EEXIST if it did not exist
cls_refcount_get(op, ref_tag, true);
const rgw_raw_obj& loc = miter.get_location().get_raw_obj(this);
- auto& ioctx = ref.pool.ioctx();
- ioctx.locator_set_key(loc.loc);
-
- ret = ioctx.operate(loc.oid, &op);
+ ret = rgw_rados_operate(ioctx, loc.oid, &op, null_yield);
if (ret < 0) {
goto done_ret;
}
ref.pool.ioctx().locator_set_key(riter->loc);
- int r = ref.pool.ioctx().operate(riter->oid, &op);
+ int r = rgw_rados_operate(ref.pool.ioctx, riter->oid, &op, null_yield);
if (r < 0) {
ldpp_dout(dpp, 0) << "ERROR: cleanup after error failed to drop reference on obj=" << *riter << dendl;
}
store->remove_rgw_head_obj(op);
auto& ioctx = ref.pool.ioctx();
- r = ioctx.operate(ref.obj.oid, &op);
+ r = rgw_rados_operate(ioctx, ref.obj.oid, &op, null_yield);
/* raced with another operation, object state is indeterminate */
const bool need_invalidate = (r == -ECANCELED);
ObjectWriteOperation op;
op.remove();
- r = ref.pool.ioctx().operate(ref.obj.oid, &op);
+ r = rgw_rados_operate(ref.pool.ioctx, ref.obj.oid, &op, null_yield);
if (r < 0)
return r;
struct timespec mtime_ts = real_clock::to_timespec(mtime);
op.mtime2(&mtime_ts);
auto& ioctx = ref.pool.ioctx();
- r = ioctx.operate(ref.obj.oid, &op);
+ r = rgw_rados_operate(ioctx, ref.obj.oid, &op, null_yield);
if (state) {
if (r >= 0) {
bufferlist acl_bl = attrs[RGW_ATTR_ACL];
return r;
}
- return ref.pool.ioctx().operate(ref.obj.oid, op);
+ return rgw_rados_operate(ref.pool.ioctx, ref.obj.oid, op, null_yield);
}
int RGWRados::obj_operate(const RGWBucketInfo& bucket_info, const rgw_obj& obj, ObjectReadOperation *op)
bufferlist outbl;
- return ref.pool.ioctx().operate(ref.obj.oid, op, &outbl);
+ return rgw_rados_operate(ref.pool.ioctx, ref.obj.oid, op, &outbl, null_yield);
}
int RGWRados::olh_init_modification_impl(const RGWBucketInfo& bucket_info, RGWObjState& state, const rgw_obj& olh_obj, string *op_tag)
if (r < 0) {
return r;
}
- r = ref.pool.ioctx().operate(ref.obj.oid, &op);
+ r = rgw_rados_operate(ref.pool.ioctx, ref.obj.oid, &op, null_yield);
if (r < 0) {
ldout(cct, 0) << "repair_olh failed to write olh attributes with "
<< cpp_strerror(r) << dendl;
ObjectWriteOperation op;
cls_rgw_guard_bucket_resharding(op, -ERR_BUSY_RESHARDING);
cls_rgw_trim_olh_log(op, key, ver, olh_tag);
- return pbs->bucket_obj.operate(&op, null_yield);
+ return pbs->bucket_obj.operate(&op, null_yield);
});
if (ret < 0) {
ldout(cct, 20) << "cls_rgw_trim_olh_log() returned r=" << ret << dendl;
}
/* update olh object */
- r = ref.pool.ioctx().operate(ref.obj.oid, &op);
+ r = rgw_rados_operate(ref.pool.ioctx, ref.obj.oid, &op, null_yield);
if (r == -ECANCELED) {
r = 0;
}
cls_obj_check_prefix_exist(rm_op, RGW_ATTR_OLH_PENDING_PREFIX, true); /* fail if found one of these, pending modification */
rm_op.remove();
- r = ref.pool.ioctx().operate(ref.obj.oid, &rm_op);
+ r = rgw_rados_operate(ref.pool.ioctx, ref.obj.oid, &rm_op, null_yield);
if (r == -ECANCELED) {
return 0; /* someone else won this race */
} else {
op.rmxattr(i->first.c_str());
}
- r = ref.pool.ioctx().operate(ref.obj.oid, &op);
+ r = rgw_rados_operate(ref.pool.ioctx, ref.obj.oid, &op, null_yield);
if (r == -ENOENT || r == -ECANCELED) {
/* raced with some other change, shouldn't sweat about it */
return 0;
op.read(0, cct->_conf->rgw_max_chunk_size, first_chunk, NULL);
}
bufferlist outbl;
-
- r = rgw_rados_operate(ref.pool.ioctx(), ref.obj.oid, &op, &outbl, y);
+ r = rgw_rados_operate(ref.pool.ioctx, ref.obj.oid, &op, &outbl, null_yield);
if (epoch) {
*epoch = ref.pool.ioctx().get_last_version();
int RGWRados::gc_operate(string& oid, librados::ObjectWriteOperation *op)
{
- return gc_pool_ctx.operate(oid, op);
+ return rgw_rados_operate(gc_pool_ctx, oid, op, null_yield);
}
int RGWRados::gc_aio_operate(string& oid, librados::ObjectWriteOperation *op, AioCompletion **pc)
int RGWRados::gc_operate(string& oid, librados::ObjectReadOperation *op, bufferlist *pbl)
{
- return gc_pool_ctx.operate(oid, op, pbl);
+ return rgw_rados_operate(gc_pool_ctx, oid, op, pbl, null_yield);
}
int RGWRados::list_gc_objs(int *index, string& marker, uint32_t max, bool expired_only, std::list<cls_rgw_gc_obj_info>& result, bool *truncated)
librados::ObjectReadOperation op;
cls_rgw_bucket_list_op(op, marker, prefix, num_entries,
list_versions, &result);
- r = ioctx.operate(oid, &op, nullptr);
+ r = rgw_rados_operate(ioctx, oid, &op, nullptr, null_yield);
if (r < 0)
return r;
ObjectWriteOperation op;
cls_rgw_usage_log_add(op, info);
- r = ref.pool.ioctx().operate(ref.obj.oid, &op);
+ r = rgw_rados_operate(ref.pool.ioctx, ref.obj.oid, &op, null_yield);
return r;
}
}
librados::ObjectWriteOperation op;
cls_rgw_usage_log_clear(op);
- r = ref.pool.ioctx().operate(ref.obj.oid, &op);
+ r = rgw_rados_operate(ref.pool.ioctx, ref.obj.oid, &op, null_yield);
return r;
}
}
return ret;
}
-