]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: flush log when we hit xlock during path traversal
authorSage Weil <sage@inktank.com>
Fri, 8 Mar 2013 20:57:58 +0000 (12:57 -0800)
committerSage Weil <sage@inktank.com>
Wed, 13 Mar 2013 23:36:56 +0000 (16:36 -0700)
This ensures we don't stall out waiting for a lock state to change.

This fixes ~4-5 second stalls easily reproducible and visible with
ceph-fuse and 'dbench 1'.

Signed-off-by: Sage Weil <sage@inktank.com>
src/mds/MDCache.cc

index c85627a4ab4328c7205d68707e8b4064d773535f..82efd0b7b02399ec60061915ee8fd7c085285a86 100644 (file)
@@ -6991,6 +6991,7 @@ int MDCache::path_traverse(MDRequest *mdr, Message *req, Context *fin,     // wh
       dout(10) << "traverse: xlocked dentry at " << *dn << dendl;
       dn->lock.add_waiter(SimpleLock::WAIT_RD, _get_waiter(mdr, req, fin));
       if (mds->logger) mds->logger->inc(l_mds_tlock);
+      mds->mdlog->flush();
       return 1;
     }