]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
* fixed bug with lost waiters on null dentries (e.g. mknod race)
authorsageweil <sageweil@29311d96-e01e-0410-9327-a35deaab8ce9>
Fri, 16 Mar 2007 00:21:18 +0000 (00:21 +0000)
committersageweil <sageweil@29311d96-e01e-0410-9327-a35deaab8ce9>
Fri, 16 Mar 2007 00:21:18 +0000 (00:21 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1251 29311d96-e01e-0410-9327-a35deaab8ce9

trunk/ceph/mds/Locker.cc

index 7cecbfe785fbc6eac73f55adc211669bdf2d2ceb..d60f58011efac447ae06706e0ad8b5d94f822fb4 100644 (file)
@@ -1850,8 +1850,14 @@ void Locker::dentry_xlock_finish(CDentry *dn, bool quiet)
   
   // unpin dir
   dn->dir->auth_unpin();
+
+  // kick waiters
+  list<Context*> finished;
+  dn->dir->take_waiting(CDIR_WAIT_DNREAD, finished);
+  mds->queue_finished(finished);
 }
 
+
 /*
  * onfinish->finish() will be called with 
  * 0 on successful xlock,