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

"Mkrtchyan, Tigran" <tigran.mkrtchyan@desy.de> Tue, 24 July 2018 10:37 UTC

Return-Path: <tigran.mkrtchyan@desy.de>
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 016C71310A6 for <nfsv4@ietfa.amsl.com>; Tue, 24 Jul 2018 03:37:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.299
X-Spam-Level:
X-Spam-Status: No, score=-4.299 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HK_RANDOM_ENVFROM=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=desy.de
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 7Ucyqnk0c_Iu for <nfsv4@ietfa.amsl.com>; Tue, 24 Jul 2018 03:37:35 -0700 (PDT)
Received: from smtp-o-1.desy.de (smtp-o-1.desy.de [IPv6:2001:638:700:1038::1:9a]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0870F130DE8 for <nfsv4@ietf.org>; Tue, 24 Jul 2018 03:37:34 -0700 (PDT)
Received: from smtp-buf-1.desy.de (smtp-buf-1.desy.de [IPv6:2001:638:700:1038::1:a4]) by smtp-o-1.desy.de (DESY-O-1) with ESMTP id 2C036280372 for <nfsv4@ietf.org>; Tue, 24 Jul 2018 12:37:32 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 smtp-o-1.desy.de 2C036280372
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=desy.de; s=default; t=1532428652; bh=mE6xzm53O3vwujzhayUrog5vgihfYoqyZSTQ5wUj+Ws=; h=Date:From:To:Cc:In-Reply-To:References:Subject:From; b=XzcJQyawNILrsedaC5KQ1LemmKW0JBxMg6IVda414cE3cYEvCia0DItkH88zsrbpH dL5LkwkQKoJM/UYTaRy+AGKs82xSXvUtdkcZp/TaZPFghBlb5LBMoW4PGjdDRVx0qL 7fj7lcX0h99n1uSPSWMX0v4rLMCO9xkTv1Yyjpoo=
Received: from smtp-map-1.desy.de (smtp-map-1.desy.de [131.169.56.66]) by smtp-buf-1.desy.de (Postfix) with ESMTP id 24D071201D4; Tue, 24 Jul 2018 12:37:32 +0200 (CEST)
X-Virus-Scanned: amavisd-new at desy.de
Received: from z-mbx-2.desy.de (z-mbx-2.desy.de [131.169.55.140]) by smtp-intra-1.desy.de (DESY-INTRA-1) with ESMTP id 8EAD53E901; Tue, 24 Jul 2018 12:37:31 +0200 (MEST)
Date: Tue, 24 Jul 2018 12:37:31 +0200
From: "Mkrtchyan, Tigran" <tigran.mkrtchyan@desy.de>
To: Trond Myklebust <trondmy@gmail.com>
Cc: Dave Noveck <davenoveck@gmail.com>, NFSv4 <nfsv4@ietf.org>, Tom Haynes <loghyr@gmail.com>, Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
Message-ID: <1315090456.28962271.1532428651492.JavaMail.zimbra@desy.de>
In-Reply-To: <CAABAsM5UBw+wqLbVrKq5VO7TAj3AgAZX3jmk+cw2xmZc9BvBig@mail.gmail.com>
References: <CADaq8jdspqcMkpO=zoLGDWzn91m0oeca9HC2jUJ0ne=LnuLwNg@mail.gmail.com> <CAABAsM5UBw+wqLbVrKq5VO7TAj3AgAZX3jmk+cw2xmZc9BvBig@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-Mailer: Zimbra 8.7.11_GA_1854 (ZimbraWebClient - FF61 (Linux)/8.7.11_GA_1854)
Thread-Topic: Review of draft-haynes-nfsv4-delstid-00
Thread-Index: hKgXLPQMr7OznOJfQ4YMqFKelnsNvw==
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/jvSeUY3N00HgvZFNXbbaE7_CWvo>
Subject: Re: [nfsv4] Review of draft-haynes-nfsv4-delstid-00
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.27
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: Tue, 24 Jul 2018 10:37:39 -0000

Hi Trond,

----- Original Message -----
> From: "Trond Myklebust" <trondmy@gmail.com>
> To: "Dave Noveck" <davenoveck@gmail.com>
> Cc: "NFSv4" <nfsv4@ietf.org>, "Thomas Haynes" <loghyr@primarydata.com>
> Sent: Wednesday, May 30, 2018 5:56:44 PM
> Subject: Re: [nfsv4] Review of draft-haynes-nfsv4-delstid-00

> 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.


I very much like the idea of offline bit. However, for me, your proposal doesn't go
deep enough. First of all, not all offline storage systems have a similar latency.
A S3 storage may have couple of seconds, but with a tape archive you can easily get
minutes, hours or, in extreme case, even days. Thus, if you are introducing a new attribute,
may be instead of binary switch add something like an 'estimated access latency',
with zero for online files and other values for offline files:


const FATTR4_ACCESS_LATENCY            = 83;
typedef nfstime4 fattr4_estimated_access_latency;


The value is a hint, of course.

Finally, an open flag OPEN4_ONLINE_ONLY will make life much simpler for end-user applications.
A corresponding error like NFS4ERR_OFFLINE or NFS4ERR_DELAY will tell client that it
have to explicitly ask for bringing files ONLINE. However, we our old-good friend POSIX
will resist, as usual. O_NONBLOCK is not allowed for regular files and EAGAIN is not
a valid error code for open call.

BTW, how you want to propagate offline bit to a file browser?

Regards,
   Tigran.


> 
> 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
> 
> _______________________________________________
> nfsv4 mailing list
> nfsv4@ietf.org
> https://www.ietf.org/mailman/listinfo/nfsv4