Re: [nfsv4] parallel LAYOUTGETs using open stateid

Benny Halevy <bhalevy@panasas.com> Thu, 07 October 2010 15:46 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 DDD6B3A6FC7 for <nfsv4@core3.amsl.com>; Thu, 7 Oct 2010 08:46:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.599
X-Spam-Level:
X-Spam-Status: No, score=-6.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
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 vAbqz+Vf+zlW for <nfsv4@core3.amsl.com>; Thu, 7 Oct 2010 08:46:38 -0700 (PDT)
Received: from exprod5og114.obsmtp.com (exprod5og114.obsmtp.com [64.18.0.28]) by core3.amsl.com (Postfix) with SMTP id A352F3A6E12 for <nfsv4@ietf.org>; Thu, 7 Oct 2010 08:46:38 -0700 (PDT)
Received: from source ([67.152.220.89]) by exprod5ob114.postini.com ([64.18.4.12]) with SMTP ID DSNKTK3rnBEiArulolPMt7uGEiCzjUHKSCjp@postini.com; Thu, 07 Oct 2010 08:47:41 PDT
Received: from lt.bhalevy.com ([172.17.33.129]) by daytona.int.panasas.com with Microsoft SMTPSVC(6.0.3790.3959); Thu, 7 Oct 2010 11:47:40 -0400
Message-ID: <4CADEB9D.6080703@panasas.com>
Date: Thu, 07 Oct 2010 11:47:41 -0400
From: Benny Halevy <bhalevy@panasas.com>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc13 Thunderbird/3.1.4
MIME-Version: 1.0
To: "William A. (Andy) Adamson" <androsadamson@gmail.com>
References: <AANLkTinZ1t1YbL55vkT0OJ0i2j9AqNuvFStTwFoGO-dB@mail.gmail.com> <AANLkTin+0BG=u3o2DZcHgdODoaznePOeTrmQJfh9C6Ym@mail.gmail.com> <AANLkTimUgacoB2sEP=_k2RfVfuD04Ane1JY0ip5R+OpB@mail.gmail.com> <4CADDB09.9020308@panasas.com> <AANLkTinpebaZbi8ygc2ouMT2aGX8iDhMe4mtRB7ROOZ6@mail.gmail.com>
In-Reply-To: <AANLkTinpebaZbi8ygc2ouMT2aGX8iDhMe4mtRB7ROOZ6@mail.gmail.com>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 07 Oct 2010 15:47:40.0094 (UTC) FILETIME=[F8F00DE0:01CB6636]
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: Thu, 07 Oct 2010 15:46:40 -0000

On 2010-10-07 11:32, William A. (Andy) Adamson wrote:
> On Thu, Oct 7, 2010 at 10:36 AM, Benny Halevy <bhalevy@panasas.com> wrote:
>> On 2010-10-07 10:20, Fred Isaman wrote:
>>> On Thu, Oct 7, 2010 at 9:50 AM, Benny Halevy <bhalevy@panasas.com> 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).
>>>> Are there any problems you see in that approach?
>>>>
>>>> Benny
>>>>
>>>
>>> The wrinkle it adds is that, in the normal case, after the CB_RECALL
>>> is resolved, any stale LAYOUTGETs (sent by the client before it
>>> received the CB_RECALL) that the server receives will either be
>>> processed normally with a bumped seqid or an error (if the server
>>
>> But the client MUST not process the layout recall before receiving
>> replies for the outstanding layoutgets. (see section 12.5.5.2.1.
>> Layout Recall and Return Sequencing)
> 
> Hmmm. But 12.5.5.2.1 is referring to outstanding layoutget's with the
> same stateid as the cb_layoutrecall. If the server creates "new" ones
> as described below by Fred, the client doesn't need to wait. Of
> course, the client has no way of knowing until it get's the response
> :)

The spec describes that situation as:
   the "seqid" is not exactly one higher than what
   the client currently has recorded.

With the initial open/deleg/lock stated, the "other" part
of the stateid is different - therefore one can assume
the seqid if not exactly one higher than ... so I think that the
client MUST wait as described in the is section.

Though, I agree the can be improved and clarified.
In particular:
   The client MUST wait before
   processing such a CB_LAYOUTRECALL until it processes all replies for
   outstanding LAYOUTGET and LAYOUTRETURN operations for the
   corresponding file with seqid less than the seqid given by
   CB_LAYOUTRECALL (lor_stateid; see Section 20.3.)

should explicitly cover outstanding LAYOUTGETs with non-layout stateid.

Benny

> 
> -->Andy
>>
>> Benny
>>
>>> invalidated the "other" part of the stateid.)  In the openstateid
>>> case, the server loses the option of returning an error, instead it
>>> wuold create a new "other" with seqid=1.  That said, I don't see that
>>> this causes any problems apart from extra bookkeeping.
>>>
>>> Fred
>>>
>>>>> Fred
>>>>> _______________________________________________
>>>>> 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
>>