From 97abcdd1c7eb50786d3f813af96a0e9ef0bec25d Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Wed, 4 Feb 2015 12:47:36 +0800 Subject: [PATCH] mds: properly record created inode in completed requests list current code does not handle case that inode is allocated from session's preallocated inodes Signed-off-by: Yan, Zheng --- src/mds/Server.cc | 6 ++++-- src/mds/journal.cc | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index ce56c7e716175..877eac86dcb43 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -1049,8 +1049,10 @@ void Server::reply_client_request(MDRequestRef& mdr, MClientReply *reply) mdr->mark_event("replying"); // note successful request in session map? - if (req->may_write() && mdr->session && reply->get_result() == 0) - mdr->session->add_completed_request(mdr->reqid.tid, mdr->alloc_ino); + if (req->may_write() && mdr->session && reply->get_result() == 0) { + inodeno_t created = mdr->alloc_ino ? mdr->alloc_ino : mdr->used_prealloc_ino; + mdr->session->add_completed_request(mdr->reqid.tid, created); + } // give any preallocated inos to the session apply_allocated_inos(mdr); diff --git a/src/mds/journal.cc b/src/mds/journal.cc index c0530bc87076c..bbb033eafafe5 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -1572,13 +1572,13 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg, MDSlaveUpdate *slaveup) ++p) { if (p->first.name.is_client()) { dout(10) << "EMetaBlob.replay request " << p->first << " trim_to " << p->second << dendl; - + inodeno_t created = allocated_ino ? allocated_ino : used_preallocated_ino; // if we allocated an inode, there should be exactly one client request id. - assert(allocated_ino == inodeno_t() || client_reqs.size() == 1); + assert(created == inodeno_t() || client_reqs.size() == 1); Session *session = mds->sessionmap.get_session(p->first.name); if (session) { - session->add_completed_request(p->first.tid, allocated_ino); + session->add_completed_request(p->first.tid, created); if (p->second) session->trim_completed_requests(p->second); } -- 2.39.5