Re: [nfsv4] parallel LAYOUTGETs using open stateid
Benny Halevy <bhalevy@panasas.com> Wed, 24 November 2010 22:32 UTC
Return-Path: <bhalevy@panasas.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 4ABB028C175 for <nfsv4@core3.amsl.com>; Wed, 24 Nov 2010 14:32:26 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.274
X-Spam-Level:
X-Spam-Status: No, score=-3.274 tagged_above=-999 required=5 tests=[AWL=-1.009, BAYES_00=-2.599, IP_NOT_FRIENDLY=0.334]
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 ntixYgRaueSv for <nfsv4@core3.amsl.com>; Wed, 24 Nov 2010 14:32:25 -0800 (PST)
Received: from daytona.panasas.com (daytona.panasas.com [67.152.220.89]) by core3.amsl.com (Postfix) with ESMTP id 4D8DE28C1A8 for <nfsv4@ietf.org>; Wed, 24 Nov 2010 14:32:24 -0800 (PST)
Received: from fs1.bhalevy.com ([172.17.33.15]) by daytona.panasas.com with Microsoft SMTPSVC(6.0.3790.4675); Wed, 24 Nov 2010 17:33:24 -0500
Message-ID: <4CED92B3.10400@panasas.com>
Date: Thu, 25 Nov 2010 00:33:23 +0200
From: Benny Halevy <bhalevy@panasas.com>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101027 Fedora/3.1.6-1.fc13 Thunderbird/3.1.6
MIME-Version: 1.0
To: Trond Myklebust <Trond.Myklebust@netapp.com>
References: <AANLkTinZ1t1YbL55vkT0OJ0i2j9AqNuvFStTwFoGO-dB@mail.gmail.com> <AANLkTin+0BG=u3o2DZcHgdODoaznePOeTrmQJfh9C6Ym@mail.gmail.com> <4CADD6C7.7030400@panasas.com> <AANLkTindm47sCPBtxAaMhhCtyghWkhJ6VHiP++0PooK1@mail.gmail.com> <1290551533.16684.16.camel@heimdal.trondhjem.org>
In-Reply-To: <1290551533.16684.16.camel@heimdal.trondhjem.org>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 24 Nov 2010 22:33:25.0103 (UTC) FILETIME=[9B859FF0:01CB8C27]
Cc: nfsv4@ietf.org
Subject: Re: [nfsv4] parallel LAYOUTGETs using open stateid
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: Wed, 24 Nov 2010 22:32:26 -0000
On 2010-11-24 00:32, Trond Myklebust wrote: > On Tue, 2010-11-02 at 00:47 -0400, Fred Isaman wrote: >> On Thu, Oct 7, 2010 at 10:18 AM, Benny Halevy <bhalevy@panasas.com> wrote: >>> On 2010-10-07 09:50, Benny Halevy wrote: >>>> On Thu, Oct 7, 2010 at 9:21 AM, Fred Isaman <iisaman@citi.umich.edu> wrote: >>>>> This question came up as I was going through our layout stateid code. >>>>> >>>>> Can the client send multiple LAYOUTGETs in parallel before getting a >>>>> layoutstateid by using an open stateid? >>>>> If so, what is the server response? The spec is not clear, but I >>>>> would assume it would do one of: >>>>> a) returning an error (what error?) on all but the first LAYOUTGET it sees >>>>> b) matching the openstateid to the layoutstateid it has already given >>>>> out and sending a reply with that stateid and a bumped seqid >>>> >>>> I'm in favour of (b). >>> >>> Just to clarify, what matters in this case is the returned logr_stateid >>> and seqid while the sent loga_stateid does not matter much. >>> If there's a pending layout recall on the server which has not been >>> completed by a matching LAYOUTRETURN the server can safely assume >>> that the layoutget was sent before the client received the CB_LAYOUTRECALL >>> and return NFS4ERR_RECALLCONFLICT. >>> >>> Benny >>> >>>> Are there any problems you see in that approach? >>>> >>>> Benny >> >> After giving this more thought, I have decided that, because of the >> forgetful model, the spec gives the server no choice when responding >> to a LAYOUTGET(openstateid) but to assume that the client has >> forgotten all previous layouts, so it must hand out a new stateid. >> Which means that the client MUST serialize any openstate LAYOUTGETs, >> since otherwise it has no means to determine which order the server >> processed them, which means it can't tell which is the single >> currently valid response (which would be the one the server processed >> last.) > > The other point here is that section 18.43.3 explicitly states that > > "Once a layout is held on the file by the client, the > loga_stateid field MUST be a stateid as returned from a previous > LAYOUTGET or LAYOUTRETURN operation or provided by a > CB_LAYOUTRECALL operation" > > Leaving aside the issue of why we would even bother allowing the client > to use a layout stateid as a loga_stateid, if you can just send the open > stateid and expect the same results; the above text is very explicit. If > the client thinks it holds a layout, it MUST send the layout stateid. If > not, the server must clearly be entitled to assume that the client > believes that it doesn't hold a layout. That won't hold water if the client is allowed to send multiple such LAYOUTGETs in parallel. Benny > > Cheers > Trond
- [nfsv4] parallel LAYOUTGETs using open stateid Fred Isaman
- Re: [nfsv4] parallel LAYOUTGETs using open stateid Benny Halevy
- Re: [nfsv4] parallel LAYOUTGETs using open stateid Benny Halevy
- Re: [nfsv4] parallel LAYOUTGETs using open stateid Fred Isaman
- Re: [nfsv4] parallel LAYOUTGETs using open stateid Trond Myklebust
- Re: [nfsv4] parallel LAYOUTGETs using open stateid Benny Halevy
- Re: [nfsv4] parallel LAYOUTGETs using open stateid Fred Isaman
- Re: [nfsv4] parallel LAYOUTGETs using open stateid Benny Halevy
- Re: [nfsv4] parallel LAYOUTGETs using open stateid Fred Isaman
- Re: [nfsv4] parallel LAYOUTGETs using open stateid William A. (Andy) Adamson
- Re: [nfsv4] parallel LAYOUTGETs using open stateid Benny Halevy