qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCHv4 4/4] block: avoid creating oversized writes in


From: Peter Lieven
Subject: Re: [Qemu-devel] [PATCHv4 4/4] block: avoid creating oversized writes in multiwrite_merge
Date: Sat, 25 Oct 2014 17:19:50 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0

Am 23.10.2014 um 13:23 schrieb Max Reitz:
> On 2014-10-16 at 09:54, Peter Lieven wrote:
>> Signed-off-by: Peter Lieven <address@hidden>
>> Reviewed-by: Ronnie Sahlberg <address@hidden>
>> ---
>>   block.c |    5 +++++
>>   1 file changed, 5 insertions(+)
>>
>> diff --git a/block.c b/block.c
>> index 0fbf916..9ad2287 100644
>> --- a/block.c
>> +++ b/block.c
>> @@ -4554,6 +4554,11 @@ static int multiwrite_merge(BlockDriverState *bs, 
>> BlockRequest *reqs,
>>               merge = 0;
>>           }
>>   +        if (bs->bl.max_transfer_length && reqs[outidx].nb_sectors +
>> +            reqs[i].nb_sectors > bs->bl.max_transfer_length) {
>> +            merge = 0;
>> +        }
>> +
>>           if (merge) {
>>               size_t size;
>>               QEMUIOVector *qiov = g_malloc0(sizeof(*qiov));
>
> Reviewed-by: Max Reitz <address@hidden>
>
> I feel like we should respect max_transfer_length in more than just this 
> function, though. Every block device (or block driver) that sets a maximum 
> transfer length should check requests against it as well, so we don't need to 
> duplicate the same tests in the block layer functions, but maybe if at some 
> point there are no things left to be done on the block layer, we could do 
> that.

I have on my todo to add a splitting logic to block.c to 

bdrv_co_do_preadv() and bdrv_co_do_pwritev(), but I agreed with Kevin to 
introduce this
*after* 2.2.

Peter





reply via email to

[Prev in Thread] Current Thread [Next in Thread]