From ff658bd8ea98f67d73f291f7bceb45a23d61a977 Mon Sep 17 00:00:00 2001 From: Zhiqiang Wang Date: Wed, 27 May 2015 11:57:29 +0800 Subject: [PATCH] Objecter: optionally setting the reqid in the mutate interface The cache tier needs to set the reqid to the original reqid from client when proxying the write op. Signed-off-by: Zhiqiang Wang --- src/osdc/Objecter.cc | 4 ++++ src/osdc/Objecter.h | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index f82f6c7d064ae..5d73ed14a4513 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -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()); diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index c76b62b62d032..3e514e3e8e48c 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -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& 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, -- 2.39.5