Re: [Qemu-devel] [PATCH v2] win32-aio: use iov utility functions instead of open-coding them

2013-01-18 Thread Stefan Hajnoczi
On Thu, Jan 17, 2013 at 05:51:05PM +0400, Michael Tokarev wrote:
> 17.01.2013 17:06, Stefan Hajnoczi wrote:
> >On Thu, Jan 17, 2013 at 02:44:41PM +0400, Michael Tokarev wrote:
> >>We have iov_from_buf() and iov_to_buf(), use them instead of
> >>open-coding these in block/win32-aio.c
> >
> >Please use qemu_iovec_from_buf() and qemu_iovec_to_buf() since we're
> >operating on a QEMUIOVector.
> 
> I'd remove qemu_iovec_{from,to}_buf() completely at this point
> due to their trivialness and almost no gain in usage as polluting
> the namespace (having too many trivial utility functions isn't
> good).  Right now these are only used in one place - in
> hw/dataplane/virtio-blk.c .

I like them because it makes the calling code nicer to read.  It saves
us from pulling apart the QEMUIOVector struct.

But it's not a big deal to me.  I can merge this version of the patch.

Stefan



Re: [Qemu-devel] [PATCH v2] win32-aio: use iov utility functions instead of open-coding them

2013-01-17 Thread Michael Tokarev

17.01.2013 17:06, Stefan Hajnoczi wrote:

On Thu, Jan 17, 2013 at 02:44:41PM +0400, Michael Tokarev wrote:

We have iov_from_buf() and iov_to_buf(), use them instead of
open-coding these in block/win32-aio.c


Please use qemu_iovec_from_buf() and qemu_iovec_to_buf() since we're
operating on a QEMUIOVector.


I'd remove qemu_iovec_{from,to}_buf() completely at this point
due to their trivialness and almost no gain in usage as polluting
the namespace (having too many trivial utility functions isn't
good).  Right now these are only used in one place - in
hw/dataplane/virtio-blk.c .

If not, we can at least inline them.

Thanks,

/mjt



Re: [Qemu-devel] [PATCH v2] win32-aio: use iov utility functions instead of open-coding them

2013-01-17 Thread Stefan Hajnoczi
On Thu, Jan 17, 2013 at 02:44:41PM +0400, Michael Tokarev wrote:
> We have iov_from_buf() and iov_to_buf(), use them instead of
> open-coding these in block/win32-aio.c

Please use qemu_iovec_from_buf() and qemu_iovec_to_buf() since we're
operating on a QEMUIOVector.

Stefan




[Qemu-devel] [PATCH v2] win32-aio: use iov utility functions instead of open-coding them

2013-01-17 Thread Michael Tokarev
We have iov_from_buf() and iov_to_buf(), use them instead of
open-coding these in block/win32-aio.c
---
 block/win32-aio.c |   16 ++--
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/block/win32-aio.c b/block/win32-aio.c
index b9236ea..b10a0c0 100644
--- a/block/win32-aio.c
+++ b/block/win32-aio.c
@@ -80,13 +80,7 @@ static void win32_aio_process_completion(QEMUWin32AIOState 
*s,
 if (!waiocb->is_linear) {
 if (ret == 0 && waiocb->is_read) {
 QEMUIOVector *qiov = waiocb->qiov;
-char *p = waiocb->buf;
-int i;
-
-for (i = 0; i < qiov->niov; ++i) {
-memcpy(qiov->iov[i].iov_base, p, qiov->iov[i].iov_len);
-p += qiov->iov[i].iov_len;
-}
+iov_from_buf(qiov->iov, qiov->niov, 0, waiocb->buf, qiov->size);
 }
 qemu_vfree(waiocb->buf);
 }
@@ -153,13 +147,7 @@ BlockDriverAIOCB *win32_aio_submit(BlockDriverState *bs,
 if (qiov->niov > 1) {
 waiocb->buf = qemu_blockalign(bs, qiov->size);
 if (type & QEMU_AIO_WRITE) {
-char *p = waiocb->buf;
-int i;
-
-for (i = 0; i < qiov->niov; ++i) {
-memcpy(p, qiov->iov[i].iov_base, qiov->iov[i].iov_len);
-p += qiov->iov[i].iov_len;
-}
+iov_to_buf(qiov->iov, qiov->niov, 0, waiocb->buf, qiov->size);
 }
 waiocb->is_linear = false;
 } else {
-- 
1.7.10.4