From: Peter Staubach <staubach@redhat.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: akpm@linux-foundation.org, hch@infradead.org,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH] VFS: new fgetattr() file operation
Date: Wed, 24 Oct 2007 11:02:58 -0400 [thread overview]
Message-ID: <471F5EA2.8060203@redhat.com> (raw)
In-Reply-To: <E1IkgW1-0005i0-00@dorka.pomaz.szeredi.hu>
Miklos Szeredi wrote:
>> Miklos Szeredi wrote:
>>
>>> I don't think Christoph will like the patch better, regardless of how
>>> I change the description.
>>>
>>> Of course, I'm open to suggestion on how to improve the interface, but
>>> I think fundamentally this is the only way to correctly deal with the
>>> below problem.
>>>
>>> Anyway, here's the patch another time, please consider adding it to
>>> -mm. For 2.6.25 obviously.
>>>
>>> Thanks,
>>> Miklos
>>> ----
>>>
>>> From: Miklos Szeredi <mszeredi@suse.cz>
>>>
>>> Add a new file operation: f_op->fgetattr(), that is invoked by
>>> fstat(). Fall back to i_op->getattr() if it is not defined.
>>>
>>> We need this because fstat() semantics can in some cases be better
>>> implemented if the filesystem has the open file available.
>>>
>>> Let's take the following example: we have a network filesystem, with
>>> the server implemented as an unprivileged userspace process running on
>>> a UNIX system (this is basically what sshfs does).
>>>
>>> We want the filesystem to follow the familiar UNIX file semantics as
>>> closely as possible. If for example we have this sequence of events,
>>> we still would like fstat to work correctly:
>>>
>>> 1) file X is opened on client
>>> 2) file X is renamed to Y on server
>>> 3) fstat() is performed on open file descriptor on client
>>>
>>> This is only possible if the filesystem server acutally uses fstat()
>>> on a file descriptor obtained when the file was opened. Which means,
>>> the filesystem client needs a way to get this information from the
>>> VFS.
>>>
>>>
>>>
>> This true iff the protocol that this mythical
>>
>
> Not mythical at all. As noted in the description, there's sshfs, a
> live and quite popular example of this sort of filesystem.
>
>
>> network file system uses the name of the file on the server to
>> actually identify the file on the server.
>>
>
> The constraint is that the server has to be an ordinary unprivileged
> process. How should it identify the file, other than by name, or by
> an open file descriptor?
>
>
I explained this. The fileid and the generation count along
with the file system id will uniquely identify the file.
>> Clearly, this is broken on many levels. It can't handle
>> situations as described nor can it handle different instances
>> of the same filename being used.
>>
>
> Can you please give concrete examples what it can't handle, and how
> should the implementation be improved to be able to handle it, given
> the above constraints?
>
>
>> This is why NFS, a network file system, does not use the filename
>> as part of the file handle.
>>
>
> And the nfs server isn't a userspace process, or if it is, it must use
> horrible hacks to convert the file handle to a name, that don't work
> half the time.
>
>
Nice try. Wrong. Try a different rationalization.
>> Wouldn't you be better off by attempting to implement an "open
>> by ino" operation and an operation to get the generation count
>> for the file and then modifying the network protocol of interest
>> to use these as identifiers for the file to be manipulated?
>>
>
> You mean an "open by inode" on the userspace API? My guess, it
> wouldn't get very far.
>
>
This isn't a new idea and has been implemented on a variety of
different systems.
> Anyway, that would still not work on old servers, and servers running
> other OS's.
>
>
I didn't think that we were talking about old servers and other
OS's. My concern at the moment is Linux and the changes being
made to it.
> Note, the point is _not_ to make a brand new NFS replacement
> filesystem, that can use names instead of file handles. The point is
> to use existing infrastructure, to make the setup as easy as ssh'ing
> to a different machine. And sshfs does just that.
And the solution is limiting. It is not scalable nor particularly
interesting to anyone interested in security. Unless there is a
way of limiting access to a particular set of files, then it is
not generally useful outside of hackers or perhaps small groups
of users not concerned about too many aspects of security.
I am not interested in an extended discussion of this topic.
Thanx...
ps
next prev parent reply other threads:[~2007-10-24 15:03 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-24 11:59 Miklos Szeredi
2007-10-24 13:02 ` Peter Staubach
2007-10-24 13:43 ` Miklos Szeredi
2007-10-24 15:02 ` Peter Staubach [this message]
2007-10-24 15:27 ` Miklos Szeredi
2007-10-25 22:42 ` David Chinner
2007-10-25 23:10 ` Miklos Szeredi
2007-10-25 23:52 ` David Chinner
2007-10-26 9:33 ` Miklos Szeredi
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=471F5EA2.8060203@redhat.com \
--to=staubach@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®