[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180313005010.GV30522@ZenIV.linux.org.uk>
Date: Tue, 13 Mar 2018 00:50:11 +0000
From: Al Viro <viro@...IV.linux.org.uk>
To: "Eric W. Biederman" <ebiederm@...ssion.com>
Cc: John Ogness <john.ogness@...utronix.de>,
Linus Torvalds <torvalds@...ux-foundation.org>,
linux-fsdevel <linux-fsdevel@...r.kernel.org>,
Christoph Hellwig <hch@....de>,
Thomas Gleixner <tglx@...utronix.de>,
Peter Zijlstra <peterz@...radead.org>,
Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: dcache: remove trylock loops (was Re: [BUG] lock_parent()
breakage when used from shrink_dentry_list())
On Tue, Mar 13, 2018 at 12:37:51AM +0000, Al Viro wrote:
> On Mon, Mar 12, 2018 at 06:52:31PM -0500, Eric W. Biederman wrote:
>
> > Ah. I see now there is now the s_roots list that handles
> > that bit of strangeness.
> >
> > So one path is to simply remove the heuristic from
> > path_connected.
> >
> > Another path is to have nfsv2 and nfsv3 not set s_root at all.
> > Leaving the heuristic working for the rest of the filesystems,
> > and generally simplifying the code.
> >
> > Something like the diff below I should think.
>
> > + /* Leave nfsv2 and nfsv3 s_root == NULL */
>
> Now, grep fs/super.c for s_root. Or try to boot it, for that
> matter...
BTW, if rename happens on server and we step into directory
we'd already seen in one subtree while doing a lookup in
another, we will get it moved around. Without having the
subtrees ever connected in dcache on client. So adding
&& IS_ROOT(sb->s_root) to the test also won't work.
Powered by blists - more mailing lists