]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: drop auth pins before waiting for dir unfreeze
authorYan, Zheng <zheng.z.yan@intel.com>
Mon, 3 Mar 2014 02:03:35 +0000 (10:03 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Wed, 19 Mar 2014 03:35:56 +0000 (11:35 +0800)
Otherwise deadlock can happen

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/Server.cc

index 702ab1f4452a1e09b243fc9dae47e470d8d65c0c..dfb44cb45b02d3230cfa71707eeebc6e5bc5e3df 100644 (file)
@@ -2838,6 +2838,8 @@ void Server::handle_client_readdir(MDRequest *mdr)
   if (!dir->is_complete()) {
     if (dir->is_frozen()) {
       dout(7) << "dir is frozen " << *dir << dendl;
+      mds->locker->drop_locks(mdr);
+      mdr->drop_local_auth_pins();
       dir->add_waiter(CDir::WAIT_UNFREEZE, new C_MDS_RetryRequest(mdcache, mdr));
       return;
     }