Linux NFS development
 help / color / mirror / Atom feed
From: Jeff Garzik <jeff@garzik.org>
To: Rick Macklem <rick-bYVALtacgsT800Iu1Vt84J3p9npsUQCG@public.gmane.org>
Cc: linux-nfs@vger.kernel.org, nfsv4@linux-nfs.org
Subject: Re: A new NFSv4 server...
Date: Fri, 04 Jan 2008 19:51:44 -0500	[thread overview]
Message-ID: <477ED4A0.7080501@garzik.org> (raw)
In-Reply-To: <200801041711.MAA19577-bYVALtacgsT800Iu1Vt84J3p9npsUQCG@public.gmane.org>

Rick Macklem wrote:
>> heh, tell me about it.  First I started out using rpcgen, then rewrote 
>> everything to do raw XDR decoding.  OPEN is huge.
>>
>> IMO, OPEN should be split into multiple operations, probably one for 
>> each "OPEN arm".  It's not like new opcode numbers are expensive.
> 
> As I hinted at, Open is the way it is, since Windows requires one Op
> so that Open/Share locks can be implemented correctly. Anything else
> would not have satisfied a Win client's requirements.

My apologies for being unclear.  I meant something along the lines of 
giving each OPEN arm its own opcode, to "flatten" things a bit.  The 
guarantees should and would remain the same, and Windows would continue 
to work.


>> One of my personal desires is for a high level of cache coherence 
>> throughout the system for all clients (though perhaps an admin could 
>> optionally relax this requirement).  I'm a fan of Google's "Chubby", a 
>> distributed reliable filesystem that stalls client writes until cache 
>> invalidations for the associated byte range are processed for all 
>> interested clients.
> 
> Delegations provide cache coherency "in a sense". When a client has a
> delegation, it knows that no-one else is writing the file. Unfortunately,
> as soon as a client gets an Open without a delegation, in no longer
> gets the conherency guarantee (and servers are completely free to not
> issue delegations if they don't feel like doing so). A client can
> re-open a file when it gets an Open without a delegation, but if the
> server still doesn't give it a delegation, it can't do anything more.
> (The re-open trick is useful for an Open that requires confirmation, since
>  the server can't issue a delegation for that case.)

Yes, delegation makes for nice caching.  I'm interested in making the 
other stuff coherent (as possible) too, for use cases such as 
shared-writer files with locking, "watched" files (1 writer, many 
readers), files to which many clients append data (a la GoogleFS's 
atomic append), directories that are polled by many clients, etc.

It's all in how one juggles workload-specific priorities, really.  Some 
workloads are nice with push-invalidation strategies like Chubby, others 
not so much.

	Jeff




  parent reply	other threads:[~2008-01-05  0:51 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-04 17:11 A new NFSv4 server Rick Macklem
     [not found] ` <200801041711.MAA19577-bYVALtacgsT800Iu1Vt84J3p9npsUQCG@public.gmane.org>
2008-01-05  0:51   ` Jeff Garzik [this message]
  -- strict thread matches above, loose matches on Subject: below --
2008-01-04 17:28 Rick Macklem
     [not found] ` <200801041728.MAA19743-bYVALtacgsT800Iu1Vt84J3p9npsUQCG@public.gmane.org>
2008-01-04 17:42   ` J. Bruce Fields
2008-01-04 17:45   ` Trond Myklebust
2008-01-04 15:48 Rick Macklem
     [not found] ` <200801041548.KAA18953-bYVALtacgsT800Iu1Vt84J3p9npsUQCG@public.gmane.org>
2008-01-04 17:15   ` J. Bruce Fields
2008-01-05  2:32   ` Greg Banks
2008-01-04 15:28 Rick Macklem
     [not found] ` <200801041528.KAA18776-bYVALtacgsT800Iu1Vt84J3p9npsUQCG@public.gmane.org>
2008-01-04 17:21   ` J. Bruce Fields
2008-01-04 18:03     ` Tom Haynes
     [not found]       ` <477E750A.2030905-8AdZ+HgO7noAvxtiuMwx3w@public.gmane.org>
2008-01-04 18:21         ` J. Bruce Fields
2008-01-04 19:50     ` Jeff Garzik
2008-01-04 19:57       ` Peter Åstrand
     [not found]         ` <Pine.LNX.4.64.0801042055490.18738-K9BqGu7AvB3wj5YHdwD3Ga2PxDmRETKR@public.gmane.org>
2008-01-05  0:43           ` Jeff Garzik
2008-01-03 12:16 Jeff Garzik
2008-01-03 16:32 ` J. Bruce Fields
2008-01-04  5:32   ` Jeff Garzik
2008-01-04  6:24     ` Greg Banks
     [not found]       ` <477DD11B.40909-cP1dWloDopni96+mSzHFpQC/G2K4zDHf@public.gmane.org>
2008-01-04  7:04         ` Jeff Garzik
2008-01-04  9:07           ` Benny Halevy
2008-01-04 15:49             ` Jeff Garzik
2008-01-04 19:51               ` Benny Halevy
2008-01-05  1:46               ` Greg Banks
2008-01-05  7:56                 ` Benny Halevy
2008-01-04 17:47             ` J. Bruce Fields
2008-01-04 19:55               ` Benny Halevy
2008-01-04  9:15           ` Peter Åstrand
2008-01-04 10:05             ` Neil Brown
     [not found]             ` <Pine.LNX.4.64.0801040954070.5004-K9BqGu7AvB3wj5YHdwD3Ga2PxDmRETKR@public.gmane.org>
2008-01-04 13:50               ` Frank van Maarseveen
2008-01-04 16:41               ` Jeff Garzik
2008-01-04 20:03                 ` Peter Åstrand
     [not found]                   ` <Pine.LNX.4.64.0801042030380.18738-K9BqGu7AvB3wj5YHdwD3Ga2PxDmRETKR@public.gmane.org>
2008-01-06 23:54                     ` James Morris
2008-01-04 20:31             ` Muntz, Daniel
2008-01-04  9:15 ` Peter Åstrand
2008-01-04 16:14   ` Jeff Garzik
2008-01-04 19:58     ` Peter Åstrand

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=477ED4A0.7080501@garzik.org \
    --to=jeff@garzik.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=nfsv4@linux-nfs.org \
    --cc=rick-bYVALtacgsT800Iu1Vt84J3p9npsUQCG@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox