[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+icZUXhYVMDV3-aJPYsHfJ1hLFYcUiEwJ9n5sOp06_Z2p=yYw@mail.gmail.com>
Date: Fri, 30 May 2014 19:15:56 +0200
From: Sedat Dilek <sedat.dilek@...il.com>
To: Al Viro <viro@...iv.linux.org.uk>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>,
Mika Westerberg <mika.westerberg@...ux.intel.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Miklos Szeredi <mszeredi@...e.cz>,
linux-fsdevel <linux-fsdevel@...r.kernel.org>
Subject: Re: [git pull] Re: fs/dcache.c - BUG: soft lockup - CPU#5 stuck for
22s! [systemd-udevd:1667]
On Fri, May 30, 2014 at 6:48 PM, Al Viro <viro@...iv.linux.org.uk> wrote:
> On Fri, May 30, 2014 at 08:31:30AM -0700, Linus Torvalds wrote:
>> On Fri, May 30, 2014 at 8:21 AM, Al Viro <viro@...iv.linux.org.uk> wrote:
>> >
>> > Linus, how would you prefer it to be handled?
>>
>> I'll just have to do an rc8. I really hoped to avoid it, because we're
>> going on our family vacation when school is out in two weeks, and it
>> causes problems for the merge window, but it's not like there is much
>> choice - I can't do a 3.15 release with a known regression like that.
>
> Sorry about that... ;-/
>
>> So just send me the pull request, and I'll pull it. I'll probably do
>> the "let's increase the x86-64 stack size to 16kB" too, to close
>> _that_ issue as well.
>
> OK, here it is:
>
> 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. 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".
> Please, pull from
> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-linus-2
>
> Shortlog:
> Al Viro (8):
> 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
> d_prune_alias(): just lock the parent and call __dentry_kill()
> dcache.c: call ->d_prune() regardless of d_unhashed()
>
> Diffstat:
> fs/dcache.c | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
> 1 file changed, 115 insertions(+), 61 deletions(-)
>
Did you push all?
$ git log --oneline v3.15-rc7..
8cbf74d dentry_kill() doesn't need the second argument now
b2b8019 dealing with the rest of shrink_dentry_list() livelock
046b961 shrink_dentry_list(): take parent's ->d_lock earlier
ff2fde9 expand dentry_kill(dentry, 0) in shrink_dentry_list()
e55fd01 split dentry_kill()
64fd72e lift the "already marked killed" case into shrink_dentry_list()
b6dd6f4 vfs: fix vmplice_to_user()
- Sedat -
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists