From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: Bryan Henderson <hbryan@us.ibm.com>
Cc: fsdevel <linux-fsdevel@vger.kernel.org>,
Shaya Potter <spotter@cs.columbia.edu>,
nfsv4 <nfsv4@linux-nfs.org>,
Dave Kleikamp <shaggy@austin.ibm.com>
Subject: Re: [RFC] Support for stackable file systems on top of nfs
Date: Fri, 11 Nov 2005 14:22:55 -0500 [thread overview]
Message-ID: <1131736975.8793.43.camel@lade.trondhjem.org> (raw)
In-Reply-To: <OFC1BAB240.43F22A03-ON882570B6.005FEB66-882570B6.006486F1@us.ibm.com>
On Fri, 2005-11-11 at 10:18 -0800, Bryan Henderson wrote:
> >> >It should hardly come as a newsflash that remote filesystems are
> >> >inherently different to local filesystems.
> >>
> >> You'd have to give a pretty specific definition of remote filesystem
> >> before I'd agree with that. At its most basic level, remote just means
>
> >> distant, and the matter of needing a credential to access a file has
> more
> >> to do with the fact that the filesystem is shared than that it is
> distant.
> >
> >Show me a remote filesystem that doesn't have some form of
> >authentication.
>
> An ordinary NFS filesystem is remote and does not have authentication. I'm
> sure you mean identification (Identification is saying who is writing the
> data; authentication is proving it is he). In NFS, authentication is done
> by the client operating system and in a Linux client it's totally outside
> of the filesystem function.
I mean authentication. The act of proving that a given remote procedure
call is being sent on behalf of a given authorised individual.
That is precisely what an RPCSEC_GSS session allows by virtue of a
secure per-user channel which has been set up using some standard strong
authentication method (krb5 being currently the most commonly used such
method).
Even the old and untrusty AUTH_SYS (still the NFS default) does some
limited form of authentication: the server identifies the client, checks
if the client is on a trusted list, then reads off the RPC's user+group
information. It's not particularly secure, but it is authentication.
> Identification is something local filesystems
> do as well. What sets NFS apart here is that the identification happens
> at physical write (cache clean) time instead of just at open time. That's
> not an inherent part of being remote (distant). In fact, I don't even
> know a word, other than NFS, for the class of filesystems that have this
> characteristic.
As long as you're prepared to group filesystems such as AFS/DFS, CIFS,
etc under the NFS umbrella.
> >It is an inherent feature of shared mmapped files that the pages can
> >be written to by different users. When the VM finally gets round to
> >flushing them out, all it knows is that this page is dirty.
> >> I'm a little fuzzy on how that works anyway, ...
>
> You acknowledge this burning question without answering it, and I'd really
> like to understand. How do you determine at pageout time what credential
> to give the NFS server? I think you said it has to do with credentials
> cached in the struct file, but the same way you can't attach a credential
> to the dirty page, you can't attach a struct file to it, right? And is it
> just a shared mmap problem, or is it the same thing if multiple users
> simultaneously write() to the file cache?
Ordinary writes go through the prepare_write()/commit_write() interface,
and so we tag them with the appropriate credentials + state there. We
don't bother to tag the pages with the "PG_dirty" bit 'cos we don't want
the VM to cycle them through the writepage() interface. Instead we track
the page state ourselves.
The only place weirdness can come from is mmap(), since there we are at
the mercy of the limitations of the VM's dirty page tracking.
Cheers,
Trond
next prev parent reply other threads:[~2005-11-11 19:22 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-10 17:32 [RFC] Support for stackable file systems on top of nfs Dave Kleikamp
2005-11-10 20:07 ` Christoph Hellwig
2005-11-10 21:35 ` John T. Kohl
2005-11-10 21:40 ` Shaya Potter
2005-11-10 21:57 ` John T. Kohl
2005-11-10 21:50 ` Christoph Hellwig
2005-11-11 2:31 ` Trond Myklebust
2005-11-11 4:04 ` Trond Myklebust
2005-11-11 13:45 ` John T. Kohl
2005-11-11 15:27 ` Charles P. Wright
2005-11-11 17:38 ` John T. Kohl
2005-11-14 15:56 ` David Howells
2005-11-10 21:24 ` Trond Myklebust
2005-11-10 21:36 ` Shaya Potter
2005-11-10 22:18 ` Trond Myklebust
2005-11-10 22:27 ` Shaya Potter
2005-11-10 22:40 ` Trond Myklebust
2005-11-11 0:12 ` Bryan Henderson
2005-11-11 1:30 ` Brad Boyer
2005-11-11 2:06 ` Trond Myklebust
2005-11-11 18:18 ` Bryan Henderson
2005-11-11 19:22 ` Trond Myklebust [this message]
2005-11-11 21:57 ` Bryan Henderson
2005-11-11 22:41 ` Trond Myklebust
2005-11-14 19:02 ` Bryan Henderson
2005-11-11 16:40 ` Nikita Danilov
2005-11-11 18:45 ` Bryan Henderson
2005-11-11 19:31 ` Nikita Danilov
2005-11-11 19:42 ` Trond Myklebust
2005-11-11 23:13 ` Bryan Henderson
-- strict thread matches above, loose matches on Subject: below --
2005-11-14 0:44 Nikolai Joukov
2005-11-14 16:02 ` David Howells
2005-11-14 20:48 ` Erez Zadok
2005-11-14 21:13 ` John T. Kohl
2005-11-14 21:32 ` Jamie Lokier
2005-11-14 16:11 ` John T. Kohl
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=1131736975.8793.43.camel@lade.trondhjem.org \
--to=trond.myklebust@fys.uio.no \
--cc=hbryan@us.ibm.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=nfsv4@linux-nfs.org \
--cc=shaggy@austin.ibm.com \
--cc=spotter@cs.columbia.edu \
/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;
as well as URLs for NNTP newsgroup(s).