diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-05-30 09:52:55 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-05-30 09:52:55 -0700 |
commit | 6f6111e4a73d0f6370eb8be4f8e4523210b6a67d (patch) | |
tree | 18348a2d6793d637f913e25adca67287fdab24d0 /arch/x86 | |
parent | fe45736f4134b9656c656ac5e15b915192f2704a (diff) | |
parent | 8cbf74da435d1bd13dbb790f94c7ff67b2fb6af4 (diff) |
Merge branch 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs dcache livelock fix from Al Viro:
"Fixes for livelocks in shrink_dentry_list() introduced by fixes to
shrink list corruption; the root cause was that trylock of parent's
->d_lock could be disrupted by d_walk() happening on other CPUs,
resulting in shrink_dentry_list() making no progress *and* the same
d_walk() being called again and again for as long as
shrink_dentry_list() doesn't get past that mess.
The solution is to have shrink_dentry_list() treat that trylock
failure not as 'try to do the same thing again', but 'lock them in the
right order'"
* 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
dentry_kill() doesn't need the second argument now
dealing with the rest of shrink_dentry_list() livelock
shrink_dentry_list(): take parent's ->d_lock earlier
expand dentry_kill(dentry, 0) in shrink_dentry_list()
split dentry_kill()
lift the "already marked killed" case into shrink_dentry_list()
Diffstat (limited to 'arch/x86')
0 files changed, 0 insertions, 0 deletions