Re: [nfsv4] parallel LAYOUTGETs using open stateid

Fred Isaman <iisaman@citi.umich.edu> Tue, 02 November 2010 04:47 UTC

Return-Path: <faisaman4@gmail.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 BD8DD3A6403 for <nfsv4@core3.amsl.com>; Mon, 1 Nov 2010 21:47:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.977
X-Spam-Level:
X-Spam-Status: No, score=-1.977 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
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 DF3k5rjxBl3x for <nfsv4@core3.amsl.com>; Mon, 1 Nov 2010 21:47:40 -0700 (PDT)
Received: from mail-bw0-f44.google.com (mail-bw0-f44.google.com [209.85.214.44]) by core3.amsl.com (Postfix) with ESMTP id 4BB963A66B4 for <nfsv4@ietf.org>; Mon, 1 Nov 2010 21:47:40 -0700 (PDT)
Received: by bwz12 with SMTP id 12so5613290bwz.31 for <nfsv4@ietf.org>; Mon, 01 Nov 2010 21:47:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=MaR+bWESdC1wg023Tc1UjFta+I2K3ikmI17bLWJF+bA=; b=L/sMuhHduA+LcH/leLZfyZDpiZyv0yVNT8iODEw61O0U4RaS+ZOn0xwN8Ss57p9Xvt a04lDMBDuKHR/EM/9a6wgT6TRUx3jQrvKROf676gVVmRYu7AGfdxJP/HlSer7Hw7SsHQ z7Qvhz6AskYQs5n9mooVKfGpm6MoypZg0g1Pg=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=GR9Dfoq1vpYS3WGrqbVOaDtwObGCnpAR4ncbpwknELbitx/BnDAStepWjNA2IcJsFt Bh9wLEd42M71mkLki1rez09MOk5Y7mfdUCeiN3NFEJMsNzd0/ZShCxHRRsS5xAyAKAud OxwDJZzPLYM4umWUCerQiH4Y+paanzOtlv7R0=
MIME-Version: 1.0
Received: by 10.204.126.167 with SMTP id c39mr13947782bks.125.1288673262752; Mon, 01 Nov 2010 21:47:42 -0700 (PDT)
Sender: faisaman4@gmail.com
Received: by 10.204.23.198 with HTTP; Mon, 1 Nov 2010 21:47:42 -0700 (PDT)
In-Reply-To: <4CADD6C7.7030400@panasas.com>
References: <AANLkTinZ1t1YbL55vkT0OJ0i2j9AqNuvFStTwFoGO-dB@mail.gmail.com> <AANLkTin+0BG=u3o2DZcHgdODoaznePOeTrmQJfh9C6Ym@mail.gmail.com> <4CADD6C7.7030400@panasas.com>
Date: Tue, 02 Nov 2010 00:47:42 -0400
X-Google-Sender-Auth: kAEXd46deNwP2NTTNSS9eCCx3fw
Message-ID: <AANLkTindm47sCPBtxAaMhhCtyghWkhJ6VHiP++0PooK1@mail.gmail.com>
From: Fred Isaman <iisaman@citi.umich.edu>
To: Benny Halevy <bhalevy@panasas.com>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
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: Tue, 02 Nov 2010 04:47:41 -0000

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

Fred