• Miklos Szeredi's avatar
    vfs: dcache: use DCACHE_DENTRY_KILLED instead of DCACHE_DISCONNECTED in d_kill() · b161dfa6
    Miklos Szeredi authored
    IBM reported a soft lockup after applying the fix for the rename_lock
    deadlock.  Commit c83ce989 ("VFS: Fix the nfs sillyrename regression
    in kernel 2.6.38") was found to be the culprit.
    
    The nfs sillyrename fix used DCACHE_DISCONNECTED to indicate that the
    dentry was killed.  This flag can be set on non-killed dentries too,
    which results in infinite retries when trying to traverse the dentry
    tree.
    
    This patch introduces a separate flag: DCACHE_DENTRY_KILLED, which is
    only set in d_kill() and makes try_to_ascend() test only this flag.
    
    IBM reported successful test results with this patch.
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
    Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b161dfa6
dcache.c 80.4 KB