]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Objecter: optionally setting the reqid in the mutate interface
authorZhiqiang Wang <zhiqiang.wang@intel.com>
Wed, 27 May 2015 03:57:29 +0000 (11:57 +0800)
committerSamuel Just <sjust@redhat.com>
Tue, 18 Aug 2015 18:25:23 +0000 (11:25 -0700)
The cache tier needs to set the reqid to the original reqid from client
when proxying the write op.

Signed-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>
src/osdc/Objecter.cc
src/osdc/Objecter.h

index f82f6c7d064ae2da60e95b3e5b1f9902d4b3b11c..5d73ed14a451363768e0e1eebba170ad55764fa0 100644 (file)
@@ -2799,6 +2799,10 @@ MOSDOp *Objecter::_prepare_osd_op(Op *op)
   else
     m->set_priority(cct->_conf->osd_client_op_priority);
 
+  if (op->reqid != osd_reqid_t()) {
+    m->set_reqid(op->reqid);
+  }
+
   logger->inc(l_osdc_op_send);
   logger->inc(l_osdc_op_send_bytes, m->get_data().length());
 
index c76b62b62d0329f9a5eaeea743ed2c0b2a435f96..3e514e3e8e48cca0b44127201925b055f16f04b3 100644 (file)
@@ -1201,6 +1201,8 @@ public:
 
     epoch_t last_force_resend;
 
+    osd_reqid_t reqid; // explicitly setting reqid
+
     Op(const object_t& o, const object_locator_t& ol, vector<OSDOp>& op,
        int f, Context *ac, Context *co, version_t *ov, int *offset = NULL) :
       session(NULL), incarnation(0),
@@ -2045,19 +2047,22 @@ public:
   Op *prepare_mutate_op(const object_t& oid, const object_locator_t& oloc,
               ObjectOperation& op,
               const SnapContext& snapc, utime_t mtime, int flags,
-              Context *onack, Context *oncommit, version_t *objver = NULL) {
+              Context *onack, Context *oncommit, version_t *objver = NULL,
+              osd_reqid_t reqid = osd_reqid_t()) {
     Op *o = new Op(oid, oloc, op.ops, flags | global_op_flags.read() | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver);
     o->priority = op.priority;
     o->mtime = mtime;
     o->snapc = snapc;
     o->out_rval.swap(op.out_rval);
+    o->reqid = reqid;
     return o;
   }
   ceph_tid_t mutate(const object_t& oid, const object_locator_t& oloc,
               ObjectOperation& op,
               const SnapContext& snapc, utime_t mtime, int flags,
-              Context *onack, Context *oncommit, version_t *objver = NULL) {
-    Op *o = prepare_mutate_op(oid, oloc, op, snapc, mtime, flags, onack, oncommit, objver);
+              Context *onack, Context *oncommit, version_t *objver = NULL,
+              osd_reqid_t reqid = osd_reqid_t()) {
+    Op *o = prepare_mutate_op(oid, oloc, op, snapc, mtime, flags, onack, oncommit, objver, reqid);
     return op_submit(o);
   }
   Op *prepare_read_op(const object_t& oid, const object_locator_t& oloc,