int RGWSimpleRadosReadAttrsCR::send_request()
{
req = new RGWAsyncGetSystemObj(this, stack->create_completion_notifier(),
- svc, nullptr, obj, true, raw_attrs);
+ svc, objv_tracker, obj, true, raw_attrs);
async_rados->queue(req);
return 0;
}
if (pattrs) {
*pattrs = std::move(req->attrs);
}
+ if (objv_tracker) {
+ *objv_tracker = req->objv_tracker;
+ }
return req->get_ret_status();
}
class RGWAsyncGetSystemObj : public RGWAsyncRadosRequest {
RGWSysObjectCtx obj_ctx;
- RGWObjVersionTracker objv_tracker;
rgw_raw_obj obj;
const bool want_attrs;
const bool raw_attrs;
bufferlist bl;
map<string, bufferlist> attrs;
+ RGWObjVersionTracker objv_tracker;
};
class RGWAsyncPutSystemObj : public RGWAsyncRadosRequest {
rgw_raw_obj obj;
map<string, bufferlist> *pattrs;
bool raw_attrs;
- RGWAsyncGetSystemObj *req;
+ RGWObjVersionTracker* objv_tracker;
+ RGWAsyncGetSystemObj *req = nullptr;
public:
RGWSimpleRadosReadAttrsCR(RGWAsyncRadosProcessor *_async_rados, RGWSI_SysObj *_svc,
- const rgw_raw_obj& _obj,
- map<string, bufferlist> *_pattrs, bool _raw_attrs) : RGWSimpleCoroutine(_svc->ctx()),
- async_rados(_async_rados), svc(_svc),
- obj(_obj),
- pattrs(_pattrs),
- raw_attrs(_raw_attrs),
- req(NULL) {}
+ const rgw_raw_obj& _obj, map<string, bufferlist> *_pattrs,
+ bool _raw_attrs, RGWObjVersionTracker* objv_tracker = nullptr)
+ : RGWSimpleCoroutine(_svc->ctx()),
+ async_rados(_async_rados), svc(_svc),
+ obj(_obj),
+ pattrs(_pattrs),
+ raw_attrs(_raw_attrs),
+ objv_tracker(objv_tracker)
+ {}
~RGWSimpleRadosReadAttrsCR() override {
request_cleanup();
}