From: Casey Bodley Date: Fri, 20 Jan 2017 19:55:47 +0000 (-0500) Subject: rgw: add objv_tracker arg to RGWSimpleRadosRead/WriteCR X-Git-Tag: v12.0.3~20^2~19 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ca462a3b9aef2be6422e420fc2482f831409cb72;p=ceph.git rgw: add objv_tracker arg to RGWSimpleRadosRead/WriteCR Signed-off-by: Casey Bodley --- diff --git a/src/rgw/rgw_cr_rados.cc b/src/rgw/rgw_cr_rados.cc index 6c748dabc988..d0307fe8e041 100644 --- a/src/rgw/rgw_cr_rados.cc +++ b/src/rgw/rgw_cr_rados.cc @@ -116,14 +116,14 @@ int RGWSimpleRadosReadAttrsCR::request_complete() int RGWAsyncPutSystemObj::_send_request() { - return store->put_system_obj_data(NULL, obj, bl, -1, exclusive); + return store->put_system_obj_data(NULL, obj, bl, -1, exclusive, objv_tracker); } RGWAsyncPutSystemObj::RGWAsyncPutSystemObj(RGWCoroutine *caller, RGWAioCompletionNotifier *cn, RGWRados *_store, - const rgw_raw_obj& _obj, bool _exclusive, - bufferlist& _bl) : RGWAsyncRadosRequest(caller, cn), store(_store), - obj(_obj), exclusive(_exclusive), - bl(_bl) + RGWObjVersionTracker *_objv_tracker, rgw_raw_obj& _obj, + bool _exclusive, bufferlist& _bl) + : RGWAsyncRadosRequest(caller, cn), store(_store), objv_tracker(_objv_tracker), + obj(_obj), exclusive(_exclusive), bl(_bl) { } diff --git a/src/rgw/rgw_cr_rados.h b/src/rgw/rgw_cr_rados.h index 52cacde3bdf5..f92fc7848487 100644 --- a/src/rgw/rgw_cr_rados.h +++ b/src/rgw/rgw_cr_rados.h @@ -117,6 +117,7 @@ public: class RGWAsyncPutSystemObj : public RGWAsyncRadosRequest { RGWRados *store; + RGWObjVersionTracker *objv_tracker; rgw_raw_obj obj; bool exclusive; bufferlist bl; @@ -125,8 +126,8 @@ protected: int _send_request() override; public: RGWAsyncPutSystemObj(RGWCoroutine *caller, RGWAioCompletionNotifier *cn, RGWRados *_store, - const rgw_raw_obj& _obj, bool _exclusive, - bufferlist& _bl); + RGWObjVersionTracker *_objv_tracker, rgw_raw_obj& _obj, + bool _exclusive, bufferlist& _bl); }; class RGWAsyncPutSystemObjAttrs : public RGWAsyncRadosRequest { @@ -187,16 +188,18 @@ class RGWSimpleRadosReadCR : public RGWSimpleCoroutine { T *result; /// on ENOENT, call handle_data() with an empty object instead of failing const bool empty_on_enoent; + RGWObjVersionTracker *objv_tracker; RGWAsyncGetSystemObj *req{nullptr}; public: RGWSimpleRadosReadCR(RGWAsyncRadosProcessor *_async_rados, RGWRados *_store, const rgw_raw_obj& _obj, - T *_result, bool empty_on_enoent = true) + T *_result, bool empty_on_enoent = true, + RGWObjVersionTracker *objv_tracker = nullptr) : RGWSimpleCoroutine(_store->ctx()), async_rados(_async_rados), store(_store), obj_ctx(store), obj(_obj), result(_result), - empty_on_enoent(empty_on_enoent) {} + empty_on_enoent(empty_on_enoent), objv_tracker(objv_tracker) {} ~RGWSimpleRadosReadCR() override { request_cleanup(); } @@ -220,7 +223,7 @@ template int RGWSimpleRadosReadCR::send_request() { req = new RGWAsyncGetSystemObj(this, stack->create_completion_notifier(), - store, &obj_ctx, NULL, + store, &obj_ctx, objv_tracker, obj, &bl, 0, -1); if (pattrs) { @@ -303,17 +306,16 @@ class RGWSimpleRadosWriteCR : public RGWSimpleCoroutine { bufferlist bl; rgw_raw_obj obj; + RGWObjVersionTracker *objv_tracker; - RGWAsyncPutSystemObj *req; + RGWAsyncPutSystemObj *req{nullptr}; public: RGWSimpleRadosWriteCR(RGWAsyncRadosProcessor *_async_rados, RGWRados *_store, const rgw_raw_obj& _obj, - const T& _data) : RGWSimpleCoroutine(_store->ctx()), - async_rados(_async_rados), - store(_store), - obj(_obj), - req(NULL) { + const T& _data, RGWObjVersionTracker *objv_tracker = nullptr) + : RGWSimpleCoroutine(_store->ctx()), async_rados(_async_rados), + store(_store), obj(_obj), objv_tracker(objv_tracker) { ::encode(_data, bl); } @@ -330,7 +332,7 @@ public: int send_request() override { req = new RGWAsyncPutSystemObj(this, stack->create_completion_notifier(), - store, obj, false, bl); + store, objv_tracker, obj, false, bl); async_rados->queue(req); return 0; }