[Qemu-devel] [PATCH] win32-aio: use iov utility functions instead of open-coding them
We have iov_from_buf() and iov_to_buf(), use them instead of open-coding these in block/win32-aio.c Signed-Off-By: Michael Tokarev m...@tls.msk.ru --- block/win32-aio.c | 18 +++--- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/block/win32-aio.c b/block/win32-aio.c index 0383370..773d3f4 100644 --- a/block/win32-aio.c +++ b/block/win32-aio.c @@ -79,14 +79,8 @@ 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(p, qiov-iov[i].iov_base, qiov-iov[i].iov_len); -p += qiov-iov[i].iov_len; -} +iov_from_buf(waiocb-qiov.iov, waiocb-qiov.niov, + 0, waiocb-buf, waiocb-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
Re: [Qemu-devel] [PATCH] win32-aio: use iov utility functions instead of open-coding them
Am 17.01.2013 09:48, schrieb Michael Tokarev: We have iov_from_buf() and iov_to_buf(), use them instead of open-coding these in block/win32-aio.c Signed-Off-By: Michael Tokarev m...@tls.msk.ru --- block/win32-aio.c | 18 +++--- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/block/win32-aio.c b/block/win32-aio.c index 0383370..773d3f4 100644 --- a/block/win32-aio.c +++ b/block/win32-aio.c @@ -79,14 +79,8 @@ 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(p, qiov-iov[i].iov_base, qiov-iov[i].iov_len); I said on top of my patch for a reason: Now this looks like an innocent refactoring patch, while in fact it is a hidden bug fix. Even the commit message doesn't mention this. Though I guess Stefan can apply my patch first and resolve the conflict with this patch, then the result should be right. Kevin
Re: [Qemu-devel] [PATCH] win32-aio: use iov utility functions instead of open-coding them
17.01.2013 12:57, Kevin Wolf wrote: I said on top of my patch for a reason: Now this looks like an innocent Kevin, that wasn't intentional. I'm sorry. Somehow I thought your bugfix is already applied to master, and these reverse memcpy args are difficult to spot (gah, that's why the bug is here to start with). I resend it based on your patch. /mjt