Subject: [nfsv4] Voldamort

From: "Haynes, Tom" <[email-masked]>
Date: Mon, 15 Oct 2012 22:28:15 +0000

One of the remaining items from Vancouver was what to call INITIALIZE.

I'm going to propose WRITE_PLUS.

While it matches up with READ_PLUS, the would be one explicit change and
that would be it does not work on an array of data. I think the writing of data
(not holes) has to continue to be atomic. If we have multiple data ranges,
I'm not sure we can ensure this requirement.

So the proposal would be to rename INITIALIZE -> WRITE_PLUS and
enable the NFS4_CONTENT_DATA arm.

---

From: Chuck Lever <[email-masked]>
Date: Tue, 16 Oct 2012 13:32:51 -0400

> enable the NFS4_CONTENT_DATA arm.

I never particularly liked the idea of replacing the WRITE operation with INITIALIZE.  The data written by INITIALIZE is generated on the server, and the write operation is typically offloaded.  I don't remember what we decided about COMMIT for INITIALIZE/WRITE_PLUS.  It just doesn't seem like a good fit.

If you go ahead with this change, I assume that you will also mark WRITE obsolete:  Servers MUST implement it, clients MAY implement it?

--
Chuck Lever
[email-masked]

---

From: "Myklebust, Trond" <[email-masked]>
Date: Tue, 16 Oct 2012 17:37:12 +0000

> -----Original Message-----
> From: [email-masked] [mailto:[email-masked]] On Behalf
> Of Chuck Lever
> Sent: Tuesday, October 16, 2012 1:33 PM
> To: Haynes, Tom
> Cc: nfsv4 list
> Subject: Re: [nfsv4] Voldamort
> 
> 
> > While it matches up with READ_PLUS, the would be one explicit change
> > and that would be it does not work on an array of data. I think the
> > writing of data (not holes) has to continue to be atomic. If we have
> > multiple data ranges, I'm not sure we can ensure this requirement.
> >
> > So the proposal would be to rename INITIALIZE -> WRITE_PLUS and enable
> > the NFS4_CONTENT_DATA arm.
> 
> I never particularly liked the idea of replacing the WRITE operation with
> INITIALIZE.  The data written by INITIALIZE is generated on the server, and
> the write operation is typically offloaded.  I don't remember what we
> decided about COMMIT for INITIALIZE/WRITE_PLUS.  It just doesn't seem
> like a good fit.
> 
> If you go ahead with this change, I assume that you will also mark WRITE
> obsolete:  Servers MUST implement it, clients MAY implement it?
> 

Please see the minor versioning rules. You can't make an operation mandatory to implement in the same minor version that introduces it.

Trond

---

From: Chuck Lever <[email-masked]>
Date: Tue, 16 Oct 2012 13:49:50 -0400

> Please see the minor versioning rules. You can't make an operation mandatory to implement in the same minor version that introduces it.

My assumption is based on how READ and READ_PLUS is currently handled in chapter 12 of revision 15 of the mv2 draft.

On page 49, the READ operation is marked OBS (MUST NOT implement), and READ_PLUS is marked OPT (optional to implement).  If a client chooses not to implement READ because it is OBSOLETE, how does it read from a server that chooses not to implement READ_PLUS ?

Is this the same question mkupfer just asked?

-- 
Chuck Lever
chuck[dot]lever[at]oracle[dot]com

---

From: "Myklebust, Trond" <[email-masked]>
Date: Tue, 16 Oct 2012 18:17:26 +0000

> Sent: Tuesday, October 16, 2012 1:50 PM
> To: Haynes, Tom
> Cc: nfsv4 list
> >> From: [email-masked] [mailto:[email-masked]] On
> >> Behalf Of Chuck Lever
> >> I never particularly liked the idea of replacing the WRITE operation
> >> with INITIALIZE.  The data written by INITIALIZE is generated on the
> >> server, and the write operation is typically offloaded.  I don't
> >> remember what we decided about COMMIT for INITIALIZE/WRITE_PLUS.
> It
> >> just doesn't seem like a good fit.
> >>
> > Please see the minor versioning rules. You can't make an operation
> mandatory to implement in the same minor version that introduces it.
> 
> My assumption is based on how READ and READ_PLUS is currently handled in
> chapter 12 of revision 15 of the mv2 draft.
> 
> On page 49, the READ operation is marked OBS (MUST NOT implement), and
> READ_PLUS is marked OPT (optional to implement).  If a client chooses not to
> implement READ because it is OBSOLETE, how does it read from a server that
> chooses not to implement READ_PLUS ?
> 

Not sure, but if we're marking READ as MUST NOT IMPLEMENT, then something is wrong. That would implicitly make READ_PLUS mandatory to implement in violation of rule 12 of the Minor Versioning section in RFC3530. I don't see how we can have an NFS protocol without a read capability...

Cheers
  Trond

---

From: Chuck Lever <[email-masked]>
Date: Tue, 16 Oct 2012 13:32:51 -0400

--
Chuck Lever
[email-masked]