• David Woodhouse's avatar
    [PATCH] Copy XFS readdir hack into nfsd code. · 14f7dd63
    David Woodhouse authored
    Some file systems with their own internal locking have problems with the
    way that nfsd calls the ->lookup() method from within a filldir function
    called from their ->readdir() method. The recursion back into the file
    system code can cause deadlock.
    
    XFS has a fairly hackish solution to this which involves doing the
    readdir() into a locally-allocated buffer, then going back through it
    calling the filldir function afterwards. It's not ideal, but it works.
    
    It's particularly suboptimal because XFS does this for local file
    systems too, where it's completely unnecessary.
    
    Copy this hack into the NFS code where it can be used only for NFS
    export. In response to feedback, use it unconditionally rather than only
    for the affected file systems.
    Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    14f7dd63
vfs.c 51.3 KB