From: Jeff Layton <jlayton@redhat.com>
To: Jeff Layton <jlayton@redhat.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
linux-cifs@vger.kernel.org, Steve French <smfrench@gmail.com>,
Kernel Mailing List <linux-kernel@vger.kernel.org>,
sjayaraman@novell.com
Subject: Re: Mount failure due to restricted access to a point along the mount path
Date: Tue, 14 May 2013 10:51:19 +0200 [thread overview]
Message-ID: <20130514105119.66a5bc3f@corrin.poochiereds.net> (raw)
In-Reply-To: <20130510102754.184cd90d@corrin.poochiereds.net>
On Fri, 10 May 2013 10:27:54 -0400
Jeff Layton <jlayton@redhat.com> wrote:
> On Fri, 10 May 2013 16:13:30 +0200
> Miklos Szeredi <miklos@szeredi.hu> wrote:
>
> > Hi,
> >
> > A while ago this was discussed:
> >
> > http://thread.gmane.org/gmane.linux.kernel.cifs/7779
> >
> > This is essentially a regression introduced by the shared superblock
> > changes in 3.0 and several SUSE customers are complaining about it.
> > I've created a temporary fix which reverts 29 commits related to the
> > shared superblock changes. It works, but it's obviously not a
> > permanent fix, especially since we definitely don't want to diverge
> > from mainline.
> >
> > Is this issue being worked on? Don't other distros have similar reports?
> >
> > Thanks,
> > Miklos
>
> I don't know of anyone currently working on it. There are a couple of
> possible approaches to fixing it, I think:
>
> 1) if the dentries to get down to the root of the mount don't already
> exist, then attach some sort of "placeholder" inode that can be fleshed
> out later if and when the dentry is accessed via other means.
>
> 2) do something like what NFS does (see commit 54ceac45). This becomes
> a bit more complicated due to the fact that the server may not hand out
> real inode numbers and we sometimes have to fake them up.
>
> #1 is probably simpler to implement, but I'll confess that I haven't
> thought through all of the potential problems with it.
>
So, giving this some more thought, I think #2 is really the correct way
to fix this. Here's the main problem though:
Suppose someone mounts:
//server/share/foo/bar/baz
We make the sb->s_root point to the top level share, and then create a
disconnected dentry for "baz" to return from ->mount.
Then, a little while later, //server/share gets mounted separately and
a user walks down to /foo/bar/baz within the same share.
How do we ensure that we don't end up with two "baz" dentries in this
situation? With NFS, we can be reasonably sure that there's a 1:1
correspondance of filehandle to inode.
Under CIFS, it's possible that it's faking up inode numbers if the
server doesn't provide them via a UniqueID field. The only real
identifying info we have for the inode in that case is the pathname.
Perhaps we'd be best off to just rip out the sb sharing after all.
Getting all of the corner cases right when the protocol and server
implementations are so problematic is really, really difficult.
If we do go that route, then the fscache code will need some work since
it uses the sharename as a sb cookie.
--
Jeff Layton <jlayton@redhat.com>
next prev parent reply other threads:[~2013-05-14 8:51 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-10 14:13 Mount failure due to restricted access to a point along the mount path Miklos Szeredi
2013-05-10 14:27 ` Jeff Layton
2013-05-14 8:51 ` Jeff Layton [this message]
2013-05-14 10:44 ` Steve French
2013-05-14 11:09 ` Jeff Layton
2013-05-14 13:08 ` Steve French
2013-05-16 6:19 ` Pavel Shilovsky
2013-10-07 3:22 ` Shirish Pargaonkar
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=20130514105119.66a5bc3f@corrin.poochiereds.net \
--to=jlayton@redhat.com \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=sjayaraman@novell.com \
--cc=smfrench@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox