From dccae6d2cdff13f6a1ce545fde2623222222979a Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 9 Jul 2008 15:07:56 -0700 Subject: [PATCH] use orig_source for MClientRequest, MOSDOp --- src/client/Client.cc | 36 ++++++++++++++++------------------- src/include/ceph_fs.h | 2 -- src/kernel/mds_client.c | 1 - src/kernel/osd_client.c | 1 - src/mds/LogEvent.h | 6 +++--- src/mds/LogSegment.h | 2 +- src/mds/MDCache.cc | 4 ++-- src/mds/MDS.cc | 24 ++++++++++++++--------- src/mds/Server.cc | 18 +++++++++--------- src/messages/MClientRequest.h | 16 +++------------- src/messages/MOSDOp.h | 10 ++-------- src/osd/PG.cc | 2 +- src/osd/ReplicatedPG.cc | 25 ++++++++++++------------ src/osdc/Objecter.cc | 6 +++--- 14 files changed, 68 insertions(+), 85 deletions(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index 820ef62a54d6..d4d64014daa3 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -2031,7 +2031,7 @@ int Client::link(const char *existing, const char *newname) int Client::_link(const filepath &existing, const filepath &newname, int uid, int gid) { - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_LINK, messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_LINK); req->set_filepath(newname); req->set_filepath2(existing); @@ -2058,7 +2058,7 @@ int Client::unlink(const char *relpath) int Client::_unlink(const filepath &path, int uid, int gid) { - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_UNLINK, messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_UNLINK); req->set_filepath(path); MClientReply *reply = make_request(req, uid, gid); @@ -2094,7 +2094,7 @@ int Client::rename(const char *relfrom, const char *relto) int Client::_rename(const filepath &from, const filepath &to, int uid, int gid) { - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RENAME, messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RENAME); req->set_filepath(from); req->set_filepath2(to); @@ -2134,7 +2134,7 @@ int Client::mkdir(const char *relpath, mode_t mode) int Client::_mkdir(const filepath &path, mode_t mode, int uid, int gid) { - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_MKDIR, messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_MKDIR); req->set_filepath(path); req->head.args.mkdir.mode = mode; @@ -2160,7 +2160,7 @@ int Client::rmdir(const char *relpath) int Client::_rmdir(const filepath &path, int uid, int gid) { - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RMDIR, messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RMDIR); req->set_filepath(path); MClientReply *reply = make_request(req, uid, gid); @@ -2196,7 +2196,7 @@ int Client::symlink(const char *target, const char *rellink) int Client::_symlink(const filepath &path, const char *target, int uid, int gid) { - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_SYMLINK, messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_SYMLINK); req->set_filepath(path); req->set_path2(target); @@ -2264,7 +2264,7 @@ int Client::_do_lstat(const filepath &path, int mask, Inode **in, int uid, int g dout(10) << "lstat cache hit w/ sufficient mask, until " << dn->inode->lease_ttl << dendl; *in = dn->inode; } else { - req = new MClientRequest(CEPH_MDS_OP_LSTAT, messenger->get_myinst()); + req = new MClientRequest(CEPH_MDS_OP_LSTAT); req->head.args.stat.mask = mask; req->set_filepath(path); @@ -2395,8 +2395,7 @@ static int symop(int op, bool follow) int Client::_chmod(const filepath &path, mode_t mode, bool followsym, int uid, int gid) { dout(3) << "_chmod(" << path << ", 0" << oct << mode << dec << ")" << dendl; - MClientRequest *req = new MClientRequest(symop(CEPH_MDS_OP_CHMOD, followsym), - messenger->get_myinst()); + MClientRequest *req = new MClientRequest(symop(CEPH_MDS_OP_CHMOD, followsym)); req->set_filepath(path); req->head.args.chmod.mode = mode; @@ -2423,8 +2422,7 @@ int Client::chown(const char *relpath, uid_t uid, gid_t gid) int Client::_chown(const filepath &path, uid_t uid, gid_t gid, bool followsym, int cuid, int cgid) { dout(3) << "_chown(" << path << ", " << uid << ", " << gid << ")" << dendl; - MClientRequest *req = new MClientRequest(symop(CEPH_MDS_OP_CHOWN, followsym), - messenger->get_myinst()); + MClientRequest *req = new MClientRequest(symop(CEPH_MDS_OP_CHOWN, followsym)); req->set_filepath(path); req->head.args.chown.uid = uid; req->head.args.chown.gid = gid; @@ -2466,8 +2464,7 @@ int Client::_utimes(const filepath &path, utime_t mtime, utime_t atime, bool fol return 0; } - MClientRequest *req = new MClientRequest(symop(CEPH_MDS_OP_UTIME, followsym), - messenger->get_myinst()); + MClientRequest *req = new MClientRequest(symop(CEPH_MDS_OP_UTIME, followsym)); req->set_filepath(path); mtime.encode_timeval(&req->head.args.utime.mtime); atime.encode_timeval(&req->head.args.utime.atime); @@ -2499,7 +2496,7 @@ int Client::_mknod(const filepath &path, mode_t mode, dev_t rdev, int uid, int g { dout(3) << "_mknod(" << path << ", 0" << oct << mode << dec << ", " << rdev << ")" << dendl; - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_MKNOD, messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_MKNOD); req->set_filepath(path); req->head.args.mknod.mode = mode; req->head.args.mknod.rdev = rdev; @@ -2649,7 +2646,7 @@ int Client::_readdir_get_frag(DirResult *dirp) dout(10) << "_readdir_get_frag " << dirp << " on " << dirp->path << " fg " << fg << dendl; - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_READDIR, messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_READDIR); req->set_filepath(dirp->path); req->head.args.readdir.frag = fg; @@ -2865,7 +2862,7 @@ int Client::open(const char *relpath, int flags, mode_t mode) int Client::_open(const filepath &path, int flags, mode_t mode, Fh **fhp, int uid, int gid) { // go - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_OPEN, messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_OPEN); req->set_filepath(path); req->head.args.open.flags = flags; req->head.args.open.mode = mode; @@ -3401,8 +3398,7 @@ int Client::truncate(const char *relpath, loff_t length) int Client::_truncate(const filepath &path, loff_t length, bool followsym, int uid, int gid) { - MClientRequest *req = new MClientRequest(symop(CEPH_MDS_OP_TRUNCATE, followsym), - messenger->get_myinst()); + MClientRequest *req = new MClientRequest(symop(CEPH_MDS_OP_TRUNCATE, followsym)); req->set_filepath(path); req->head.args.truncate.length = length; @@ -3918,7 +3914,7 @@ int Client::ll_setxattr(inodeno_t ino, const char *name, const void *value, size int Client::_setxattr(const filepath &path, const char *name, const void *value, size_t size, int flags, bool followsym, int uid, int gid) { - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_LSETXATTR, messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_LSETXATTR); req->set_filepath(path); req->set_path2(name); req->head.args.setxattr.flags = flags; @@ -3959,7 +3955,7 @@ int Client::ll_removexattr(inodeno_t ino, const char *name, int uid, int gid) int Client::_removexattr(const filepath &path, const char *name, bool followsym, int uid, int gid) { - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_LRMXATTR, messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_LRMXATTR); req->set_filepath(path); MClientReply *reply = make_request(req, uid, gid); diff --git a/src/include/ceph_fs.h b/src/include/ceph_fs.h index 0652a80074be..2b31a569993c 100644 --- a/src/include/ceph_fs.h +++ b/src/include/ceph_fs.h @@ -592,7 +592,6 @@ static inline const char *ceph_mds_op_name(int op) } struct ceph_mds_request_head { - struct ceph_entity_inst client_inst; ceph_tid_t tid, oldest_client_tid; ceph_epoch_t mdsmap_epoch; /* on client */ __le32 num_fwd; @@ -860,7 +859,6 @@ struct ceph_osd_peer_stat { } __attribute__ ((packed)); struct ceph_osd_request_head { - struct ceph_entity_inst client_inst; ceph_tid_t tid; __le32 client_inc; __le32 op; diff --git a/src/kernel/mds_client.c b/src/kernel/mds_client.c index 2c2bd61de0fd..7af143d05347 100644 --- a/src/kernel/mds_client.c +++ b/src/kernel/mds_client.c @@ -965,7 +965,6 @@ ceph_mdsc_create_request(struct ceph_mds_client *mdsc, int op, req->r_direct_hash = -1; /* encode head */ - head->client_inst = mdsc->client->msgr->inst; /* tid, oldest_client_tid set by do_request */ head->mdsmap_epoch = cpu_to_le64(mdsc->mdsmap->m_epoch); head->num_fwd = 0; diff --git a/src/kernel/osd_client.c b/src/kernel/osd_client.c index 2c432be96f47..5e21a8c788c4 100644 --- a/src/kernel/osd_client.c +++ b/src/kernel/osd_client.c @@ -57,7 +57,6 @@ struct ceph_msg *new_request_msg(struct ceph_osd_client *osdc, int op) /* encode head */ head->op = cpu_to_le32(op); - head->client_inst = osdc->client->msgr->inst; head->client_inc = 1; /* always, for now. */ head->flags = 0; diff --git a/src/mds/LogEvent.h b/src/mds/LogEvent.h index 1b04d805d855..3edf2c9bd4ba 100644 --- a/src/mds/LogEvent.h +++ b/src/mds/LogEvent.h @@ -52,7 +52,7 @@ class LogSegment; class LogEvent { private: __u32 _type; - off_t _start_off,_end_off; + loff_t _start_off,_end_off; friend class MDLog; @@ -64,8 +64,8 @@ class LogEvent { virtual ~LogEvent() { } int get_type() { return _type; } - off_t get_start_off() { return _start_off; } - off_t get_end_off() { return _end_off; } + loff_t get_start_off() { return _start_off; } + loff_t get_end_off() { return _end_off; } // encoding virtual void encode(bufferlist& bl) const = 0; diff --git a/src/mds/LogSegment.h b/src/mds/LogSegment.h index b2774c8d3175..1a709367ea40 100644 --- a/src/mds/LogSegment.h +++ b/src/mds/LogSegment.h @@ -47,7 +47,7 @@ class LogSegment { xlist slave_updates; //xlist purging_inodes; - map > purging_inodes; + map > purging_inodes; // committed anchor transactions hash_set pending_commit_atids; diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 02525f25c1e7..dc38c95c3311 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -5198,7 +5198,7 @@ void MDCache::reintegrate_stray(CDentry *straydn, CDentry *rdn) filepath dst; rdn->make_path(dst); - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RENAME, mds->messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RENAME); req->set_filepath(src); req->set_filepath2(dst); req->set_tid(mds->issue_tid()); @@ -5218,7 +5218,7 @@ void MDCache::migrate_stray(CDentry *dn, int from, int to) filepath src(dname, MDS_INO_STRAY(from)); filepath dst(dname, MDS_INO_STRAY(to)); - MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RENAME, mds->messenger->get_myinst()); + MClientRequest *req = new MClientRequest(CEPH_MDS_OP_RENAME); req->set_filepath(src); req->set_filepath2(dst); req->set_tid(mds->issue_tid()); diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 6ae7e70389e7..47a31ef4a96b 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -246,12 +246,12 @@ void MDS::send_message_mds(Message *m, int mds) messenger->send_message(m, mdsmap->get_inst(mds)); } -void MDS::forward_message_mds(Message *req, int mds) +void MDS::forward_message_mds(Message *m, int mds) { // client request? - if (req->get_type() == CEPH_MSG_CLIENT_REQUEST && - ((MClientRequest*)req)->get_client_inst().name.is_client()) { - MClientRequest *creq = (MClientRequest*)req; + if (m->get_type() == CEPH_MSG_CLIENT_REQUEST && + ((MClientRequest*)m)->get_orig_source().is_client()) { + MClientRequest *creq = (MClientRequest*)m; creq->inc_num_fwd(); // inc forward counter /* @@ -265,16 +265,22 @@ void MDS::forward_message_mds(Message *req, int mds) // tell the client where it should go messenger->send_message(new MClientRequestForward(creq->get_tid(), mds, creq->get_num_fwd(), client_must_resend), - creq->get_client_inst()); + creq->get_orig_source_inst()); if (client_must_resend) { - delete req; + delete m; return; } } - - // forward - send_message_mds(req, mds); + + // send mdsmap first? + if (peer_mdsmap_epoch[mds] < mdsmap->get_epoch()) { + messenger->send_message(new MMDSMap(monmap->fsid, mdsmap), + mdsmap->get_inst(mds)); + peer_mdsmap_epoch[mds] = mdsmap->get_epoch(); + } + + messenger->forward_message(m, mdsmap->get_inst(mds)); } diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 986ed1caf933..5d2faf397938 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -564,7 +564,7 @@ void Server::reply_request(MDRequest *mdr, MClientReply *reply, CInode *tracei, // clean up request, drop locks, etc. // do this before replying, so that we can issue leases Session *session = mdr->session; - entity_inst_t client_inst = req->get_client_inst(); + entity_inst_t client_inst = req->get_orig_source_inst(); mdcache->request_finish(mdr); mdr = 0; @@ -663,7 +663,7 @@ void Server::handle_client_request(MClientRequest *req) if (logger) logger->inc("hcreq"); if (!mds->is_active() && - !(mds->is_stopping() && req->get_client_inst().name.is_mds())) { + !(mds->is_stopping() && req->get_orig_source().is_mds())) { dout(5) << " not active (or stopping+mds), discarding request." << dendl; delete req; return; @@ -677,10 +677,10 @@ void Server::handle_client_request(MClientRequest *req) // active session? Session *session = 0; - if (req->get_client_inst().name.is_client()) { - session = mds->sessionmap.get_session(req->get_client_inst().name); + if (req->get_orig_source().is_client()) { + session = mds->sessionmap.get_session(req->get_orig_source()); if (!session) { - dout(5) << "no session for " << req->get_client_inst().name << ", dropping" << dendl; + dout(5) << "no session for " << req->get_orig_source() << ", dropping" << dendl; delete req; return; } @@ -698,7 +698,7 @@ void Server::handle_client_request(MClientRequest *req) assert(session); if (session->have_completed_request(req->get_reqid().tid)) { dout(5) << "already completed " << req->get_reqid() << dendl; - mds->messenger->send_message(new MClientReply(req, 0), req->get_client_inst()); + mds->messenger->send_message(new MClientReply(req, 0), req->get_orig_source_inst()); delete req; return; } @@ -1522,7 +1522,7 @@ void Server::handle_client_stat(MDRequest *mdr) return; mds->balancer->hit_inode(g_clock.now(), ref, META_POP_IRD, - mdr->client_request->get_client_inst().name.num()); + mdr->client_request->get_orig_source().num()); // reply dout(10) << "reply to stat on " << *req << dendl; @@ -1818,7 +1818,7 @@ void Server::handle_client_removexattr(MDRequest *mdr) void Server::handle_client_readdir(MDRequest *mdr) { MClientRequest *req = mdr->client_request; - int client = req->get_client().num(); + int client = req->get_orig_source().num(); CInode *diri = rdlock_path_pin_ref(mdr, false, true); // rdlock dirfragtreelock! if (!diri) return; @@ -4413,7 +4413,7 @@ void Server::_do_open(MDRequest *mdr, CInode *cur) mds->balancer->hit_inode(mdr->now, cur, META_POP_IWR); else mds->balancer->hit_inode(mdr->now, cur, META_POP_IRD, - mdr->client_request->get_client_inst().name.num()); + mdr->client_request->get_orig_source().num()); // reply MClientReply *reply = new MClientReply(req, 0); diff --git a/src/messages/MClientRequest.h b/src/messages/MClientRequest.h index 0ca4e53c03c2..a5a2f9c79f77 100644 --- a/src/messages/MClientRequest.h +++ b/src/messages/MClientRequest.h @@ -61,11 +61,9 @@ public: public: // cons MClientRequest() : Message(CEPH_MSG_CLIENT_REQUEST) {} - MClientRequest(int op, entity_inst_t ci) : Message(CEPH_MSG_CLIENT_REQUEST) { + MClientRequest(int op) : Message(CEPH_MSG_CLIENT_REQUEST) { memset(&head, 0, sizeof(head)); this->head.op = op; - this->head.client_inst.name = ci.name; - this->head.client_inst.addr = ci.addr; } void set_mdsmap_epoch(epoch_t e) { head.mdsmap_epoch = e; } @@ -73,7 +71,7 @@ public: metareqid_t get_reqid() { // FIXME: for now, assume clients always have 1 incarnation - return metareqid_t(head.client_inst.name, head.tid); + return metareqid_t(get_orig_source(), head.tid); } bool open_file_mode_is_readonly() { @@ -111,14 +109,6 @@ public: void set_mds_wants_replica_in_dirino(inodeno_t dirino) { head.mds_wants_replica_in_dirino = dirino; } - void set_client_inst(const entity_inst_t& i) { - head.client_inst.name = i.name; - head.client_inst.addr = i.addr; - } - entity_inst_t get_client_inst() { - return entity_inst_t(head.client_inst); - } - entity_name_t get_client() { return head.client_inst.name; } tid_t get_tid() { return head.tid; } tid_t get_oldest_client_tid() { return head.oldest_client_tid; } int get_num_fwd() { return head.num_fwd; } @@ -158,7 +148,7 @@ public: const char *get_type_name() { return "creq"; } void print(ostream& out) { - out << "client_request(" << get_client() + out << "client_request(" << get_orig_source() << "." << get_tid() << " " << ceph_mds_op_name(get_op()); //if (!get_filepath().empty()) diff --git a/src/messages/MOSDOp.h b/src/messages/MOSDOp.h index 64f88f1a14c8..897f1aac6616 100644 --- a/src/messages/MOSDOp.h +++ b/src/messages/MOSDOp.h @@ -65,16 +65,12 @@ private: friend class MOSDOpReply; public: - osd_reqid_t get_reqid() { return osd_reqid_t(head.client_inst.name, + osd_reqid_t get_reqid() { return osd_reqid_t(get_orig_source(), head.client_inc, head.tid); } int get_client_inc() { return head.client_inc; } tid_t get_client_tid() { return head.tid; } - entity_name_t get_client() { return head.client_inst.name; } - entity_inst_t get_client_inst() { return head.client_inst; } - void set_client_addr(const entity_addr_t& a) { head.client_inst.addr = a; } - object_t get_oid() { return object_t(head.oid); } pg_t get_pg() { return pg_t(head.layout.ol_pgid); } ceph_object_layout get_layout() { return head.layout; } @@ -101,13 +97,11 @@ public: - MOSDOp(entity_inst_t asker, int inc, long tid, + MOSDOp(int inc, long tid, object_t oid, ceph_object_layout ol, epoch_t mapepoch, int op, int flags) : Message(CEPH_MSG_OSD_OP) { memset(&head, 0, sizeof(head)); - head.client_inst.name = asker.name; - head.client_inst.addr = asker.addr; head.tid = tid; head.client_inc = inc; head.oid = oid; diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 08ed895c1401..2df6af9410d6 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -1330,7 +1330,7 @@ bool PG::block_if_wrlocked(MOSDOp* op) //dout(0) << "getattr returns " << len << " on " << oid << dendl; if (len == sizeof(source) && - source != op->get_client()) { + source != op->get_orig_source()) { //the object is locked for writing by someone else -- add the op to the waiting queue waiting_for_wr_unlock[poid.oid].push_back(op); return true; diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index c8e452aab405..f1f7829cf1b6 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -118,8 +118,9 @@ bool ReplicatedPG::preprocess_op(MOSDOp *op, utime_t now) if (false) { if (acting.size() > 1) { int peer = acting[1]; - dout(-10) << "preprocess_op fwd client read op to osd" << peer << " for " << op->get_client() << " " << op->get_client_inst() << dendl; - osd->messenger->send_message(op, osd->osdmap->get_inst(peer)); + dout(-10) << "preprocess_op fwd client read op to osd" << peer + << " for " << op->get_orig_source() << " " << op->get_orig_source_inst() << dendl; + osd->messenger->forward_message(op, osd->osdmap->get_inst(peer)); return true; } } @@ -160,7 +161,7 @@ bool ReplicatedPG::preprocess_op(MOSDOp *op, utime_t now) ceph_object_layout layout; layout.ol_pgid = info.pgid.u.pg64; layout.ol_stripe_unit = 0; - MOSDOp *pop = new MOSDOp(osd->messenger->get_myinst(), 0, osd->get_tid(), + MOSDOp *pop = new MOSDOp(0, osd->get_tid(), oid, layout, osd->osdmap->get_epoch(), @@ -174,7 +175,7 @@ bool ReplicatedPG::preprocess_op(MOSDOp *op, utime_t now) ceph_object_layout layout; layout.ol_pgid = info.pgid.u.pg64; layout.ol_stripe_unit = 0; - MOSDOp *pop = new MOSDOp(osd->messenger->get_myinst(), 0, osd->get_tid(), + MOSDOp *pop = new MOSDOp(0, osd->get_tid(), oid, layout, osd->osdmap->get_epoch(), @@ -315,7 +316,7 @@ bool ReplicatedPG::preprocess_op(MOSDOp *op, utime_t now) << " " << op->get_reqid() << dendl; op->set_peer_stat(osd->my_stat); - osd->messenger->send_message(op, osd->osdmap->get_inst(shedto)); + osd->messenger->forward_message(op, osd->osdmap->get_inst(shedto)); osd->stat_rd_ops_shed_out++; osd->logger->inc("shdout"); return true; @@ -336,7 +337,7 @@ bool ReplicatedPG::preprocess_op(MOSDOp *op, utime_t now) if (osd->store->getattr(info.pgid, poid, "balance-reads", &v, 1) < 0) { dout(-10) << "preprocess_op in-cache but no balance-reads on " << oid << ", fwd to primary" << dendl; - osd->messenger->send_message(op, osd->osdmap->get_inst(get_primary())); + osd->messenger->forward_message(op, osd->osdmap->get_inst(get_primary())); return true; } } @@ -497,7 +498,7 @@ void ReplicatedPG::op_read(MOSDOp *op) osd->store->getattr(info.pgid, poid, "balance-reads", &b, 1) < 0) { dout(-10) << "read on replica, object " << poid << " dne or no balance-reads, fw back to primary" << dendl; - osd->messenger->send_message(op, osd->osdmap->get_inst(get_acker())); + osd->messenger->forward_message(op, osd->osdmap->get_inst(get_acker())); return; } } @@ -582,7 +583,7 @@ void ReplicatedPG::op_read(MOSDOp *op) } // send it - osd->messenger->send_message(reply, op->get_client_inst()); + osd->messenger->send_message(reply, op->get_orig_source_inst()); delete op; } @@ -859,7 +860,7 @@ void ReplicatedPG::put_rep_gather(RepGather *repop) // send commit. MOSDOpReply *reply = new MOSDOpReply(repop->op, 0, osd->osdmap->get_epoch(), true); dout(10) << "put_repop sending commit on " << *repop << " " << reply << dendl; - osd->messenger->send_message(reply, repop->op->get_client_inst()); + osd->messenger->send_message(reply, repop->op->get_orig_source_inst()); repop->sent_commit = true; } } @@ -874,7 +875,7 @@ void ReplicatedPG::put_rep_gather(RepGather *repop) // send ack MOSDOpReply *reply = new MOSDOpReply(repop->op, 0, osd->osdmap->get_epoch(), false); dout(10) << "put_repop sending ack on " << *repop << " " << reply << dendl; - osd->messenger->send_message(reply, repop->op->get_client_inst()); + osd->messenger->send_message(reply, repop->op->get_orig_source_inst()); repop->sent_ack = true; } @@ -1161,7 +1162,7 @@ void ReplicatedPG::op_modify(MOSDOp *op) dout(10) << " inc_lock " << cur << " > " << op->get_inc_lock() << " on " << poid << dendl; MOSDOpReply *reply = new MOSDOpReply(op, -EINCLOCKED, osd->osdmap->get_epoch(), true); - osd->messenger->send_message(reply, op->get_client_inst()); + osd->messenger->send_message(reply, op->get_orig_source_inst()); delete op; return; } @@ -1181,7 +1182,7 @@ void ReplicatedPG::op_modify(MOSDOp *op) ceph_object_layout layout; layout.ol_pgid = info.pgid.u.pg64; layout.ol_stripe_unit = 0; - MOSDOp *pop = new MOSDOp(osd->messenger->get_myinst(), 0, osd->get_tid(), + MOSDOp *pop = new MOSDOp(0, osd->get_tid(), poid.oid, layout, osd->osdmap->get_epoch(), diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index be8ddc3ec0ff..a432677acc05 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -374,7 +374,7 @@ tid_t Objecter::stat_submit(OSDStat *st) int flags = st->flags; if (st->onfinish) flags |= CEPH_OSD_OP_ACK; - MOSDOp *m = new MOSDOp(messenger->get_myinst(), client_inc, last_tid, + MOSDOp *m = new MOSDOp(client_inc, last_tid, ex.oid, ex.layout, osdmap->get_epoch(), CEPH_OSD_OP_STAT, flags); if (inc_lock > 0) { @@ -502,7 +502,7 @@ tid_t Objecter::readx_submit(OSDRead *rd, ObjectExtent &ex, bool retry) if (pg.acker() >= 0) { int flags = rd->flags; if (rd->onfinish) flags |= CEPH_OSD_OP_ACK; - MOSDOp *m = new MOSDOp(messenger->get_myinst(), client_inc, last_tid, + MOSDOp *m = new MOSDOp(client_inc, last_tid, ex.oid, ex.layout, osdmap->get_epoch(), CEPH_OSD_OP_READ, flags); if (inc_lock > 0) { @@ -805,7 +805,7 @@ tid_t Objecter::modifyx_submit(OSDModify *wr, ObjectExtent &ex, tid_t usetid) << " osd" << pg.primary() << dendl; if (pg.primary() >= 0) { - MOSDOp *m = new MOSDOp(messenger->get_myinst(), client_inc, tid, + MOSDOp *m = new MOSDOp(client_inc, tid, ex.oid, ex.layout, osdmap->get_epoch(), wr->op, flags); if (inc_lock > 0) { -- 2.47.3