From 5173563fbfc2799cc2328468bb197d65a94b4d7a 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 (cherry picked from commit e59385f16afc607ec700397b0bea5229ce69df30) --- 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 b465cadec55f..c8bba1ee9a82 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -1552,7 +1552,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()) { @@ -2126,6 +2126,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 -- 2.47.3