All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Charles P. Wright" <cwright@cs.sunysb.edu>
To: "John T. Kohl" <jtk@us.ibm.com>
Cc: Trond Myklebust <trondmy@trondhjem.org>,
	dhowells@redhat.com, nfsv4 <nfsv4@linux-nfs.org>,
	fsdevel <linux-fsdevel@vger.kernel.org>
Subject: Re: [RFC] Support for stackable file systems on top of nfs
Date: Fri, 11 Nov 2005 10:27:25 -0500	[thread overview]
Message-ID: <1131722845.10610.7.camel@localhost.localdomain> (raw)
In-Reply-To: <200511111345.jABDjxvw020167@sumu.lexma.ibm.com>

On Fri, 2005-11-11 at 08:45 -0500, John T. Kohl wrote:
> >>>>> "Trond" == Trond Myklebust <trondmy@trondhjem.org> writes:
> 
> Trond> On Thu, 2005-11-10 at 21:32 -0500, Trond Myklebust wrote:
> >> It sounds to me like you want to talk to the cachefs folks. They too
> >> need special hooks in the NFS low-level page cache routines in order to
> >> be able to mirror write requests to the local backing store and/or
> >> reroute read requests to that backing store.
> 
> Trond> Note: I'm not saying that you should special case Clearcase for NFS, but
> Trond> if both you and cachefs have similar requirements for hooks, then
> Trond> perhaps we could look for a common solution (perhaps at the VFS level?).
> 
> Thanks for the encouragement.
> 
> It looks to me like the i_mapping and f_mapping stuff is intended to let
> a stacking file system share pages with a backing-store file system (we
> really want to share pages, it's efficient and avoids a whole host of
> cache coherency problems), but the interfaces are not adequate for that
> to work with NFS as the backing-store.
> 
> Other than i_mapping/f_mapping, I don't think it's possible right now
> for stacking file systems to handle the address_space operations in our
> layer *and* share the same pages with the backing-store, since the struct
> pages are attached to the address space via file->f_mapping.
At Stony Brook, we've come across similar problems.  It is relatively
easy to double cache, but inefficient.  It is also relatively easy to
single-cache, but then you don't get to intercept any of these
interesting operations.  Getting both at once is tricky.  Nikolai Joukov
developed a method that he uses for Tracefs, with pointer flipping.

Basically, we set the page mapping to the lower-level mapping before the
oepration, and unsets it afterwards.

> [Special-casing for NFS would be tricky and probably improper--should we
> really care what's below us?  How would we determine that our backing
> store inode is an NFS inode (or any other sort that doesn't handle
> i_mapping hosting)?  We don't have access to the NFS symbol names for
> the file_operations or address_space_operations, so we can't even cheat
> and determine whether the object below us is NFS.
One way to check is !strcmp(i_mapping->host->i_sb->s_type->name, "nfs").
We used this in Unionfs because NFS doesn't returns EACCESS instead of
EROFS for read-only file systems.

Charles


  reply	other threads:[~2005-11-11 15:27 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 [this message]
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
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=1131722845.10610.7.camel@localhost.localdomain \
    --to=cwright@cs.sunysb.edu \
    --cc=dhowells@redhat.com \
    --cc=jtk@us.ibm.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=nfsv4@linux-nfs.org \
    --cc=trondmy@trondhjem.org \
    /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.