From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: David Vrabel <david.vrabel@citrix.com>,
<linux-kernel@vger.kernel.org>, <xen-devel@lists.xen.org>,
<boris.ostrovsky@oracle.com>
Subject: Re: [Xen-devel] [PATCH 3/3] xen-blkfront: revoke foreign access for grants not mapped by the backend
Date: Mon, 12 Aug 2013 12:58:39 +0200 [thread overview]
Message-ID: <5208BFDF.40308@citrix.com> (raw)
In-Reply-To: <20130809150837.GA5637@phenom.dumpdata.com>
On 09/08/13 17:08, Konrad Rzeszutek Wilk wrote:
> On Thu, Aug 01, 2013 at 11:10:15AM +0100, David Vrabel wrote:
>> On 31/07/13 16:00, Roger Pau Monne wrote:
>>> There's no need to keep the foreign access in a grant if it is not
>>> persistently mapped by the backend. This allows us to free grants that
>>> are not mapped by the backend, thus preventing blkfront from hoarding
>>> all grants.
>>>
>>> The main effect of this is that blkfront will only persistently map
>>> the same grants as the backend, and it will always try to use grants
>>> that are already mapped by the backend. Also the number of persistent
>>> grants in blkfront is the same as in blkback (and is controlled by the
>>> value in blkback).
>>>
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>
>> Reviewed-by: David Vrabel <david.vrabel@citrix.com>
>
> Roger,
>
> Could you repost patch #2 and #3 (as #1 is in v3.11-rc4) with the
> comments and the Ack from Matt and Roger's Review-by tag addressed?
Done (I guess you meant the Reviewed-by tag from David), see below however.
> Thanks.
>>
>> But please see the documentation updates needed below.
>>
>>> --- a/drivers/block/xen-blkfront.c
>>> +++ b/drivers/block/xen-blkfront.c
>>> @@ -1016,13 +1016,38 @@ static void blkif_completion(struct blk_shadow *s, struct blkfront_info *info,
>>> }
>>> /* Add the persistent grant into the list of free grants */
>>> for (i = 0; i < nseg; i++) {
>>> - list_add(&s->grants_used[i]->node, &info->persistent_gnts);
>>> - info->persistent_gnts_c++;
>>> + if (gnttab_query_foreign_access(s->grants_used[i]->gref)) {
>>> + /*
>>> + * If the grant is still mapped by the backend (the
>>> + * backend has chosen to make this grant persistent)
>>> + * we add it at the head of the list, so it will be
>>> + * reused first.
>>> + */
>>> + list_add(&s->grants_used[i]->node, &info->persistent_gnts);
>>> + info->persistent_gnts_c++;
>>> + } else {
>>> + /*
>>> + * If the grant is not mapped by the backend we end the
>>> + * foreign access and add it to the tail of the list,
>>> + * so it will not be picked again unless we run out of
>>> + * persistent grants.
>>> + */
>>> + gnttab_end_foreign_access(s->grants_used[i]->gref, 0, 0UL);
>>> + s->grants_used[i]->gref = GRANT_INVALID_REF;
>>> + list_add_tail(&s->grants_used[i]->node, &info->persistent_gnts);
>>> + }
>>
>> Because you only reclaim grants when a request is completed, can you add
>> text similar to the following to xen/include/public/io/blkif.h (and the
>> Linux copy).
>>
>> feature-persistent:
>> ...
>> When the backend driver needs to unmap a persistent grant it should
>> do so prior to completing a request that used that grant reference.
>> If a persistent grant is unmapped at any other time, the frontend
>> driver may not notice and may be unable to reclaim the grant
>> reference.
>>
I've sent a patch to update the documentation about persistent grants in
Xen source tree, but the Linux copy of blkif.h lacks any information
about the blkif protocol extensions, so I have not added it there. If
nobody else does it first (before I come back from vacation), I will
send a patch to add the documentation about all the blkif extensions to
the Linux copy of blkif.h (and of course add your comment about
persistent grants unmap).
Roger.
next prev parent reply other threads:[~2013-08-12 10:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-31 15:00 [PATCH 0/3] xen: fixes for gnt and block Roger Pau Monne
2013-07-31 15:00 ` [PATCH 1/3] xen-gnt: prevent adding duplicate gnt callbacks Roger Pau Monne
2013-07-31 18:33 ` Matt Wilson
2013-08-01 10:12 ` David Vrabel
2013-07-31 15:00 ` [PATCH 2/3] xen-blkfront: improve aproximation of required grants per request Roger Pau Monne
2013-08-01 10:10 ` [Xen-devel] " David Vrabel
2013-07-31 15:00 ` [PATCH 3/3] xen-blkfront: revoke foreign access for grants not mapped by the backend Roger Pau Monne
2013-08-01 6:35 ` Matt Wilson
2013-08-01 10:10 ` [Xen-devel] " David Vrabel
2013-08-09 15:08 ` Konrad Rzeszutek Wilk
2013-08-12 10:58 ` Roger Pau Monné [this message]
2013-08-12 12:02 ` Konrad Rzeszutek Wilk
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=5208BFDF.40308@citrix.com \
--to=roger.pau@citrix.com \
--cc=boris.ostrovsky@oracle.com \
--cc=david.vrabel@citrix.com \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=xen-devel@lists.xen.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).