All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benny Halevy <bhalevy@tonian.com>
To: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Peng Tao <bergwolf@gmail.com>,
	linux-nfs@vger.kernel.org, Peng Tao <peng_tao@emc.com>,
	nfsv4 list <nfsv4@ietf.org>
Subject: Re: [PATCH 2/2] nfs41: handle BLK_LAYOUT CB_RECALL_ANY
Date: Mon, 31 Oct 2011 19:57:07 +0200	[thread overview]
Message-ID: <4EAEE173.80306@tonian.com> (raw)
In-Reply-To: <1320082964.4714.23.camel@lade.trondhjem.org>

On 2011-10-31 19:42, Trond Myklebust wrote:
> On Mon, 2011-10-31 at 19:08 +0200, Benny Halevy wrote: 
>> On 2011-10-31 18:45, Trond Myklebust wrote:
>>> On Tue, 2011-11-01 at 00:38 +0800, Peng Tao wrote: 
>>>> On Mon, Oct 31, 2011 at 11:49 PM, Trond Myklebust
>>>> <Trond.Myklebust@netapp.com> wrote:
>>>>> On Mon, 2011-10-31 at 08:15 -0700, Peng Tao wrote:
>>>>>> For blocklayout, we need to issue layoutreturn to return layouts when
>>>>>> handling CB_RECALL_ANY.
>>>>>
>>>>> Why?
>>>> Because replying NFS4_OK to CB_RECALL_ANY indicates that client knows
>>>> that server wants client to return layout. And server will be waiting
>>>> for layoutreturn in such case.
>>>
>>> No it doesn't. NFS4_OK means that the client acknowledges that it has
>>> been given a new limit on the number of recallable objects it can keep.
>>> There is no requirement in the text that it should send layoutreturn or
>>> that the server should expect that.
>>
>> The motivation for CB_RECALL_ANY is to reduce the state on the *server* side.
>> Quoting from RFC5661:
>>    The server may decide that it cannot hold all of the state for
>>    recallable objects, such as delegations and layouts, without running
>>    out of resources.  In such a case, while not optimal, the server is
>>    free to recall individual objects to reduce the load.
>> ...
>>    In order to implement an effective reclaim scheme for such objects,
>>    the server's knowledge of available resources must be used to
>>    determine when objects must be recalled with the clients selecting
>>    the actual objects to be returned.
>>                       ^^^^^^^^^^^^^^
>> ...
>>    When a given resource pool is over-utilized, the server can send a
>>    CB_RECALL_ANY to clients holding recallable objects of the types
>>    involved, allowing it to keep a certain number of such objects and
>>    return any excess.
>>    ^^^^^^^^^^^^^^^^^
>> ...
>>    RCA4_TYPE_MASK_FILE_LAYOUT
>>
>>       The client is to return layouts of type LAYOUT4_NFSV4_1_FILES.
>>                     ^^^^^^^^^^^^^^^^^
>>
>> Isn't that explicit enough?
> 
> Leaving aside the fact that the above quotes contain no normative
> language:
> Right now, we do a bulk return of all layouts. Doing a layoutreturn for
> each and every layout in that case is just ridiculous. Either do a

The idea is to return the layouts for files that are the least used,
not each and every layout.

> LAYOUTRETURN4_ALL after freeing all the layouts, or don't do anything at
> all and just wait for the server to revoke the layouts for us (which is
> what we currently do).
> Both options should be faster than doing a LAYOUTRETURN4_FILE on each
> and every file that is currently in use.

Doing LAYOUTRETURN4_ALL might cause a bug hiccup if the client needs to then send
a LAYOUTGET for each and every file that *is* currently in use.
So serving a CB_RECALL_ANY keeping more than 50% of the recallable objects means
the client would be better off returning the excess rather than returning everything
and reclaiming > 50% back.

Waiting for revocation may work well with some servers but would be disastrous in
terms of performance and responsiveness with others.

Benny

> 
> Trond
> 

  reply	other threads:[~2011-10-31 17:57 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-31 15:15 [PATCH 1/2 RESEND] NFS4: fix cb_recallany decode error Peng Tao
2011-10-31 15:15 ` [PATCH 2/2] nfs41: handle BLK_LAYOUT CB_RECALL_ANY Peng Tao
2011-10-31 15:49   ` Trond Myklebust
2011-10-31 16:38     ` Peng Tao
2011-10-31 16:45       ` Trond Myklebust
2011-10-31 17:02         ` Peng Tao
2011-10-31 17:08         ` Benny Halevy
2011-10-31 17:42           ` Trond Myklebust
2011-10-31 17:57             ` Benny Halevy [this message]
2011-10-31 18:20               ` Trond Myklebust
2011-10-31 18:23                 ` [nfsv4] " Matt W. Benjamin
2011-10-31 18:31                   ` Trond Myklebust
2011-10-31 18:31                 ` Jim Rees
2011-10-31 18:39                   ` Trond Myklebust
2011-11-01  5:29                     ` tao.peng
2011-11-04  1:33                       ` tao.peng
2011-10-31 21:42                   ` [nfsv4] " Welch, Brent
2011-11-01 14:59                     ` david.noveck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4EAEE173.80306@tonian.com \
    --to=bhalevy@tonian.com \
    --cc=Trond.Myklebust@netapp.com \
    --cc=bergwolf@gmail.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=nfsv4@ietf.org \
    --cc=peng_tao@emc.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.