• Al Viro's avatar
    deal with deadlock in d_walk() · a91da0b3
    Al Viro authored
    commit ca5358ef upstream.
    
    ... by not hitting rename_retry for reasons other than rename having
    happened.  In other words, do _not_ restart when finding that
    between unlocking the child and locking the parent the former got
    into __dentry_kill().  Skip the killed siblings instead...
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2:
     - As we only have try_to_ascend() and not d_walk(), apply this
       change to all callers of try_to_ascend()
     - Adjust context to make __dentry_kill() apply to d_kill()]
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    [lizf: Backported to 3.4: fold the fix 2d5a2e67 in 3.2.y into this patch]
    Signed-off-by: default avatarZefan Li <lizefan@huawei.com>
    a91da0b3
dcache.c 78.8 KB