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

"Mkrtchyan, Tigran" <tigran.mkrtchyan@desy.de> Wed, 25 July 2018 15:15 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 67D071271FF for <nfsv4@ietfa.amsl.com>; Wed, 25 Jul 2018 08:15:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.3
X-Spam-Level:
X-Spam-Status: No, score=-4.3 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] 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 ehm176CMIap6 for <nfsv4@ietfa.amsl.com>; Wed, 25 Jul 2018 08:15:55 -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 C7A42126CC7 for <nfsv4@ietf.org>; Wed, 25 Jul 2018 08:15:54 -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 EA4C3280B5D for <nfsv4@ietf.org>; Wed, 25 Jul 2018 17:15:52 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 smtp-o-1.desy.de EA4C3280B5D
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=desy.de; s=default; t=1532531753; bh=7SLDU8SyTnbkuG067n4/xZiJTRoyYww45JUZ32rvDGc=; h=Date:From:To:Cc:In-Reply-To:References:Subject:From; b=h0h9lAfACOUUsbEnhwy0fMdHqeR0jeBge4Spw1ttV9p3gReLAmuTBi35UtV14Rj3r dV5Fw1I0KZR0O26jmZ5IuJTAz97N3geqfY0Hhqrff9sOF9bsdbMvWW8BtQs5KXNUBJ AJVXXfoSiYHfrcpGv8SODeEVDcA5ICAqn92pAlp0=
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 E341B1201D4; Wed, 25 Jul 2018 17:15:52 +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 6C5563E901; Wed, 25 Jul 2018 17:14:52 +0200 (MEST)
Date: Wed, 25 Jul 2018 17:14:52 +0200
From: "Mkrtchyan, Tigran" <tigran.mkrtchyan@desy.de>
To: Trond Myklebust <trondmy@gmail.com>
Cc: Tom Haynes <loghyr@gmail.com>, Dave Noveck <davenoveck@gmail.com>, NFSv4 <nfsv4@ietf.org>
Message-ID: <1426681172.29321334.1532531692330.JavaMail.zimbra@desy.de>
In-Reply-To: <529819b6fc0ab1e8fe9b7f664e6e4b387a8e01b5.camel@gmail.com>
References: <CADaq8jdspqcMkpO=zoLGDWzn91m0oeca9HC2jUJ0ne=LnuLwNg@mail.gmail.com> <CAABAsM5UBw+wqLbVrKq5VO7TAj3AgAZX3jmk+cw2xmZc9BvBig@mail.gmail.com> <1315090456.28962271.1532428651492.JavaMail.zimbra@desy.de> <071EA66F-40E1-4889-8717-2B8E9F4A6D38@gmail.com> <529819b6fc0ab1e8fe9b7f664e6e4b387a8e01b5.camel@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
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: LJuFrGsj6VoVNhQFV9x5kFI/MQ/MVA==
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/whgS_QH9sOzAb8yEU3NlYKzeb0s>
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: Wed, 25 Jul 2018 15:16:00 -0000


----- Original Message -----
> From: "Trond Myklebust" <trondmy@gmail.com>
> To: "Tom Haynes" <loghyr@gmail.com>, "Tigran Mkrtchyan" <tigran.mkrtchyan@desy.de>
> Cc: "Dave Noveck" <davenoveck@gmail.com>, "NFSv4" <nfsv4@ietf.org>
> Sent: Tuesday, July 24, 2018 7:12:17 PM
> Subject: Re: [nfsv4] Review of draft-haynes-nfsv4-delstid-00

> Hi Tigran,
> I think both these proposals are interesting, but I agree with Tom that
> there is a problem with any proposal that requires rewriting
> applications in order to make use of the APIs being exposed. Unless you
> are just going to use FATTR4_ACCESS_LATENCY in the same way that you
> would use an 'online/offline' state variable, you would need to get
> user or application level input in order to determine a latency
> acceptance criterion. You would then need application policy about what
> to do if the server exceeds that latency acceptance (e.g. due to tape
> robot congestion or cloud archiving service level agreements)...
> Ditto for the OPEN4_ONLINE_ONLY flag; that is not supported by any
> POSIX API, so we'd also have to rewrite applications specifically for
> that interface.

Yes, you are right. It's hard to use it effective without changing applications.
However, if we could...


 fd = open(file, O_NONBLOCK);
 if ( fd >=0 ) {
    // generate thumbnail
 } else if (errno != EAGAIN) {
   // fail
 }



You can imagine that we have this issue for years. Currently we return
EACCESS on first IO (LAYOUTGET), which is not spec compliant either.

Thanks,
   Tigran.

> That said, both suggestions could be used to implement our use case, so
> if you have a compelling use case that requires these enhanced APIs
> then we can work with that.
> Cheers   Trond
> On Tue, 2018-07-24 at 08:17 -0700, Tom Haynes wrote:
>> Hi Tigran,
>> Thanks for the questions.
>> 
>> 
>> 
>> > On Jul 24, 2018, at 3:37 AM, Mkrtchyan, Tigran <
>> > tigran.mkrtchyan@desy.de> wrote:
>> > 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.
>> 
>> I don’t think Linux has the concept of an offline file. Windows does,
>> but it only has theboolean value.
>> So either the client or Samba server would have to translate this
>> range to a binary value?
>> I’m not saying no, I’m asking how this would be used.
>> Another thing here is that I tend to think not just in the access
>> latency, but also in thecost of loading the file. I.e., if it is on-
>> site and on a tape archive, I may have a low cost,but high latency to
>> load the file. This is versus something in the cloud, which maybe
>> high cost but low(er) latency.
>> Perhaps my above question about how this would be used really
>> reflects that thevalue is subjective.
>> > 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.
>> 
>> So the client blocks the open call until it succeeds? Yes, I
>> understand this may not be allowed.
>> 
>> > BTW, how you want to propagate offline bit to a file browser?
>> 
>> I assume it is either an extended attribute or something that gets
>> retransmitted over another protocol.
>> I.e., in the case we have the Data Portal (translates NFSv3 or SMB to
>> NFSv4) will use NFSv4 toget the attribute and then the Samba code
>> will send the offline state over SMB to the client.
>> 
>> > 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