From: "William H. Taber" <wtaber@us.ibm.com>
To: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: Badari Pulavarty <pbadari@gmail.com>, Ian Kent <raven@themaw.net>,
Ram Pai <linuxram@us.ibm.com>,
autofs mailing list <autofs@linux.kernel.org>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
Al Viro <viro@ftp.linux.org.uk>,
smaneesh@in.ibm.com
Subject: Re: [RFC PATCH]autofs4: hang and proposed fix
Date: Wed, 30 Nov 2005 16:10:26 -0500 [thread overview]
Message-ID: <438E1542.5070208@us.ibm.com> (raw)
In-Reply-To: <1133370251.8625.38.camel@lade.trondhjem.org>
Trond Myklebust wrote:
> On Wed, 2005-11-30 at 08:49 -0800, Badari Pulavarty wrote:
>
>>On Wed, 2005-11-30 at 09:02 -0500, Ian Kent wrote:
>>
>>>On Tue, 29 Nov 2005, William H. Taber wrote:
>>>
>>>
>>>>Ian Kent wrote:
>>>>
>>>>>We'll need to do an analysis of all callers of the revalidate method.
>>>>
>>>>You are right. Searching through the sources, it would appear that I
>>>>missed fixing autofs and devfs. Everyone else just defines a revalidate
>>>>routine but doesn't call one. You may find devfs to be interesting
>>>>because they have code to determine whether they need to release the
>>>>i_sem lock or not. I am working on an updated patch to include the
>>>>changes needed for these two modules.
>>>
>>>I've looked at devfs before but that bit of code sounds interesting to me.
>>>
>>>The other thing that concerns me is that we may be increasing the latency
>>>of some code paths that need to be really fast. I was thinking that
>>>perhaps it might be good to try a change more in line with the locking
>>>used in link_patch_walk (ie. i_sem free revalidate) rather than that used
>>>in lookup_one_len. My only justification being that lookup is called to
>>>create stuff where revalidate is called to check stuff. I've been
>>>poking around and this change looks fairly difficult as well (I seem to
>>>remember you also looked at this).
>>>
>>>Anyway, I'm keen to have a look at your patch.
>>>Thanks much for your interest and help.
>>>
>>>Ian
>>>
>>
>>Again, I am posting Will's latest patch on his behalf.
>>
>>Any thoughts on how acceptable are the VFS changes ?
>
>
> That will slow link_path_walk() for commonly accessed shared directories
> (/lib, /usr/share,...) down to a crawl.
>
> Instead of having lock-free lookups of cached dentries, you are suddenly
> serialising everybody in the parent directory.
>
> Cheers,
> Trond
>
Fair enough. But what do we do? The original problem was that we were
seeing deadlocks on /net because the autofs was not releasing the parent
i_sem when it pended in its revalidate routine. There was a race in
which a process could be waiting on the revalidate before the automount
demon ran but the automount demon needed the parent i_sem to be able to
do the mount.
I was proposing this patch to make it easy for the automounter (and
devfs) to be able to release the parent i_sem if they were going to
pend. But as I described in a previous post, I am not sure that it is
safe in the case of a rename, to allow a filesystem to release the
parent i_sem in any event. Oops. I missed the s_vfs_rename_sem in the
superblock which serializes renames on a given filesystem. And since
renames across filesystems are not allowed, I guess it shouldn't be a
problem after all.
So I guess that a sufficient fix is for the autofs to add code similar
to that in devfs so that the revalidate code can decide whether or not
it needs to release the parent i_sem. The best fix would be to take the
code out of devfs and put it into fs/namei.c as an exported function (or
into fs.h as an inline function) so that it only has to be changed in
one place the next time the lookup code changes. It may be an ugly fix
but the alternative is to be consistent in our locking when we call
d_revalidate and I don't see an easy solution to that problem.
Will
next prev parent reply other threads:[~2005-11-30 21:10 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-16 10:17 [RFC PATCH]autofs4: hang and proposed fix Ram Pai
2005-11-16 12:41 ` [autofs] " Ian Kent
2005-11-16 16:50 ` Ram Pai
2005-11-16 22:57 ` Ian Kent
2005-11-17 1:52 ` [autofs] " Ram Pai
2005-11-17 18:50 ` Ian Kent
2005-11-17 19:19 ` William H. Taber
2005-11-17 20:39 ` Ram Pai
2005-11-17 22:31 ` William H. Taber
2005-11-18 14:57 ` Ian Kent
2005-11-18 14:54 ` Ian Kent
2005-11-18 14:44 ` Ian Kent
2005-11-18 15:20 ` William H. Taber
2005-11-18 16:30 ` Ian Kent
2005-11-18 17:12 ` William H. Taber
2005-11-18 18:57 ` Ram Pai
2005-11-18 20:08 ` William H. Taber
2005-11-19 2:52 ` Ian Kent
2005-11-21 16:40 ` William H. Taber
2005-11-22 13:13 ` Ian Kent
2005-11-22 17:48 ` [autofs] " William H. Taber
2005-11-23 14:11 ` Ian Kent
2005-11-23 16:42 ` William H. Taber
2005-11-23 17:52 ` Ian Kent
2005-11-23 18:47 ` William H. Taber
2005-11-23 17:52 ` Ian Kent
2005-11-19 1:40 ` [autofs] " Ian Kent
2005-11-16 15:22 ` Jeff Moyer
2005-11-16 15:22 ` Jeff Moyer
2005-11-16 17:00 ` [autofs] " Ram Pai
2005-11-16 18:25 ` Jeff Moyer
2005-11-16 19:24 ` William H. Taber
2005-11-16 19:51 ` Ram Pai
2005-11-27 10:47 ` Ian Kent
2005-11-28 17:19 ` William H. Taber
2005-11-28 23:12 ` Badari Pulavarty
2005-11-29 14:19 ` Ian Kent
2005-11-29 16:34 ` William H. Taber
2005-11-30 14:02 ` Ian Kent
2005-11-30 16:49 ` Badari Pulavarty
2005-11-30 17:04 ` Trond Myklebust
2005-11-30 21:10 ` William H. Taber [this message]
2005-11-29 14:20 ` Ian Kent
2005-11-30 1:16 ` [autofs] " Jeff Moyer
2005-11-30 1:16 ` Jeff Moyer
2005-11-30 1:56 ` Trond Myklebust
2005-11-30 4:15 ` Jeff Moyer
2005-11-30 6:14 ` Trond Myklebust
2005-11-30 15:44 ` Ian Kent
2005-11-30 15:53 ` [autofs] " Trond Myklebust
2005-11-30 16:12 ` Ian Kent
2005-11-30 16:27 ` Ian Kent
2005-11-30 16:45 ` [autofs] " Trond Myklebust
2005-11-30 20:32 ` William H. Taber
2005-11-30 20:53 ` Trond Myklebust
2005-11-30 21:30 ` William H. Taber
2005-11-30 22:32 ` Trond Myklebust
2005-12-01 16:27 ` William H. Taber
2005-12-01 12:09 ` Ian Kent
2005-12-01 16:30 ` William H. Taber
2005-12-02 13:49 ` Ian Kent
2005-12-02 14:07 ` Jeff Moyer
2005-12-02 15:21 ` Ian Kent
2005-12-02 16:35 ` [autofs] " Will Taber
2005-12-02 17:11 ` Ian Kent
2005-12-02 15:34 ` Will Taber
2005-12-02 17:29 ` Ian Kent
2005-12-02 18:12 ` Trond Myklebust
2005-12-04 12:56 ` Christoph Hellwig
2005-12-04 12:57 ` Christoph Hellwig
2005-12-04 14:58 ` Ian Kent
2005-12-04 17:17 ` [autofs] " Christoph Hellwig
2005-12-05 14:02 ` Ian Kent
2005-12-06 21:20 ` Jeff Moyer
2005-12-06 21:40 ` Christoph Hellwig
2005-12-06 22:37 ` Jeff Moyer
2005-12-07 14:52 ` Will Taber
2005-12-07 15:18 ` Christoph Hellwig
2005-12-07 15:22 ` Brian Long
2005-12-07 15:25 ` Christoph Hellwig
2005-12-07 17:46 ` Will Taber
2005-12-08 14:16 ` Ian Kent
2005-12-09 12:12 ` Christoph Hellwig
2005-12-09 13:33 ` John T. Kohl
2005-12-13 18:39 ` Christoph Hellwig
2005-12-04 14:56 ` Ian Kent
2005-12-02 19:04 ` [autofs] " Will Taber
2005-12-04 9:39 ` Ian Kent
2005-12-02 16:04 ` [autofs] " Jeff Moyer
2005-12-02 17:36 ` Ian Kent
2005-12-02 18:33 ` [autofs] " Will Taber
2005-12-04 9:52 ` Ian Kent
2005-12-04 14:54 ` Ian Kent
2005-12-05 15:40 ` Ian Kent
2005-11-30 14:48 ` [autofs] " Ian Kent
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=438E1542.5070208@us.ibm.com \
--to=wtaber@us.ibm.com \
--cc=autofs@linux.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linuxram@us.ibm.com \
--cc=pbadari@gmail.com \
--cc=raven@themaw.net \
--cc=smaneesh@in.ibm.com \
--cc=trond.myklebust@fys.uio.no \
--cc=viro@ftp.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.