From: Yan, Zheng Date: Tue, 26 Nov 2013 02:31:07 +0000 (+0800) Subject: mds: send info of imported caps back to the exporter (rename) X-Git-Tag: v0.75~93^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ef902ee0b99f83b0396bfb1b3d3ba3e29cd31859;p=ceph.git mds: send info of imported caps back to the exporter (rename) use MMDSSlaveRequest::OP_FINISH slave request to send information of rename imported caps back to the exporter. This is preparation for including counterpart's information in cap import/export message. Signed-off-by: Yan, Zheng --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index d2942708fdbb..21289a1b3346 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -8738,6 +8738,12 @@ void MDCache::request_drop_foreign_locks(MDRequest *mdr) ++p) { MMDSSlaveRequest *r = new MMDSSlaveRequest(mdr->reqid, mdr->attempt, MMDSSlaveRequest::OP_FINISH); + + // information about rename imported caps + if (mdr->more()->srcdn_auth_mds == *p && + mdr->more()->inode_import.length() > 0) + r->inode_export.claim(mdr->more()->inode_import); + mds->send_message_mds(r, *p); } diff --git a/src/mds/Server.cc b/src/mds/Server.cc index f746927ce98c..1d249403ddb7 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -1585,6 +1585,9 @@ void Server::dispatch_slave_request(MDRequest *mdr) break; case MMDSSlaveRequest::OP_FINISH: + // information about rename imported caps + if (mdr->slave_request->inode_export.length() > 0) + mdr->more()->inode_import.claim(mdr->slave_request->inode_export); // finish off request. mdcache->request_finish(mdr); break; @@ -6341,6 +6344,10 @@ void Server::_rename_apply(MDRequest *mdr, CDentry *srcdn, CDentry *destdn, CDen mdr->more()->cap_imports[destdnl->get_inode()], imported_caps); } + + mdr->more()->inode_import.clear(); + ::encode(imported_caps, mdr->more()->inode_import); + /* hack: add an auth pin for each xlock we hold. These were * remote xlocks previously but now they're local and * we're going to try and unpin when we xlock_finish. */ @@ -6722,6 +6729,10 @@ void Server::_commit_slave_rename(MDRequest *mdr, int r, mds->locker->xlock_export(lock, mdr); } + map peer_imported; + bufferlist::iterator bp = mdr->more()->inode_import.begin(); + ::decode(peer_imported, bp); + dout(10) << " finishing inode export on " << *destdnl->get_inode() << dendl; mdcache->migrator->finish_export_inode(destdnl->get_inode(), mdr->now, finished); mds->queue_waiters(finished); // this includes SINGLEAUTH waiters.