Re: [nfsv4] Write-behind caching

Spencer Shepler <sshepler@microsoft.com> Tue, 26 October 2010 02:05 UTC

Return-Path: <sshepler@microsoft.com>
X-Original-To: nfsv4@core3.amsl.com
Delivered-To: nfsv4@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id BE7253A68A8 for <nfsv4@core3.amsl.com>; Mon, 25 Oct 2010 19:05:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.441
X-Spam-Level:
X-Spam-Status: No, score=-10.441 tagged_above=-999 required=5 tests=[AWL=0.158, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PkKuMojbx2cd for <nfsv4@core3.amsl.com>; Mon, 25 Oct 2010 19:05:07 -0700 (PDT)
Received: from smtp.microsoft.com (mail1.microsoft.com [131.107.115.212]) by core3.amsl.com (Postfix) with ESMTP id 2D8683A67D6 for <nfsv4@ietf.org>; Mon, 25 Oct 2010 19:05:07 -0700 (PDT)
Received: from TK5EX14MLTC101.redmond.corp.microsoft.com (157.54.79.178) by TK5-EXGWY-E801.partners.extranet.microsoft.com (10.251.56.50) with Microsoft SMTP Server (TLS) id 8.2.176.0; Mon, 25 Oct 2010 19:06:53 -0700
Received: from TK5EX14MBXC126.redmond.corp.microsoft.com ([169.254.11.204]) by TK5EX14MLTC101.redmond.corp.microsoft.com ([157.54.79.178]) with mapi id 14.01.0255.003; Mon, 25 Oct 2010 19:06:53 -0700
From: Spencer Shepler <sshepler@microsoft.com>
To: "david.noveck@emc.com" <david.noveck@emc.com>, "nfsv4@ietf.org" <nfsv4@ietf.org>
Thread-Topic: Write-behind caching
Thread-Index: Act0sTwJi7tX/aDpTA+jC4LSYbZLZwAALReA
Date: Tue, 26 Oct 2010 02:06:52 +0000
Message-ID: <E043D9D8EE3B5743B8B174A814FD584F0D498D54@TK5EX14MBXC126.redmond.corp.microsoft.com>
References: <BF3BB6D12298F54B89C8DCC1E4073D80028C76DB@CORPUSMX50A.corp.emc.com>
In-Reply-To: <BF3BB6D12298F54B89C8DCC1E4073D80028C76DB@CORPUSMX50A.corp.emc.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [157.54.51.71]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Subject: Re: [nfsv4] Write-behind caching
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/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, 26 Oct 2010 02:05:08 -0000

Since this description is part of the general pNFS description, the
intent may have been to cover a variety of layout types.  However,
I agree that the client is not guaranteed access to the layout and
is fully capable of writing the data via the MDS if all else
fails (inability to obtain the layout after a return); it may not
be the most performant path but it should be functional.  And maybe
that is the source of the statement that the client should take
care in managing its dirty pages given the lack of guarantee of
access to the supposed, higher throughput path for writing data.

As implementation guidance it seems okay but truly a requirement
for correct function.

Spencer

> -----Original Message-----
> From: nfsv4-bounces@ietf.org [mailto:nfsv4-bounces@ietf.org] On Behalf Of
> david.noveck@emc.com
> Sent: Monday, October 25, 2010 6:58 PM
> To: nfsv4@ietf.org
> Subject: [nfsv4] Write-behind caching
> 
> The following statement appears at the bottom of page 292 of RFC5661.
> 
>    However, write-behind caching may negatively
>    affect the latency in returning a layout in response to a
>    CB_LAYOUTRECALL; this is similar to file delegations and the impact
>    that file data caching has on DELEGRETURN.  Client implementations
>    SHOULD limit the amount of unwritten data they have outstanding at
>    any one time in order to prevent excessively long responses to
>    CB_LAYOUTRECALL.
> 
> This does not seem to make sense to me.
> 
> First of all the analogy between DELEGRETURN and
> CB_LAYOUTRECALL/LAYOUTRETURN doesn't seem to me to be correct.  In the
> case of DELEGRETURN, at least if the file in question has been closed,
> during the pendency of the delegation, you do need to write all of the
> dirty data associated with those previously open files.  Normally, clients
> just write all dirty data.
> 
> LAYOUTRETURN does not have that sort of requirement.  If it is valid to
> hold the dirty data when you do have the layout, it is just as valid to
> hold it when you don't.  You could very well return the layout and get it
> again before some of those dirty blocks are written.  Having a layout
> grants you the right to do IO using a particular means (different based on
> the mapping type), but if you don't have the layout, you still have a way
> to do the writeback, and there is no particular need to write back all the
> data before returning the layout.  As mentioned above, you may well get
> the layout again before there is any need to actually do the write-back.
> 
> You have to wait until IO's that are in flight are completed before you
> return the layout.  However, I don't see why you would have to or want to
> start new IO's using the layout if you have received a CB_LAYOUTRECALL..
> 
> Am I missing something?  Is there some valid reason for this statement?
> Or should this be dealt with via the errata mechanism?
> 
> What do existing clients actually do with pending writeback data when they
> get a CB_LAYOUTRECALL?  Do they start new IO's using the layout?
> If so, is there any other reason other than the paragraph above?
> _______________________________________________
> nfsv4 mailing list
> nfsv4@ietf.org
> https://www.ietf.org/mailman/listinfo/nfsv4