Subject: [nfsv4] draft-eisler-nfsv4-enterprise-apps-00.txt

From: "Mike Eisler" <[email-masked]>
Date: Wed, 13 Oct 2010 15:40:21 -0700

(apologies if this a dup)

Margaret Susairaj of Oracle and I (of NetApp) posted this
internet-draft, which proposes extensions to NFSv4 for
better support of enterprise applications, such
as databases.

http://www.ietf.org/id/draft-eisler-nfsv4-enterprise-apps-00.txt

I have requested time at the IETF meeting in Beijing to discuss this.

--
Mike Eisler, Senior Technical Director, CR & NFS
+1 719 599 9026 - blogs.netapp.com/eislers_nfs_blog/

---

From: "J. Bruce Fields" <[email-masked]>
Date: Thu, 14 Oct 2010 12:09:17 -0400

> I have requested time at the IETF meeting in Beijing to discuss this.

Miscellaneous, possibly dumb questions:

	- Can you define "enterprise application" for the purpose of
	  this draft?

	- INITIALIZE:
		- I'm confused by the motivation.  So an application is
		  trying to detect whether an unused section of a file
		  has been corrupted?  Does it even care about
		  corruption of regions where it hasn't stored any data?
		  What does data corruption in an unallocated region
		  even mean?  If you care about data corruption, don't
		  you need additional application-level mechanisms (say,
		  checksums of some kind) that would render INITIALIZE
		  unnecessary?  I'm sure I'm just missing something;
		  pointers to literature welcomed.
		- Has anyone talked to e.g. linux filesystem people to
		  figure out support for interfaces necessary for an
		  application to perform INITIALIZE from a client,
		  and/or to let an nfs server perform it on a
		  filesystem?

	- ADVISE ops: the types look almost like those in posix_fadvise,
	  but not exactly; out of curiosity, why the differences?

	- SESSION_CTL: why is managing an additional sessions more
	  complicated than implementing SESSION_CTL?

--b.

---

From: Chuck Lever <[email-masked]>
Date: Thu, 14 Oct 2010 12:21:34 -0400

> 		  pointers to literature welcomed.

The goal is to look for misplaced writes by applications.  In other words, it's a way to detect application software bugs, or inappropriate accesses to files by other applications.  On regular disks, you might also look for drive firmware bugs that cause a drive to write data into the wrong sectors.

> 		  and/or to let an nfs server perform it on a

I think these are not necessarily intended for a POSIX-style file system API with a VFS layer.  A VFS client implementation might implement these operations via ioctl.  But... it might be appropriate for the server to report to clients that it cannot support these features.

> 	  complicated than implementing SESSION_CTL?

And I wonder why the client can't simply terminate a session and negotiate a new one with the new parameters.  Increasing the size of the session's slot table while there are still slots in use might be kind of interesting to implement.

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

---

From: "J. Bruce Fields" <[email-masked]>
Date: Thu, 14 Oct 2010 12:55:13 -0400

On Thu, Oct 14, 2010 at 12:21:34PM -0400, Chuck Lever wrote:
> >> internet-draft, which proposes extensions to NFSv4 for better
> >> support of enterprise applications, such as databases.
> >> 
> > 	- INITIALIZE: - I'm confused by the motivation.  So an
> > 	application is trying to detect whether an unused section of a
> > 	file has been corrupted?  Does it even care about corruption of
> > 	regions where it hasn't stored any data?  What does data
> > 	corruption in an unallocated region even mean?  If you care
> > 	about data corruption, don't you need additional
> > 	application-level mechanisms (say, checksums of some kind) that
> > 	would render INITIALIZE unnecessary?  I'm sure I'm just missing
> > 	something; pointers to literature welcomed.
> 
> The goal is to look for misplaced writes by applications.  In other
> words, it's a way to detect application software bugs, or
> inappropriate accesses to files by other applications.

Makes sense, thanks--though is a solution that only catches misplaced
writes to unallocated areas so useful?  I'd think it would be more
important to get writes to allocated areas--and that once you've done
that extending it to the holes wouldn't be much more trouble.

> On regular
> disks, you might also look for drive firmware bugs that cause a drive
> to write data into the wrong sectors.

They recommend not allocating space for INITIALIZE-initialized data
(pretty much required if you're going to anwer the rpc request in a
reasonable amount of time).

But I suppose you could copy the data later, or read-modify-write small
portions of it, at which point some of it would be subject to drive
errors, OK.

> > 		application to perform INITIALIZE from a client, and/or
> > 		to let an nfs server perform it on a filesystem?
> 
> I think these are not necessarily intended for a POSIX-style file
> system API with a VFS layer.  A VFS client implementation might
> implement these operations via ioctl.  But... it might be appropriate
> for the server to report to clients that it cannot support these
> features.
> 
> And I wonder why the client can't simply terminate a session and
> negotiate a new one with the new parameters.  Increasing the size of
> the session's slot table while there are still slots in use might be
> kind of interesting to implement.

They recommend draining all the other slots before sending SESSION_CTL,
at which point yes maybe it becomes not much different from destroying
one session and creating another.

--b.