From: Yan, Zheng Date: Fri, 2 Sep 2016 08:19:29 +0000 (+0800) Subject: client: properly set inode number of created inode in replay request X-Git-Tag: v10.2.4~68^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=5173563fbfc2799cc2328468bb197d65a94b4d7a;p=ceph.git 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) --- diff --git a/src/client/Client.cc b/src/client/Client.cc index b465cadec55f2..c8bba1ee9a827 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