Re: [nfsv4] Server-side copy question
Olga Kornievskaia <aglo@citi.umich.edu> Tue, 24 October 2017 15:52 UTC
Return-Path: <olga.kornievskaia@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 8677813939B for <nfsv4@ietfa.amsl.com>; Tue, 24 Oct 2017 08:52:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.399
X-Spam-Level:
X-Spam-Status: No, score=-2.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.199, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=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 A0iubmYQS2Mo for <nfsv4@ietfa.amsl.com>; Tue, 24 Oct 2017 08:52:19 -0700 (PDT)
Received: from mail-vk0-x22d.google.com (mail-vk0-x22d.google.com [IPv6:2607:f8b0:400c:c05::22d]) (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 73146139209 for <nfsv4@ietf.org>; Tue, 24 Oct 2017 08:52:19 -0700 (PDT)
Received: by mail-vk0-x22d.google.com with SMTP id j2so13698431vki.4 for <nfsv4@ietf.org>; Tue, 24 Oct 2017 08:52:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=KPftdDfUmDh2MDgXbAe4hyC0ip1Q2ntj3vyYG+MdJ64=; b=B2NVRO7h5ToqLxGIzHOgbvv410bfzqpNb8W5MK51f7fIcv3YkAm5kEPbprN791GwN6 0SWWtgqKtTGmU9dqlzBn5/CoJNuv+uZlvjwi/6XiF0zF4337XBbs/e3jDuFLgKz2DxfC 9W8zw1QEMi82p+FLDluXlkIJHDOXCQKGJE5qZTTOBfGYv8lfhJntr7Misl0EwKORKYG/ 4XTRAWG5oTbyuluKW+/gQ1GurpTn29Tgam3zlFpQebiHykDaWgxwGGhcZDws8iGkGIRR ldsl+UHN4BwLcsbPPqxzWw3E5OrlXZlT3S5Bvnk4SGJXDj52YoSMUbsnYkKLf7ZiIngi s72A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=KPftdDfUmDh2MDgXbAe4hyC0ip1Q2ntj3vyYG+MdJ64=; b=bWVGvEblGkXJ+g1jGmy5CW3W3E6OgdWhhhW7d20abpjefSuH6wytnkFIyqMazmDrhc BsfTu7ElOI2AwAqkMD7txz6oZxIenPVMjexB+2bFUy/KEl9fQQ5sfr+oEgn8Tou2K6eR Rss6nbY/7LpQ8V0opM7ZkaWhF+3JHzoi9BSWtaC+P3wgIXkjJfXnz6yDfC2jM2wZ8WmW 8k9igywnUgR08zbRFmQRwBQKqZLfSS8Jq2aBH6LyPRSH8Mi82kRmQf2uVa29JmdQ9jwF T4eZUapJ9yuCEjSe1aB80m3ABNvAfN2CBlTTQvMTMLZSN3vh5ZBzWlg5SB0OqFv5w19p 30Qw==
X-Gm-Message-State: AMCzsaVTUKKdhFVgDx8eHtr2ydg8QoYEXj5YN2HccJCLd0piX+DHYjyZ zxj6IxRnJZfZsYNWJFugMEhSzdfjPr4PZxQlepM=
X-Google-Smtp-Source: ABhQp+Tt06VYG6OOIMR37kvOhXanytSGP2cGE3ai4ikRvc6Swz7yfmaNOWMh957PQVACzuU28PIRgk0qJkpDX3600mY=
X-Received: by 10.31.89.7 with SMTP id n7mr12375979vkb.77.1508860338275; Tue, 24 Oct 2017 08:52:18 -0700 (PDT)
MIME-Version: 1.0
Sender: olga.kornievskaia@gmail.com
Received: by 10.103.59.202 with HTTP; Tue, 24 Oct 2017 08:52:17 -0700 (PDT)
In-Reply-To: <CADaq8jdWkTfQB-Y55ow1A23AGCVM12LtwjXYZ6E7zU7M=Aw89g@mail.gmail.com>
References: <CADaq8jc6vWdXonTs3795QWO8SWJTudo=x9=gR4uKN+tnfBk+dw@mail.gmail.com> <20170224222135.GJ26378@fieldses.org> <CAN-5tyHJb=ercWh_W2uzPfKR86j=dGWx=zYH1y+TjbNTzYh38A@mail.gmail.com> <20170228164420.GA28845@fieldses.org> <CADaq8jdivTUVNx2LXCiecAKY-nfoZP_XoAoNLwc3V1TUD6X8vg@mail.gmail.com> <CC84C4DB-F00F-45FC-8307-BDA5424DA480@netapp.com> <20170228173215.GA29700@fieldses.org> <CAN-5tyF8EZjYNX3cE43BPM9CbxVLygRdPuTJf_RgC7ntDCf9Kg@mail.gmail.com> <20171020193306.GF15211@fieldses.org> <CAN-5tyHaJeis=_f9h9u1St76Og3A_TtBUxZx_Z=ZouG7sa2=6w@mail.gmail.com> <20171024013646.GA22943@fieldses.org> <CADaq8jdWkTfQB-Y55ow1A23AGCVM12LtwjXYZ6E7zU7M=Aw89g@mail.gmail.com>
From: Olga Kornievskaia <aglo@citi.umich.edu>
Date: Tue, 24 Oct 2017 11:52:17 -0400
X-Google-Sender-Auth: a1zE2vKq8sHXYACU83UgAvV8OWU
Message-ID: <CAN-5tyHM5suS=iqP0XL3pD2i2YYtU2k1Wd1jnHb+FT52sXzsHw@mail.gmail.com>
To: David Noveck <davenoveck@gmail.com>
Cc: "J. Bruce Fields" <bfields@fieldses.org>, "nfsv4@ietf.org" <nfsv4@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/oI95CfEAUIH2AVTqVNuT1F6IeeI>
Subject: Re: [nfsv4] Server-side copy question
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: Tue, 24 Oct 2017 15:52:27 -0000
On Tue, Oct 24, 2017 at 7:43 AM, David Noveck <davenoveck@gmail.com> wrote: >> So in the short write case it sounds like it *is* the server's >> responsibility to commit. > > Perhaps it should be the server's responsibility, but it is not, > according to RFC7862 > >> That's weird, > > I agree that it is wierd. I feel it is well-intentioned but not viable > since > you are essentially creating your own protocol, if clients depend on > this behavior an there is no point in doing it, if clients do not. > >> but as long as the short write >> case is rare, maybe it's not a big deal? > > From a performance point of view, it is not a big deal. However it is > a big deal that the spec is broken. I hate when that happens :-( > >>Hm: "The coa_bytes_copied value indicates the number of bytes copied but >> not which specific bytes have been copied." That makes coa_bytes_copied >> pretty much worthless. > > Any non-zero value of coa_bytes_copied is worthless because the client does > not know: > > Which particular bytes were copied > Whether those bytes were copied to the destination stably > How to commit any non-stably-written bytes. > >>I guess I'd be in favor of using the NFS_OK branch of CB_OFFLOAD >> whenever a nonzero number of bytes is copied. > > That's likely to create an interoperability problem, since there are almost > certainly clients who assume that when there is no error, all requested > bytes > have been copied. I don't think it's true that clients would assume this. I think the client can only assume server copied as many bytes as it was specified in the CB_OFFLOAD bytes_copied regardless of how many bytes the client had asked for. At least that's how I read the spec. > Basically, the server is pretending there is no error and Yes, pretending that there was no error is the part I'm not totally comfortable with. And I agree with the comments that the client can try again to get the same error. > then > relying on the client to figure out that there was one, which could only be > done if the > spec tells the clients about this. If RFC7862 doesn't do this, you wind up > essentially creating a private protocol. > >> If less than the >> requested number of bytes were copied, the client can always find out >> the error (if any) by attempting to copy the rest. > > Unfortunately there is no way of determining which bytes were copied so > there > is no way of knowing "the rest", i.e. the bytes not copied I would like to understand the comment by Bruce and you about not knowing which bytes were copied. I don't understand why it would not be the bytes from the offset to offset+bytes_copied? And Dave, wouldn't the "rest of the bytes" be the request length - bytes_copied? What am I missing? If you are suggested that the server is allowed to copy a requested range in any order of smaller chunks then there is a problem with a non-error case because we don't returned in COPY/CB_OFFLOAD offset and bytes_copied (just bytes_copied). I think we know which bytes are copied we just don't know how they were copied: stable or not (if the server chooses to specify an error in CB_OFFLOAD). > On Mon, Oct 23, 2017 at 9:36 PM, J. Bruce Fields <bfields@fieldses.org> > wrote: >> >> On Mon, Oct 23, 2017 at 05:43:42PM -0400, Olga Kornievskaia wrote: >> > On Fri, Oct 20, 2017 at 3:33 PM, J. Bruce Fields <bfields@fieldses.org> >> > wrote: >> > > On Wed, Oct 18, 2017 at 05:22:08PM -0400, Olga Kornievskaia wrote: >> > >> On Tue, Feb 28, 2017 at 12:32 PM, J. Bruce Fields >> > >> <bfields@fieldses.org> wrote: >> > >> > On Tue, Feb 28, 2017 at 05:04:27PM +0000, Adamson, Andy wrote: >> > >> >> I also thought that bytes copied is only included in the success >> > >> >> case – but as Olga pointed out, not true. The coa_status of NFS4_OK has the >> > >> >> coa_resok4->wr_count showing the bytes copied, and the default (e.g. failure >> > >> >> cases) has the coa_bytes_copied. >> > >> >> >> > >> >> So the server can send a CB_OFFLOAD with an error (such as the >> > >> >> –EINVAL in the example) and send the bytes copied in coa_bytes_copied. >> > >> >> >> > >> >> union offload_info4 switch (nfsstat4 coa_status) { >> > >> >> case NFS4_OK: >> > >> >> write_response4 coa_resok4; >> > >> >> default: >> > >> >> length4 coa_bytes_copied; >> > >> >> }; >> > >> > >> > >> > Gah, I'm sorry, Olga said CB_OFFLOAD but for some reason I was >> > >> > looking >> > >> > at COPY. >> > >> > >> > >> > I have no idea what to think of that. I don't see why it should be >> > >> > different from COPY. >> > >> >> > >> I'd like to resurrect this thread... >> > >> >> > >> This discussion was initiated to allow for the server to do a partial >> > >> copy instead of failing the copy with EINVAL when copy is requested >> > >> beyond the end of the file. >> > >> >> > >> However, the problem I'm running into is that because CB_OFFLOAD only >> > >> returns "coa_bytes_copied" and does not include stable_how and >> > >> verifier. So even if client were to then send a COMMIT for the bytes >> > >> that were copied, it has no verifier to match from the COMMIT to >> > >> anything. >> > >> >> > >> Should the client then ignore the lack of the matching verifier and >> > >> just assume the data was committed for the partial bytes? >> > > >> > > Yes, sounds like in the asynchronous case the server has to wait for >> > > the >> > > writes to reach disk before calling CB_OFFLOAD. (Do we currently do >> > > that?). >> > >> > Why? No the spec does not require the server to do no such thing. The >> > server sends back in CB_OFFLOAD if the bytes were written as UNSTABLE >> > or FILE_SYNC. >> >> Look back at what you said before.... So the problem you were >> explaining (missing stable_how and verifier) was only for the short >> write case? Yes. >> So in the short write case it sounds like it *is* the server's >> responsibility to commit. I disagree. I don't see anywhere in the spec that requires the server to do that. >> That's weird, but as long as the short write >> case is rare, maybe it's not a big deal? >> >> Hm: "The coa_bytes_copied value indicates the number of bytes copied but >> not which specific bytes have been copied." That makes coa_bytes_copied >> pretty much worthless. Yep that's what I thought. >> I guess I'd be in favor of using the NFS_OK branch of CB_OFFLOAD >> whenever a nonzero number of bytes is copied. If less than the >> requested number of bytes were copied, the client can always find out >> the error (if any) by attempting to copy the rest. Ok >> >> --b. >> >> > >> > > In theory that shouldn't be too expensive because asynchronous COPY >> > > should normally be done with a very large range. >> > > >> > > (I wonder if the server should just do a synchronous copy if the copy >> > > would be less than a few megs?) >> > >> > Yes the server could determine to convert an asynchronous copy into a >> > synchronous one based on size. >> > >> > I guess I'm still confused how to handle the implementation so that it >> > doesn't kill interoperability with other possible (future) >> > implementations... >> >> _______________________________________________ >> nfsv4 mailing list >> nfsv4@ietf.org >> https://www.ietf.org/mailman/listinfo/nfsv4 > >
- [nfsv4] Server-side copy question Mora, Jorge
- Re: [nfsv4] Server-side copy question David Noveck
- Re: [nfsv4] Server-side copy question Thomas Haynes
- Re: [nfsv4] Server-side copy question J. Bruce Fields
- Re: [nfsv4] Server-side copy question David Noveck
- Re: [nfsv4] Server-side copy question Trond Myklebust
- Re: [nfsv4] Server-side copy question David Noveck
- Re: [nfsv4] Server-side copy question Trond Myklebust
- Re: [nfsv4] Server-side copy question David Noveck
- Re: [nfsv4] Server-side copy question J. Bruce Fields
- Re: [nfsv4] Server-side copy question David Noveck
- Re: [nfsv4] Server-side copy question J. Bruce Fields
- Re: [nfsv4] Server-side copy question Olga Kornievskaia
- Re: [nfsv4] Server-side copy question J. Bruce Fields
- Re: [nfsv4] Server-side copy question David Noveck
- Re: [nfsv4] Server-side copy question Adamson, Andy
- Re: [nfsv4] Server-side copy question J. Bruce Fields
- Re: [nfsv4] Server-side copy question Olga Kornievskaia
- Re: [nfsv4] Server-side copy question J. Bruce Fields
- Re: [nfsv4] Server-side copy question Olga Kornievskaia
- Re: [nfsv4] Server-side copy question J. Bruce Fields
- Re: [nfsv4] Server-side copy question David Noveck
- Re: [nfsv4] Server-side copy question Olga Kornievskaia
- Re: [nfsv4] Server-side copy question J. Bruce Fields
- Re: [nfsv4] Server-side copy question J. Bruce Fields
- Re: [nfsv4] Server-side copy question David Noveck
- Re: [nfsv4] Server-side copy question Olga Kornievskaia