• S
    ceph: delay umount until all mds requests drop inode+dentry refs · 17c688c3
    Sage Weil 提交于
    This fixes a race between handle_reply finishing an mds request, signalling
    completion, and then dropping the request structing and its dentry+inode
    refs, and pre_umount function waiting for requests to finish before
    letting the vfs tear down the dcache.  If umount was delayed waiting for
    mds requests, we could race and BUG in shrink_dcache_for_umount_subtree
    because of a slow dput.
    
    This delays umount until the msgr queue flushes, which means handle_reply
    will exit and will have dropped the ceph_mds_request struct.  I'm assuming
    the VFS has already ensured that its calls have all completed and those
    request refs have thus been dropped as well (I haven't seen that race, at
    least).
    Signed-off-by: NSage Weil <sage@newdream.net>
    17c688c3
mds_client.c 78.8 KB