summaryrefslogtreecommitdiffstats
path: root/fs/coda
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2014-05-29 09:11:45 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2014-05-30 11:10:33 -0400
commitb2b80195d8829921506880f6dccd21cabd163d0d (patch)
tree4c0845c5bdbcfba145459fb1a5f9853f762fb64c /fs/coda
parent046b961b45f93a92e4c70525a12f3d378bced130 (diff)
downloadlinux-b2b80195d8829921506880f6dccd21cabd163d0d.tar.bz2
dealing with the rest of shrink_dentry_list() livelock
We have the same problem with ->d_lock order in the inner loop, where we are dropping references to ancestors. Same solution, basically - instead of using dentry_kill() we use lock_parent() (introduced in the previous commit) to get that lock in a safe way, recheck ->d_count (in case if lock_parent() has ended up dropping and retaking ->d_lock and somebody managed to grab a reference during that window), trylock the inode->i_lock and use __dentry_kill() to do the rest. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/coda')
0 files changed, 0 insertions, 0 deletions