From e59385f16afc607ec700397b0bea5229ce69df30 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Fri, 2 Sep 2016 16:19:29 +0800 Subject: [PATCH] client: properly set inode number of created inode in replay request Fixes: http://tracker.ceph.com/issues/17172 Signed-off-by: Yan, Zheng --- src/client/Client.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index 4af0fe0f8aa94..0125e04c8b551 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -1531,7 +1531,7 @@ int Client::verify_reply_trace(int r, *pcreated = got_created_ino; if (request->target) { - ptarget->swap(request->target); + *ptarget = request->target; ldout(cct, 20) << "make_request target is " << *ptarget->get() << dendl; } else { if (got_created_ino && (p = inode_map.find(vinodeno_t(created_ino, CEPH_NOSNAP))) != inode_map.end()) { @@ -2106,6 +2106,8 @@ void Client::send_request(MetaRequest *request, MetaSession *session, } if (request->got_unsafe) { r->set_replayed_op(); + if (request->target) + r->head.ino = request->target->ino; } else { encode_cap_releases(request, mds); if (drop_cap_releases) // we haven't send cap reconnect yet, drop cap releases