[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Re: [PATCH 09/16] scsi-disk: Allocate iovec dynamically
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] Re: [PATCH 09/16] scsi-disk: Allocate iovec dynamically |
Date: |
Fri, 19 Nov 2010 12:43:20 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101027 Fedora/3.0.10-1.fc12 Thunderbird/3.0.10 |
Am 18.11.2010 17:28, schrieb Hannes Reinecke:
> On 11/18/2010 04:33 PM, Gerd Hoffmann wrote:
>> Hi,
>>
>>> +static size_t scsi_req_iov_len(SCSIDiskReq *r)
>>> +{
>>> + size_t iov_len = 0;
>>> + int i;
>>> +
>>> + for (i = 0; i< r->iov_num; i++)
>>> + iov_len += r->iov[i].iov_len;
>>> +
>>> + return iov_len;
>>> +}
>>
>> You are aware that there is a QEMUIOVector type with helper functions
>> which keeps track of both number of elements and total size?
>>
> Yes. But I'm passing passing in an entire iovec to the request.
> However, the QEMUIOVector routines allow you to add only _one_
> element at a time, which is pretty wasteful here.
Does the iov need to be changed afterwards, or why doesn't
qemu_iovec_init_external work here?
> And I'm counting the resulting length of the iovec, which might have
> been changed by read/write operations. For which there is no generic
> function either.
Can you explain which kind of read/write operations would change the
iov? This is not completely clear to me.
In general the same information that you're calculating here should be
stored in qiov->size for a QEUMIOVector, but depending what changes you
mean above it may not provide all operations you need.
Kevin