Re: [nfsv4] Review of draft-haynes-nfsv4-delstid-00

Trond Myklebust <trondmy@gmail.com> Wed, 30 May 2018 15:57 UTC

Return-Path: <trondmy@gmail.com>
X-Original-To: nfsv4@ietfa.amsl.com
Delivered-To: nfsv4@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 838AF12762F for <nfsv4@ietfa.amsl.com>; Wed, 30 May 2018 08:57:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ainGtdAOzty6 for <nfsv4@ietfa.amsl.com>; Wed, 30 May 2018 08:56:57 -0700 (PDT)
Received: from mail-yb0-x234.google.com (mail-yb0-x234.google.com [IPv6:2607:f8b0:4002:c09::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 49D0F12E76A for <nfsv4@ietf.org>; Wed, 30 May 2018 08:56:57 -0700 (PDT)
Received: by mail-yb0-x234.google.com with SMTP id o80-v6so6528976ybc.7 for <nfsv4@ietf.org>; Wed, 30 May 2018 08:56:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Zleg7VD/CpkhbaZm8RTHn1TOt/EJebQwjh+UEiCOX3c=; b=gPDlma7PWrw0S/exD9hUbV5vHrNXQMa21WXdxJ9e5XySQFf1Eie1qLy2HvmGEqeKCd Aq9Qu216QJEemYwyjx4gmGKPvLw+EOX10MY64bcmOODKnzrWuXhoUnUqEMh+MIMyAG/j yhMH2YkTnSU0drPh5Jv6DDckc2rzb/qV2okVwN09zlLUvPN8H60fm/lfU1RQyg0OJVge sbdmk/RkzEFJcaVEj/utAj0CYiXN3zg0vxcSDSvq8D3AmCJbD0zb2ZAbcSzatkK2I4ic M1peT4GPJtgmf8OskunEc5a50lcFP0t6y78B0JRP9hwGWDiOoirUUFmMXT9LuazP039y +XBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Zleg7VD/CpkhbaZm8RTHn1TOt/EJebQwjh+UEiCOX3c=; b=OJpkXZ4ZMsLxxNrjF31ReB+eET3bfq7WUAKB6G6gFGBucgs5KaF6WCK391ANkyhzV0 nWE6l2EVNf+wGoZRs5IY2UFpCGyQfaltv1vqEhtqP3gnmv5Zh49pElgUPg1OLodi2VC2 /8Exg6l0otW5vRsoCoMCq6+O2ZFHex7VYT6wIxmDztKdueAYesRmc35gYyppz3I+J/0k EDS1c89BX7Tmvs8I/CAOC9J7Ls+ynCIHnfUSR0De1ebkWj00ex7gIaaaAc+dioOy7c/+ hlSjqCkJHSgrYGlaH8dAgJrO5s+49S/5EdONrY39JHx9ee1zVv7a1dlmtAMaoKWPr/2c bTmA==
X-Gm-Message-State: ALKqPwciUNW/Tm44ZzNnlhjuNyl5ZefQtGZf6lPnFa9z6Qvb4SYhLpO+ t7WCreJE45CbsPGiA0glL7xmonKptWgpxnWBSA==
X-Google-Smtp-Source: ADUXVKL0bTHdkl1FZozsPmR8KbPpCB0yQrIhKbC8DccAAScfilpW0nojHT0rvQeKdh4L8TG+ZzhjLTQgABCYIj6G6M0=
X-Received: by 2002:a25:c346:: with SMTP id t67-v6mr1887863ybf.18.1527695816268; Wed, 30 May 2018 08:56:56 -0700 (PDT)
MIME-Version: 1.0
References: <CADaq8jdspqcMkpO=zoLGDWzn91m0oeca9HC2jUJ0ne=LnuLwNg@mail.gmail.com>
In-Reply-To: <CADaq8jdspqcMkpO=zoLGDWzn91m0oeca9HC2jUJ0ne=LnuLwNg@mail.gmail.com>
From: Trond Myklebust <trondmy@gmail.com>
Date: Wed, 30 May 2018 11:56:44 -0400
Message-ID: <CAABAsM5UBw+wqLbVrKq5VO7TAj3AgAZX3jmk+cw2xmZc9BvBig@mail.gmail.com>
To: Dave Noveck <davenoveck@gmail.com>
Cc: Thomas D Haynes <loghyr@primarydata.com>, "nfsv4@ietf.org" <nfsv4@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/rTENtdZlB9iibGyhtGVk7Z0a1mw>
Subject: Re: [nfsv4] Review of draft-haynes-nfsv4-delstid-00
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/nfsv4/>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 May 2018 15:57:01 -0000

Hi Dave,

While read delegations may not allow the client to cache byte range locks,
they do allow it to cache OPENs provided that the application only asks for
a share lock of OPEN4_SHARE_DENY_NONE or OPEN4_SHARE_DENY_WRITE, in
combination with OPEN4_SHARE_ACCESS_READ. See for instance:
https://tools.ietf.org/html/rfc5661#section-10.4

Concerning your comments around the offline bit. I do agree that an open
mode requesting that the server fail if the file is offline would be useful
for a number of cases (e.g. when dealing with backup applications). One
main use case for the offline bit is to support existing desktop file
browsers that want to highlight files that are offline to ensure the user
does not try to open them.

Concerning the use of bitmaps in open-support, the problem is that the OPEN
flags are currently an unholy mixture of flags and bit fields (in the C
language sense). For instance, the OPEN4_SHARE_ACCESS_WANT_* are mostly a
bit field taking values between 0x0 and 0xFF, and so we require that
extensions for new share want modes will be adding values starting at
0x06... Furthermore, not all servers currently support all the existing
modes (e.g. OPEN4_SHARE_ACCESS_WANT_CANCEL), so we should require that
clients be able to detect this.
The same argument is true of the claim type: nobody currently implements
CLAIM_DELEGATE_PREV or CLAIM_DELEG_PREV_FH, so any future client that wants
to figure out if the server supports those modes cannot do so. Assuming
that just because the server implements CLAIM_FH, then it must implement
all the modes with values < CLAIM_FH is patently false.

Concerning your question around the time attribute proxying, the reason why
we should add new attributes, is because the behaviour of SETATTR using
these attributes differs from the behaviour when setting mtime and atime
directly. In particular, the behaviour of the ctime is very different. In
order to be able to emulate POSIX semantics on the client, we do not want
the server to change the ctime at all when we set the atime when returning
the delegation. If we're setting the mtime, we want the server to update
the ctime if and only if the new mtime is more recent than the existing
value for ctime.
This behaviour should only be allowed if the client holds the required
delegation type and uses these attributes. Otherwise, standard semantics
apply when setting the mtime and atime using the existing
time_access_set/time_modify_set attributes.

Cheers
   Trond
On Mon, 21 May 2018 at 13:10, David Noveck <davenoveck@gmail.com> wrote:

> I have read the document and believe all of the extensions suggested in
this document are worthy of serious consideration by the working group,
but, as we are unsure which of these the working group will choose to
pusue, I don't think we can be sure of the structure of the working group
document(s) that will be pursued.  I hope we will get a better sense of
that at IETF 102.

> There are a number of specific issues of presentation that I want to call
your attention to.   As these made it rather difficult to understand the
various individual extensions proposed, I suggest that you take note of
these in preparing further I-D versions.  Some of these might also be
useful in preparing your presentation for IETF 102.

> There was a lot of uncetainty about features involving delegations that
results from confusing text that mentions "delegations" but in fact only
refers to write delegations.  Note that read delegations do not give the
client the ability to open the file on the client without reference to the
server but much of the text assumes that returning any delegation will make
it unnecessary to return an open stateid.
> It is very confusing that section 2 includes two of your extensions
without clearly distinguishing between them.  Adding to the confusion is
the fact that the motivation of the open support attribute is dependent on
the added flags bits which appear later.  I suggest you give each of the
proposed extensions its own section, including a statement of the
motivation for it.  Note that section 4.1 is a good explanation of the need
for the time-attribute proxying feature but it is hidden and appears after
the feature is laid out.  The place for the motivation of a feature is near
the beginning of the description that feature.   After all, you know why
the feature is needed but you can't expect the reader to have the same
insight, and it is unrealistic to assume he is going to assimilate the
protocol details and then correlate them with text explaiing th motivation
that appears later.
> The material in sections 5 and 5.1 is distracting.   You need to look at
RFCs 8275 and 8276 as a model for dealing with XDR extension issues, rather
than the pNFS RFCs.   I don't see the need for a consolidated XDR file such
as is appropriate to a pNFS mapping type or a separate licensing section.

> With regard to the individual exensions, I have, in some cases, issues
with how you have chosen to do the feature while agreeing that these cover
important issues that it is worthwhile to address:

> With regard to the offline file support, I don't agree with the
assumption that the server will necessarily have to bring the file online
in order to open it.  Also, requiring him to do a GETATTR in one compound
and then decide whether to open the file adds to complexity.  Given that
you are extending open, you should consider bits that indicate that an
offline file is not to be opened, or that bringing the file online be
deferred until the first IO operation.  I still think the attribute is
useful but don't think it should be the only  piece of offline file support
specified.
> With regard to the open-support attribute. I like the general idea.  It
is certainly better than forcing the client to try various bits and deal
with NOTSUPP errors.  However, I think that basing this on bitmaps adds
unneded complexity, in that you need separate bit number definitions for
each existing flag and have the task of adding a bit nmber whenever you
extend the protocol by adding a flag.  It would be simpler for this
attribute to parallel the current definition of open and use flags where
OPEN uses flags.  Also, definition of bit numbers for combinations of flags
(e.g. _NONE, _BOTH) probably will become unworkable if we add more bits to
share and deny such as DELETE.
> With regard to the time-attribute-proxying feature, I don't understand
why new attributes are needed rather than basing this on  setting the
attributes that are being proxied.  One option that should be considered is
extending the union time_how to provide for this case. I also have problems
with requirements that SETATTR's be done the same in COMPOUND as the
DELEGRETURN.  I'm not sure why this is needed.  If it is really necessary
that setting of these attribute needs to be tightly bound to the delegation
return, an extended delegation return operation should be considered.   If
you do use SETATTRs, then the stateid would have to be that of the
delegation.  Given what section 18.30 of RFC5661 currently says about the
stateid in SETATTR, the very limited discussion of the stateid in that
section would have to be extended.   The best way to do that would for the
eventual RFC to include a new section essentially replacing section 18.30
of RFC5661.


> _______________________________________________
> nfsv4 mailing list
> nfsv4@ietf.org
> https://www.ietf.org/mailman/listinfo/nfsv4