qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

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