Subject: [nfsv4] LAYOUTERROR in draft-ietf-nfsv4-minorversion2-40

From: Trond Myklebust <[email-masked]>
Date: Sat, 23 Jan 2016 10:45:04 -0500

Hi,

When looking to implement LAYOUTERROR from
https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-40, I
noticed there is a major difference between it and the way we're doing
error passing in LAYOUTRETURN. While the latter allows you to send an
array of several error reports for different byte ranges on the same
file, the LAYOUTERROR spec only allows you to specify a single byte
range.

Being able to specify errors as an array of ranges is somewhat of a
requirement for the flexfiles environment. In the case where the data
is mirrored across several DSes, reporting the actual byte ranges
where errors occurred can significantly cut down on the amount of work
that the server has to perform to fix the mirroring when errors start
to occur; instead of rewriting the whole file, it can just rewrite
those chunks that had errors.

A typical scenario where this might happen is if the file is fenced,
and so the WRITEs start receiving EACCES calls; unless you are
extraordinarily lucky, the fencing will leave one set of successful
writes on one mirror image, and a different set on the other (due to
timing, RPC reordering, etc).

While I can continue to use LAYOUTRETURN for most cases, I was hoping
to use LAYOUTERROR for those cases where we have queued up lots of
errors (due to parallel WRITEs), and so want to split the error
reporting into multiple RPC calls.

Cheers
  Trond

---

From: David Noveck <[email-masked]>
Date: Sun, 24 Jan 2016 05:23:38 -0500

You might consider reporting multiple ranges by using multiple
LAYOUTERRORs in a COMPOUND, given that each
LAYOUTERROR only allows a single range to be reported.

On Sat, Jan 23, 2016 at 10:45 AM, Trond Myklebust <[email-masked]> wrote:

> _______________________________________________
> nfsv4 mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/nfsv4
>

---

From: Trond Myklebust <[email-masked]>
Date: Sun, 24 Jan 2016 12:34:30 -0500

As I said in the reply to Benny's email, the question then becomes
"what values are servers setting for 'ca_maxoperations' during session
negotiation"?

Cheers
  Trond

---

From: David Noveck <[email-masked]>
Date: Sun, 24 Jan 2016 20:41:16 -0500

If this is only needed when interacting with a server supporting  the
flex-file layout type, the question should probably be ""What values should
[or SHOULD] servers that provide support for the flex-file layout type be
setting for 'ca_maxoperations' during session negotiation"?  I think it is
perfectly fine for the flex-files document to give reasonable guidance on
this point.