All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ric Wheeler <rwheeler@redhat.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: Anand Avati <avati@redhat.com>, Brian Foster <bfoster@redhat.com>,
	Linux FS Devel <linux-fsdevel@vger.kernel.org>,
	fuse-devel <fuse-devel@lists.sourceforge.net>,
	Alexander Viro <aviro@redhat.com>,
	David Howells <dhowells@redhat.com>,
	Eric Paris <eparis@redhat.com>, Alexander Viro <aviro@redhat.com>
Subject: Re: [PATCH] [REPOST] fuse: drop dentry on failed revalidate
Date: Tue, 30 Jul 2013 15:30:45 -0400	[thread overview]
Message-ID: <51F81465.9010402@redhat.com> (raw)
In-Reply-To: <CAJfpegtpcXz+i-3txRC_NjTsYjXP5S4oJUdGstG+-PWVzazEWQ@mail.gmail.com>

On 07/30/2013 12:16 PM, Miklos Szeredi wrote:
>>>    fs/fuse/dir.c | 4 ++++
>>>    1 file changed, 4 insertions(+)
>>>
>>> diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
>>> index a1d9047..83c217e 100644
>>> --- a/fs/fuse/dir.c
>>> +++ b/fs/fuse/dir.c
>>> @@ -226,6 +226,10 @@ static int fuse_dentry_revalidate(struct dentry
>>> *entry, unsigned int flags)
>>>                  if (!err) {
>>>                          struct fuse_inode *fi = get_fuse_inode(inode);
>>>                          if (outarg.nodeid != get_node_id(inode)) {
>>> +                               if (!have_submounts(entry)) {
>>> +                                       shrink_dcache_parent(entry);
>>> +                                       d_drop(entry);
>>> +                               }
> Doing d_drop() on a subtree really has problems.  Take this example:
>
> cd /mnt/foo/bar
> mkdir my-mount-point
> [->d_revalidate() drops "/mnt/foo"]
> mount whatever on ./my-mount-point
> cd /
>
> At this point that mount is not accessible in any way.  The only way
> to umount it is to lazy umount the parent mount.  If the parent mount
> was root, then that's not a practical thing to do.
>
> AFAICS nothing prevents this from happening on NFS and root privs are
> not required (e.g. mounting a fuse fs on an NFS home dir).
>
> The other problem is that, unlike NFS, fuse doesn't currently
> reconnect these subtrees when it finds them at a different point in
> the tree.  d_drop on it just makes things worse because at that point
> that subtree will not be accessible anymore (while the fuse fs is
> mounted, that is).  This could be fixed pretty easily by using the
> d_materialise_*() helpers.
>
> But issues with mounting over an unhashed subtree *should* be addressed.
>
> Recursively d_drop()-ing might still be the simplest way.  Need to
> make sure the subtree doesn't change in the meantime.  Holding
> rename_lock might do the trick.  But then there's still an unlikely
> race with mount()...
>
> Thanks,
> Miklos


Hi Miklos,

Do you have a respin of the proposed patch that we can put through testing?  We 
see this with hadoop on top of gluster and have lots of testers ready and waiting :)

Al, do you have any thoughts on this?

Thanks!

ric


  reply	other threads:[~2013-07-30 19:30 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20130725055209.GA15621@sh-el5.eng.rdu2.redhat.com>
2013-07-25 14:42 ` [PATCH] [REPOST] fuse: drop dentry on failed revalidate Ric Wheeler
2013-07-30 16:16   ` Miklos Szeredi
2013-07-30 19:30     ` Ric Wheeler [this message]
2013-08-01 16:39       ` Miklos Szeredi
2013-08-01 18:45         ` Ric Wheeler
2013-08-01 18:45           ` Ric Wheeler
2013-08-02  9:02           ` Miklos Szeredi
2013-08-02  9:02             ` Miklos Szeredi
2013-08-02 11:43             ` Jeff Layton
2013-08-02 11:43               ` Jeff Layton
2013-08-02 14:30               ` Miklos Szeredi
2013-08-02 16:58                 ` Jeff Layton
2013-08-02 16:58                   ` Jeff Layton
2013-08-02 12:17     ` Jeff Layton
2013-08-02 14:42       ` Miklos Szeredi
2013-08-02 17:32         ` Jeff Layton

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=51F81465.9010402@redhat.com \
    --to=rwheeler@redhat.com \
    --cc=avati@redhat.com \
    --cc=aviro@redhat.com \
    --cc=bfoster@redhat.com \
    --cc=dhowells@redhat.com \
    --cc=eparis@redhat.com \
    --cc=fuse-devel@lists.sourceforge.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    /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.