Re: fs/dcache.c - BUG: soft lockup - CPU#5 stuck for 22s! [systemd-udevd:1667]

From: Al Viro
Date: Fri May 30 2014 - 11:22:17 EST


On Fri, May 30, 2014 at 11:12:38AM +0300, Mika Westerberg wrote:

> Tested your latest #for-linus from here:
>
> https://git.kernel.org/cgit/linux/kernel/git/viro/vfs.git/log/?h=for-linus
>
> and the livelock is gone,
>
> Tested-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
>
> Thanks again!

OK... I've just pushed another branch (#for-linus-2) with lock_parent()
change folded into the commit that used to introduce rename_lock-based
variant. Heads of the branches are byte-for-byte identical:

al@duke:~/linux/trees/vfs$ git log vfs/for-linus|head -1
commit ebc6cb92bfeddf25462842f64604bc9fd2aab5b0
al@duke:~/linux/trees/vfs$ git log vfs/for-linus-2|head -1
commit 8cbf74da435d1bd13dbb790f94c7ff67b2fb6af4
al@duke:~/linux/trees/vfs$ git diff ebc6cb92bfeddf25462842f64604bc9fd2aab5b0 8cbf74da435d1bd13dbb790f94c7ff67b2fb6af4
al@duke:~/linux/trees/vfs$

so testing done on one of them obviously applies to another. FWIW, on
#for-linus-2 we have
Shortlog:
Al Viro (6):
lift the "already marked killed" case into shrink_dentry_list()
split dentry_kill()
expand dentry_kill(dentry, 0) in shrink_dentry_list()
shrink_dentry_list(): take parent's ->d_lock earlier
dealing with the rest of shrink_dentry_list() livelock
dentry_kill() doesn't need the second argument now

Diffstat:
fs/dcache.c | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
1 file changed, 107 insertions(+), 46 deletions(-)

Linus, how would you prefer it to be handled?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/