[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH, v3] qemu/xendisk: set maximum number of grants
From: |
Jan Beulich |
Subject: |
Re: [Qemu-devel] [PATCH, v3] qemu/xendisk: set maximum number of grants to be used |
Date: |
Tue, 12 Jun 2012 08:00:35 +0100 |
>>> On 31.05.12 at 13:27, Stefano Stabellini <address@hidden>
wrote:
> On Thu, 31 May 2012, Jan Beulich wrote:
>> Legacy (non-pvops) gntdev drivers may require this to be done when the
>> number of grants intended to be used simultaneously exceeds a certain
>> driver specific default limit.
>>
>> Change in v2: Double the number requested, as we need to account for
>> the allocations needing to happen in contiguous chunks. The worst case
>> number would be max_req * max_seg + (max_req - 1) * (max_seg - 1) + 1,
>> but in order to keep things simple just use 2 * max_req * max_seg.
>>
>> Change in v3: introduce MAX_GRANTS(), and add a comment explaining its
>> definition.
>>
>> Signed-off-by: Jan Beulich <address@hidden>
>
> I think it is OK, I'll submit it as a bug fix for QEMU 1.1.
>
> It should be applied to qemu-xen-traditional too.
This is commit 64c27e5b1fdb6d94bdc0bda3b1869d7383a35c65 in
git.qemu.org/?p=qemu.git.
Jan
>> --- a/hw/xen_disk.c
>> +++ b/hw/xen_disk.c
>> @@ -537,6 +537,15 @@ static void blk_bh(void *opaque)
>> blk_handle_requests(blkdev);
>> }
>>
>> +/*
>> + * We need to account for the grant allocations requiring contiguous
>> + * chunks; the worst case number would be
>> + * max_req * max_seg + (max_req - 1) * (max_seg - 1) + 1,
>> + * but in order to keep things simple just use
>> + * 2 * max_req * max_seg.
>> + */
>> +#define MAX_GRANTS(max_req, max_seg) (2 * (max_req) * (max_seg))
>> +
>> static void blk_alloc(struct XenDevice *xendev)
>> {
>> struct XenBlkDev *blkdev = container_of(xendev, struct XenBlkDev,
> xendev);
>> @@ -548,6 +557,11 @@ static void blk_alloc(struct XenDevice *
>> if (xen_mode != XEN_EMULATE) {
>> batch_maps = 1;
>> }
>> + if (xc_gnttab_set_max_grants(xendev->gnttabdev,
>> + MAX_GRANTS(max_requests, BLKIF_MAX_SEGMENTS_PER_REQUEST)) < 0) {
>> + xen_be_printf(xendev, 0, "xc_gnttab_set_max_grants failed: %s\n",
>> + strerror(errno));
>> + }
>> }
>>
>> static int blk_init(struct XenDevice *xendev)
>>
>>
>>
>>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH, v3] qemu/xendisk: set maximum number of grants to be used,
Jan Beulich <=