* [Qemu-devel] [PULL 0/7] Block patches @ 2016-09-28 18:15 Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 1/7] block: mirror: fix wrong comment of mirror_start Stefan Hajnoczi ` (7 more replies) 0 siblings, 8 replies; 28+ messages in thread From: Stefan Hajnoczi @ 2016-09-28 18:15 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi The following changes since commit 25930ed60aad49f1fdd7de05272317c86ce1275b: Merge remote-tracking branch 'remotes/ehabkost/tags/x86-pull-request' into staging (2016-09-27 23:10:12 +0100) are available in the git repository at: git://github.com/stefanha/qemu.git tags/block-pull-request for you to fetch changes up to fe121b9d3c4258e41f7efa4976bf79151b2d5dbb: linux-aio: fix re-entrant completion processing (2016-09-28 17:11:23 +0100) ---------------------------------------------------------------- ---------------------------------------------------------------- Laurent Vivier (1): libqos: fix qvring_init() Lin Ma (1): iothread: check iothread->ctx before aio_context_unref to avoid assertion Stefan Hajnoczi (3): coroutine: add qemu_coroutine_entered() function test-coroutine: test qemu_coroutine_entered() linux-aio: fix re-entrant completion processing Yaowei Bai (2): block: mirror: fix wrong comment of mirror_start aio-posix: avoid unnecessary aio_epoll_enabled() calls aio-posix.c | 12 +++++++----- block/linux-aio.c | 9 ++++++--- include/block/block_int.h | 2 +- include/qemu/coroutine.h | 13 +++++++++++++ iothread.c | 3 +++ tests/libqos/virtio.c | 2 +- tests/test-coroutine.c | 42 ++++++++++++++++++++++++++++++++++++++++++ util/qemu-coroutine.c | 5 +++++ 8 files changed, 78 insertions(+), 10 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 1/7] block: mirror: fix wrong comment of mirror_start 2016-09-28 18:15 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi @ 2016-09-28 18:15 ` Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 2/7] aio-posix: avoid unnecessary aio_epoll_enabled() calls Stefan Hajnoczi ` (6 subsequent siblings) 7 siblings, 0 replies; 28+ messages in thread From: Stefan Hajnoczi @ 2016-09-28 18:15 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Yaowei Bai, Stefan Hajnoczi From: Yaowei Bai <baiyaowei@cmss.chinamobile.com> Obviously, we should write to '@target'. Signed-off-by: Yaowei Bai <baiyaowei@cmss.chinamobile.com> Reviewed-by: Xiubo Li <lixiubo@cmss.chinamobile.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-id: 1473851019-7005-2-git-send-email-baiyaowei@cmss.chinamobile.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- include/block/block_int.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/block/block_int.h b/include/block/block_int.h index ef3c047..3e79228 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -722,7 +722,7 @@ void commit_active_start(const char *job_id, BlockDriverState *bs, * @errp: Error object. * * Start a mirroring operation on @bs. Clusters that are allocated - * in @bs will be written to @bs until the job is cancelled or + * in @bs will be written to @target until the job is cancelled or * manually completed. At the end of a successful mirroring job, * @bs will be switched to read from @target. */ -- 2.7.4 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 2/7] aio-posix: avoid unnecessary aio_epoll_enabled() calls 2016-09-28 18:15 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 1/7] block: mirror: fix wrong comment of mirror_start Stefan Hajnoczi @ 2016-09-28 18:15 ` Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 3/7] iothread: check iothread->ctx before aio_context_unref to avoid assertion Stefan Hajnoczi ` (5 subsequent siblings) 7 siblings, 0 replies; 28+ messages in thread From: Stefan Hajnoczi @ 2016-09-28 18:15 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Yaowei Bai, Stefan Hajnoczi From: Yaowei Bai <baiyaowei@cmss.chinamobile.com> As epoll whether enabled or not is a global setting, we can just check it only once rather than checking it with every node iteration. Through this we can avoid a lot of checks when epoll is not enabled. Signed-off-by: Yaowei Bai <baiyaowei@cmss.chinamobile.com> Reviewed-by: Xiubo Li <lixiubo@cmss.chinamobile.com> Message-id: 1473851019-7005-3-git-send-email-baiyaowei@cmss.chinamobile.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- aio-posix.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/aio-posix.c b/aio-posix.c index 43162a9..4ef34dd 100644 --- a/aio-posix.c +++ b/aio-posix.c @@ -431,11 +431,13 @@ bool aio_poll(AioContext *ctx, bool blocking) assert(npfd == 0); /* fill pollfds */ - QLIST_FOREACH(node, &ctx->aio_handlers, node) { - if (!node->deleted && node->pfd.events - && !aio_epoll_enabled(ctx) - && aio_node_check(ctx, node->is_external)) { - add_pollfd(node); + + if (!aio_epoll_enabled(ctx)) { + QLIST_FOREACH(node, &ctx->aio_handlers, node) { + if (!node->deleted && node->pfd.events + && aio_node_check(ctx, node->is_external)) { + add_pollfd(node); + } } } -- 2.7.4 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 3/7] iothread: check iothread->ctx before aio_context_unref to avoid assertion 2016-09-28 18:15 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 1/7] block: mirror: fix wrong comment of mirror_start Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 2/7] aio-posix: avoid unnecessary aio_epoll_enabled() calls Stefan Hajnoczi @ 2016-09-28 18:15 ` Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 4/7] libqos: fix qvring_init() Stefan Hajnoczi ` (4 subsequent siblings) 7 siblings, 0 replies; 28+ messages in thread From: Stefan Hajnoczi @ 2016-09-28 18:15 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Lin Ma, Stefan Hajnoczi From: Lin Ma <lma@suse.com> if iothread->ctx is set to NULL, aio_context_unref triggers the assertion: g_source_unref: assertion 'source != NULL' failed. The patch fixes it. Signed-off-by: Lin Ma <lma@suse.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 20160926052958.10716-1-lma@suse.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- iothread.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/iothread.c b/iothread.c index fb08a60..fbeb8de 100644 --- a/iothread.c +++ b/iothread.c @@ -75,6 +75,9 @@ static void iothread_instance_finalize(Object *obj) iothread_stop(obj, NULL); qemu_cond_destroy(&iothread->init_done_cond); qemu_mutex_destroy(&iothread->init_done_lock); + if (!iothread->ctx) { + return; + } aio_context_unref(iothread->ctx); } -- 2.7.4 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 4/7] libqos: fix qvring_init() 2016-09-28 18:15 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi ` (2 preceding siblings ...) 2016-09-28 18:15 ` [Qemu-devel] [PULL 3/7] iothread: check iothread->ctx before aio_context_unref to avoid assertion Stefan Hajnoczi @ 2016-09-28 18:15 ` Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 5/7] coroutine: add qemu_coroutine_entered() function Stefan Hajnoczi ` (3 subsequent siblings) 7 siblings, 0 replies; 28+ messages in thread From: Stefan Hajnoczi @ 2016-09-28 18:15 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Laurent Vivier, Stefan Hajnoczi From: Laurent Vivier <lvivier@redhat.com> "vq->desc[i].addr" is a 64bit value, so write it with writeq(), not writew(). struct vring_desc { __virtio64 addr; __virtio32 len; __virtio16 flags; __virtio16 next; }; Signed-off-by: Laurent Vivier <lvivier@redhat.com> Message-id: 1474903450-9605-1-git-send-email-lvivier@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- tests/libqos/virtio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/libqos/virtio.c b/tests/libqos/virtio.c index 37ff860..105bcce 100644 --- a/tests/libqos/virtio.c +++ b/tests/libqos/virtio.c @@ -147,7 +147,7 @@ void qvring_init(const QGuestAllocator *alloc, QVirtQueue *vq, uint64_t addr) for (i = 0; i < vq->size - 1; i++) { /* vq->desc[i].addr */ - writew(vq->desc + (16 * i), 0); + writeq(vq->desc + (16 * i), 0); /* vq->desc[i].next */ writew(vq->desc + (16 * i) + 14, i + 1); } -- 2.7.4 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 5/7] coroutine: add qemu_coroutine_entered() function 2016-09-28 18:15 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi ` (3 preceding siblings ...) 2016-09-28 18:15 ` [Qemu-devel] [PULL 4/7] libqos: fix qvring_init() Stefan Hajnoczi @ 2016-09-28 18:15 ` Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 6/7] test-coroutine: test qemu_coroutine_entered() Stefan Hajnoczi ` (2 subsequent siblings) 7 siblings, 0 replies; 28+ messages in thread From: Stefan Hajnoczi @ 2016-09-28 18:15 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi See the doc comments for a description of this new coroutine API. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-id: 1474989516-18255-2-git-send-email-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- include/qemu/coroutine.h | 13 +++++++++++++ util/qemu-coroutine.c | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/include/qemu/coroutine.h b/include/qemu/coroutine.h index 29a2078..e6a60d5 100644 --- a/include/qemu/coroutine.h +++ b/include/qemu/coroutine.h @@ -92,6 +92,19 @@ Coroutine *coroutine_fn qemu_coroutine_self(void); */ bool qemu_in_coroutine(void); +/** + * Return true if the coroutine is currently entered + * + * A coroutine is "entered" if it has not yielded from the current + * qemu_coroutine_enter() call used to run it. This does not mean that the + * coroutine is currently executing code since it may have transferred control + * to another coroutine using qemu_coroutine_enter(). + * + * When several coroutines enter each other there may be no way to know which + * ones have already been entered. In such situations this function can be + * used to avoid recursively entering coroutines. + */ +bool qemu_coroutine_entered(Coroutine *co); /** diff --git a/util/qemu-coroutine.c b/util/qemu-coroutine.c index 3cbf225..737bffa 100644 --- a/util/qemu-coroutine.c +++ b/util/qemu-coroutine.c @@ -146,3 +146,8 @@ void coroutine_fn qemu_coroutine_yield(void) self->caller = NULL; qemu_coroutine_switch(self, to, COROUTINE_YIELD); } + +bool qemu_coroutine_entered(Coroutine *co) +{ + return co->caller; +} -- 2.7.4 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 6/7] test-coroutine: test qemu_coroutine_entered() 2016-09-28 18:15 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi ` (4 preceding siblings ...) 2016-09-28 18:15 ` [Qemu-devel] [PULL 5/7] coroutine: add qemu_coroutine_entered() function Stefan Hajnoczi @ 2016-09-28 18:15 ` Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 7/7] linux-aio: fix re-entrant completion processing Stefan Hajnoczi 2016-09-28 22:02 ` [Qemu-devel] [PULL 0/7] Block patches Peter Maydell 7 siblings, 0 replies; 28+ messages in thread From: Stefan Hajnoczi @ 2016-09-28 18:15 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-id: 1474989516-18255-3-git-send-email-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- tests/test-coroutine.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tests/test-coroutine.c b/tests/test-coroutine.c index 6431dd6..abd97c2 100644 --- a/tests/test-coroutine.c +++ b/tests/test-coroutine.c @@ -53,6 +53,47 @@ static void test_self(void) } /* + * Check that qemu_coroutine_entered() works + */ + +static void coroutine_fn verify_entered_step_2(void *opaque) +{ + Coroutine *caller = (Coroutine *)opaque; + + g_assert(qemu_coroutine_entered(caller)); + g_assert(qemu_coroutine_entered(qemu_coroutine_self())); + qemu_coroutine_yield(); + + /* Once more to check it still works after yielding */ + g_assert(qemu_coroutine_entered(caller)); + g_assert(qemu_coroutine_entered(qemu_coroutine_self())); + qemu_coroutine_yield(); +} + +static void coroutine_fn verify_entered_step_1(void *opaque) +{ + Coroutine *self = qemu_coroutine_self(); + Coroutine *coroutine; + + g_assert(qemu_coroutine_entered(self)); + + coroutine = qemu_coroutine_create(verify_entered_step_2, self); + g_assert(!qemu_coroutine_entered(coroutine)); + qemu_coroutine_enter(coroutine); + g_assert(!qemu_coroutine_entered(coroutine)); + qemu_coroutine_enter(coroutine); +} + +static void test_entered(void) +{ + Coroutine *coroutine; + + coroutine = qemu_coroutine_create(verify_entered_step_1, NULL); + g_assert(!qemu_coroutine_entered(coroutine)); + qemu_coroutine_enter(coroutine); +} + +/* * Check that coroutines may nest multiple levels */ @@ -389,6 +430,7 @@ int main(int argc, char **argv) g_test_add_func("/basic/yield", test_yield); g_test_add_func("/basic/nesting", test_nesting); g_test_add_func("/basic/self", test_self); + g_test_add_func("/basic/entered", test_entered); g_test_add_func("/basic/in_coroutine", test_in_coroutine); g_test_add_func("/basic/order", test_order); if (g_test_perf()) { -- 2.7.4 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 7/7] linux-aio: fix re-entrant completion processing 2016-09-28 18:15 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi ` (5 preceding siblings ...) 2016-09-28 18:15 ` [Qemu-devel] [PULL 6/7] test-coroutine: test qemu_coroutine_entered() Stefan Hajnoczi @ 2016-09-28 18:15 ` Stefan Hajnoczi 2016-09-28 22:02 ` [Qemu-devel] [PULL 0/7] Block patches Peter Maydell 7 siblings, 0 replies; 28+ messages in thread From: Stefan Hajnoczi @ 2016-09-28 18:15 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi Commit 0ed93d84edabc7656f5c998ae1a346fe8b94ca54 ("linux-aio: process completions from ioq_submit()") added an optimization that processes completions each time ioq_submit() returns with requests in flight. This commit introduces a "Co-routine re-entered recursively" error which can be triggered with -drive format=qcow2,aio=native. Fam Zheng <famz@redhat.com>, Kevin Wolf <kwolf@redhat.com>, and I debugged the following backtrace: (gdb) bt #0 0x00007ffff0a046f5 in raise () at /lib64/libc.so.6 #1 0x00007ffff0a062fa in abort () at /lib64/libc.so.6 #2 0x0000555555ac0013 in qemu_coroutine_enter (co=0x5555583464d0) at util/qemu-coroutine.c:113 #3 0x0000555555a4b663 in qemu_laio_process_completions (s=s@entry=0x555557e2f7f0) at block/linux-aio.c:218 #4 0x0000555555a4b874 in ioq_submit (s=s@entry=0x555557e2f7f0) at block/linux-aio.c:331 #5 0x0000555555a4ba12 in laio_do_submit (fd=fd@entry=13, laiocb=laiocb@entry=0x555559d38ae0, offset=offset@entry=2932727808, type=type@entry=1) at block/linux-aio.c:383 #6 0x0000555555a4bbd3 in laio_co_submit (bs=<optimized out>, s=0x555557e2f7f0, fd=13, offset=2932727808, qiov=0x555559d38e20, type=1) at block/linux-aio.c:402 #7 0x0000555555a4fd23 in bdrv_driver_preadv (bs=bs@entry=0x55555663bcb0, offset=offset@entry=2932727808, bytes=bytes@entry=8192, qiov=qiov@entry=0x555559d38e20, flags=0) at block/io.c:804 #8 0x0000555555a52b34 in bdrv_aligned_preadv (bs=bs@entry=0x55555663bcb0, req=req@entry=0x555559d38d20, offset=offset@entry=2932727808, bytes=bytes@entry=8192, align=align@entry=512, qiov=qiov@entry=0x555559d38e20, flags=0) at block/io.c:1041 #9 0x0000555555a52db8 in bdrv_co_preadv (child=<optimized out>, offset=2932727808, bytes=8192, qiov=qiov@entry=0x555559d38e20, flags=flags@entry=0) at block/io.c:1133 #10 0x0000555555a29629 in qcow2_co_preadv (bs=0x555556635890, offset=6178725888, bytes=8192, qiov=0x555557527840, flags=<optimized out>) at block/qcow2.c:1509 #11 0x0000555555a4fd23 in bdrv_driver_preadv (bs=bs@entry=0x555556635890, offset=offset@entry=6178725888, bytes=bytes@entry=8192, qiov=qiov@entry=0x555557527840, flags=0) at block/io.c:804 #12 0x0000555555a52b34 in bdrv_aligned_preadv (bs=bs@entry=0x555556635890, req=req@entry=0x555559d39000, offset=offset@entry=6178725888, bytes=bytes@entry=8192, align=align@entry=1, qiov=qiov@entry=0x555557527840, flags=0) at block/io.c:1041 #13 0x0000555555a52db8 in bdrv_co_preadv (child=<optimized out>, offset=offset@entry=6178725888, bytes=bytes@entry=8192, qiov=qiov@entry=0x555557527840, flags=flags@entry=0) at block/io.c:1133 #14 0x0000555555a4515a in blk_co_preadv (blk=0x5555566356d0, offset=6178725888, bytes=8192, qiov=0x555557527840, flags=0) at block/block-backend.c:783 #15 0x0000555555a45266 in blk_aio_read_entry (opaque=0x5555577025e0) at block/block-backend.c:991 #16 0x0000555555ac0cfa in coroutine_trampoline (i0=<optimized out>, i1=<optimized out>) at util/coroutine-ucontext.c:78 It turned out that re-entrant ioq_submit() and completion processing between three requests caused this error. The following check is not sufficient to prevent recursively entering coroutines: if (laiocb->co != qemu_coroutine_self()) { qemu_coroutine_enter(laiocb->co); } As the following coroutine backtrace shows, not just the current coroutine (self) can be entered. There might also be other coroutines that are currently entered and transferred control due to the qcow2 lock (CoMutex): (gdb) qemu coroutine 0x5555583464d0 #0 0x0000555555ac0c90 in qemu_coroutine_switch (from_=from_@entry=0x5555583464d0, to_=to_@entry=0x5555572f9890, action=action@entry=COROUTINE_ENTER) at util/coroutine-ucontext.c:175 #1 0x0000555555abfe54 in qemu_coroutine_enter (co=0x5555572f9890) at util/qemu-coroutine.c:117 #2 0x0000555555ac031c in qemu_co_queue_run_restart (co=co@entry=0x5555583462c0) at util/qemu-coroutine-lock.c:60 #3 0x0000555555abfe5e in qemu_coroutine_enter (co=0x5555583462c0) at util/qemu-coroutine.c:119 #4 0x0000555555a4b663 in qemu_laio_process_completions (s=s@entry=0x555557e2f7f0) at block/linux-aio.c:218 #5 0x0000555555a4b874 in ioq_submit (s=s@entry=0x555557e2f7f0) at block/linux-aio.c:331 #6 0x0000555555a4ba12 in laio_do_submit (fd=fd@entry=13, laiocb=laiocb@entry=0x55555a338b40, offset=offset@entry=2911477760, type=type@entry=1) at block/linux-aio.c:383 #7 0x0000555555a4bbd3 in laio_co_submit (bs=<optimized out>, s=0x555557e2f7f0, fd=13, offset=2911477760, qiov=0x55555a338e80, type=1) at block/linux-aio.c:402 #8 0x0000555555a4fd23 in bdrv_driver_preadv (bs=bs@entry=0x55555663bcb0, offset=offset@entry=2911477760, bytes=bytes@entry=8192, qiov=qiov@entry=0x55555a338e80, flags=0) at block/io.c:804 #9 0x0000555555a52b34 in bdrv_aligned_preadv (bs=bs@entry=0x55555663bcb0, req=req@entry=0x55555a338d80, offset=offset@entry=2911477760, bytes=bytes@entry=8192, align=align@entry=512, qiov=qiov@entry=0x55555a338e80, flags=0) at block/io.c:1041 #10 0x0000555555a52db8 in bdrv_co_preadv (child=<optimized out>, offset=2911477760, bytes=8192, qiov=qiov@entry=0x55555a338e80, flags=flags@entry=0) at block/io.c:1133 #11 0x0000555555a29629 in qcow2_co_preadv (bs=0x555556635890, offset=6157475840, bytes=8192, qiov=0x5555575df720, flags=<optimized out>) at block/qcow2.c:1509 #12 0x0000555555a4fd23 in bdrv_driver_preadv (bs=bs@entry=0x555556635890, offset=offset@entry=6157475840, bytes=bytes@entry=8192, qiov=qiov@entry=0x5555575df720, flags=0) at block/io.c:804 #13 0x0000555555a52b34 in bdrv_aligned_preadv (bs=bs@entry=0x555556635890, req=req@entry=0x55555a339060, offset=offset@entry=6157475840, bytes=bytes@entry=8192, align=align@entry=1, qiov=qiov@entry=0x5555575df720, flags=0) at block/io.c:1041 #14 0x0000555555a52db8 in bdrv_co_preadv (child=<optimized out>, offset=offset@entry=6157475840, bytes=bytes@entry=8192, qiov=qiov@entry=0x5555575df720, flags=flags@entry=0) at block/io.c:1133 #15 0x0000555555a4515a in blk_co_preadv (blk=0x5555566356d0, offset=6157475840, bytes=8192, qiov=0x5555575df720, flags=0) at block/block-backend.c:783 #16 0x0000555555a45266 in blk_aio_read_entry (opaque=0x555557231aa0) at block/block-backend.c:991 #17 0x0000555555ac0cfa in coroutine_trampoline (i0=<optimized out>, i1=<optimized out>) at util/coroutine-ucontext.c:78 Use the new qemu_coroutine_entered() function instead of comparing against qemu_coroutine_self(). This is correct because: 1. If a coroutine is not entered then it must have yielded to wait for I/O completion. It is therefore safe to enter. 2. If a coroutine is entered then it must be in ioq_submit()/qemu_laio_process_completions() because otherwise it would be yielded while waiting for I/O completion. Therefore it will check laio->ret and return from ioq_submit() instead of yielding, i.e. it's guaranteed not to hang. Reported-by: Fam Zheng <famz@redhat.com> Tested-by: Fam Zheng <famz@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-id: 1474989516-18255-4-git-send-email-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- block/linux-aio.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/block/linux-aio.c b/block/linux-aio.c index d4e19d4..1685ec2 100644 --- a/block/linux-aio.c +++ b/block/linux-aio.c @@ -94,9 +94,12 @@ static void qemu_laio_process_completion(struct qemu_laiocb *laiocb) laiocb->ret = ret; if (laiocb->co) { - /* Jump and continue completion for foreign requests, don't do - * anything for current request, it will be completed shortly. */ - if (laiocb->co != qemu_coroutine_self()) { + /* If the coroutine is already entered it must be in ioq_submit() and + * will notice laio->ret has been filled in when it eventually runs + * later. Coroutines cannot be entered recursively so avoid doing + * that! + */ + if (!qemu_coroutine_entered(laiocb->co)) { qemu_coroutine_enter(laiocb->co); } } else { -- 2.7.4 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Block patches 2016-09-28 18:15 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi ` (6 preceding siblings ...) 2016-09-28 18:15 ` [Qemu-devel] [PULL 7/7] linux-aio: fix re-entrant completion processing Stefan Hajnoczi @ 2016-09-28 22:02 ` Peter Maydell 7 siblings, 0 replies; 28+ messages in thread From: Peter Maydell @ 2016-09-28 22:02 UTC (permalink / raw) To: Stefan Hajnoczi; +Cc: QEMU Developers On 28 September 2016 at 11:15, Stefan Hajnoczi <stefanha@redhat.com> wrote: > The following changes since commit 25930ed60aad49f1fdd7de05272317c86ce1275b: > > Merge remote-tracking branch 'remotes/ehabkost/tags/x86-pull-request' into staging (2016-09-27 23:10:12 +0100) > > are available in the git repository at: > > git://github.com/stefanha/qemu.git tags/block-pull-request > > for you to fetch changes up to fe121b9d3c4258e41f7efa4976bf79151b2d5dbb: > > linux-aio: fix re-entrant completion processing (2016-09-28 17:11:23 +0100) > > ---------------------------------------------------------------- > > ---------------------------------------------------------------- > > Laurent Vivier (1): > libqos: fix qvring_init() > > Lin Ma (1): > iothread: check iothread->ctx before aio_context_unref to avoid > assertion > > Stefan Hajnoczi (3): > coroutine: add qemu_coroutine_entered() function > test-coroutine: test qemu_coroutine_entered() > linux-aio: fix re-entrant completion processing > > Yaowei Bai (2): > block: mirror: fix wrong comment of mirror_start > aio-posix: avoid unnecessary aio_epoll_enabled() calls Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 0/7] Block patches @ 2019-03-08 16:53 Stefan Hajnoczi 2019-03-09 20:55 ` Peter Maydell 0 siblings, 1 reply; 28+ messages in thread From: Stefan Hajnoczi @ 2019-03-08 16:53 UTC (permalink / raw) To: qemu-devel Cc: Peter Maydell, Max Reitz, Michael S. Tsirkin, Kevin Wolf, qemu-block, Stefan Hajnoczi The following changes since commit 6cb4f6db4f4367faa33da85b15f75bbbd2bed2a6: Merge remote-tracking branch 'remotes/cleber/tags/python-next-pull-request' into staging (2019-03-07 16:16:02 +0000) are available in the Git repository at: git://github.com/stefanha/qemu.git tags/block-pull-request for you to fetch changes up to 6ca206204fa773c8626d59caf2a5676d6cc35f52: iothread: document about why we need explicit aio_poll() (2019-03-08 10:20:57 +0000) ---------------------------------------------------------------- Pull request ---------------------------------------------------------------- Anastasiia Rusakova (1): hw/block/virtio-blk: Clean req->dev repetitions Peter Xu (5): iothread: replace init_done_cond with a semaphore iothread: create the gcontext unconditionally iothread: create main loop unconditionally iothread: push gcontext earlier in the thread_fn iothread: document about why we need explicit aio_poll() Stefan Hajnoczi (1): MAINTAINERS: add missing support status fields MAINTAINERS | 3 ++ include/sysemu/iothread.h | 5 +-- hw/block/virtio-blk.c | 16 ++++--- iothread.c | 90 +++++++++++++++++++-------------------- 4 files changed, 57 insertions(+), 57 deletions(-) -- 2.20.1 ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Block patches 2019-03-08 16:53 Stefan Hajnoczi @ 2019-03-09 20:55 ` Peter Maydell 0 siblings, 0 replies; 28+ messages in thread From: Peter Maydell @ 2019-03-09 20:55 UTC (permalink / raw) To: Stefan Hajnoczi Cc: QEMU Developers, Max Reitz, Michael S. Tsirkin, Kevin Wolf, Qemu-block On Fri, 8 Mar 2019 at 16:53, Stefan Hajnoczi <stefanha@redhat.com> wrote: > > The following changes since commit 6cb4f6db4f4367faa33da85b15f75bbbd2bed2a6: > > Merge remote-tracking branch 'remotes/cleber/tags/python-next-pull-request' into staging (2019-03-07 16:16:02 +0000) > > are available in the Git repository at: > > git://github.com/stefanha/qemu.git tags/block-pull-request > > for you to fetch changes up to 6ca206204fa773c8626d59caf2a5676d6cc35f52: > > iothread: document about why we need explicit aio_poll() (2019-03-08 10:20:57 +0000) > > ---------------------------------------------------------------- > Pull request > > ---------------------------------------------------------------- Applied, thanks. Please update the changelog at https://wiki.qemu.org/ChangeLog/4.0 for any user-visible changes. -- PMM ^ permalink raw reply [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 0/7] Block patches @ 2018-03-09 13:19 Stefan Hajnoczi 2018-03-09 18:49 ` Peter Maydell 0 siblings, 1 reply; 28+ messages in thread From: Stefan Hajnoczi @ 2018-03-09 13:19 UTC (permalink / raw) To: qemu-devel Cc: Stefan Hajnoczi, Peter Crosthwaite, Peter Maydell, Kevin Wolf, Paolo Bonzini, qemu-block, Fam Zheng, Michael S. Tsirkin, Max Reitz, Richard Henderson The following changes since commit 0ab4537f08e09b13788db67efd760592fb7db769: Merge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2018-03-07-1' into staging (2018-03-08 12:56:39 +0000) are available in the Git repository at: git://github.com/stefanha/qemu.git tags/block-pull-request for you to fetch changes up to 4486e89c219c0d1b9bd8dfa0b1dd5b0d51ff2268: vl: introduce vm_shutdown() (2018-03-08 17:38:51 +0000) ---------------------------------------------------------------- ---------------------------------------------------------------- Deepa Srinivasan (1): block: Fix qemu crash when using scsi-block Fam Zheng (1): README: Fix typo 'git-publish' Sergio Lopez (1): virtio-blk: dataplane: Don't batch notifications if EVENT_IDX is present Stefan Hajnoczi (4): block: add aio_wait_bh_oneshot() virtio-blk: fix race between .ioeventfd_stop() and vq handler virtio-scsi: fix race between .ioeventfd_stop() and vq handler vl: introduce vm_shutdown() include/block/aio-wait.h | 13 +++++++++++ include/sysemu/iothread.h | 1 - include/sysemu/sysemu.h | 1 + block/block-backend.c | 51 ++++++++++++++++++++--------------------- cpus.c | 16 ++++++++++--- hw/block/dataplane/virtio-blk.c | 39 +++++++++++++++++++++++-------- hw/scsi/virtio-scsi-dataplane.c | 9 ++++---- iothread.c | 31 ------------------------- util/aio-wait.c | 31 +++++++++++++++++++++++++ vl.c | 13 +++-------- README | 2 +- 11 files changed, 122 insertions(+), 85 deletions(-) -- 2.14.3 ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Block patches 2018-03-09 13:19 Stefan Hajnoczi @ 2018-03-09 18:49 ` Peter Maydell 0 siblings, 0 replies; 28+ messages in thread From: Peter Maydell @ 2018-03-09 18:49 UTC (permalink / raw) To: Stefan Hajnoczi Cc: QEMU Developers, Peter Crosthwaite, Kevin Wolf, Paolo Bonzini, Qemu-block, Fam Zheng, Michael S. Tsirkin, Max Reitz, Richard Henderson On 9 March 2018 at 13:19, Stefan Hajnoczi <stefanha@redhat.com> wrote: > The following changes since commit 0ab4537f08e09b13788db67efd760592fb7db769: > > Merge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2018-03-07-1' into staging (2018-03-08 12:56:39 +0000) > > are available in the Git repository at: > > git://github.com/stefanha/qemu.git tags/block-pull-request > > for you to fetch changes up to 4486e89c219c0d1b9bd8dfa0b1dd5b0d51ff2268: > > vl: introduce vm_shutdown() (2018-03-08 17:38:51 +0000) > > ---------------------------------------------------------------- > > ---------------------------------------------------------------- Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 0/7] Block patches @ 2017-06-30 11:46 Stefan Hajnoczi 2017-06-30 13:58 ` Peter Maydell 0 siblings, 1 reply; 28+ messages in thread From: Stefan Hajnoczi @ 2017-06-30 11:46 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi The following changes since commit 464588675455afda2899e20a0b120e4075de50c7: Merge remote-tracking branch 'remotes/sstabellini/tags/xen-20170627-tag' into staging (2017-06-29 11:45:01 +0100) are available in the git repository at: git://github.com/stefanha/qemu.git tags/block-pull-request for you to fetch changes up to c324fd0a39cee43c13f6d1fb34f74fc5e2fb007b: virtio-pci: use ioeventfd even when KVM is disabled (2017-06-30 11:03:45 +0100) ---------------------------------------------------------------- ---------------------------------------------------------------- Stefan Hajnoczi (7): virtio-blk: trace vdev so devices can be distinguished libqos: fix typo in virtio.h QVirtQueue->used comment libqos: add virtio used ring support tests: fix virtio-scsi-test ISR dependence tests: fix virtio-blk-test ISR dependence tests: fix virtio-net-test ISR dependence virtio-pci: use ioeventfd even when KVM is disabled tests/libqos/virtio.h | 8 ++++++- hw/block/virtio-blk.c | 12 ++++++---- hw/virtio/virtio-pci.c | 2 +- tests/libqos/virtio.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/virtio-blk-test.c | 27 ++++++++++++++-------- tests/virtio-net-test.c | 6 ++--- tests/virtio-scsi-test.c | 2 +- hw/block/trace-events | 10 ++++---- 8 files changed, 101 insertions(+), 26 deletions(-) -- 2.9.4 ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Block patches 2017-06-30 11:46 Stefan Hajnoczi @ 2017-06-30 13:58 ` Peter Maydell 0 siblings, 0 replies; 28+ messages in thread From: Peter Maydell @ 2017-06-30 13:58 UTC (permalink / raw) To: Stefan Hajnoczi; +Cc: QEMU Developers On 30 June 2017 at 12:46, Stefan Hajnoczi <stefanha@redhat.com> wrote: > The following changes since commit 464588675455afda2899e20a0b120e4075de50c7: > > Merge remote-tracking branch 'remotes/sstabellini/tags/xen-20170627-tag' into staging (2017-06-29 11:45:01 +0100) > > are available in the git repository at: > > git://github.com/stefanha/qemu.git tags/block-pull-request > > for you to fetch changes up to c324fd0a39cee43c13f6d1fb34f74fc5e2fb007b: > > virtio-pci: use ioeventfd even when KVM is disabled (2017-06-30 11:03:45 +0100) > > ---------------------------------------------------------------- > > ---------------------------------------------------------------- > > Stefan Hajnoczi (7): > virtio-blk: trace vdev so devices can be distinguished > libqos: fix typo in virtio.h QVirtQueue->used comment > libqos: add virtio used ring support > tests: fix virtio-scsi-test ISR dependence > tests: fix virtio-blk-test ISR dependence > tests: fix virtio-net-test ISR dependence > virtio-pci: use ioeventfd even when KVM is disabled Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 0/7] Block patches @ 2015-11-06 17:52 Stefan Hajnoczi 2015-11-06 18:07 ` Peter Maydell 0 siblings, 1 reply; 28+ messages in thread From: Stefan Hajnoczi @ 2015-11-06 17:52 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi The following changes since commit 4b59f39bc9a03afcc74b2fa28da7c3189fca507c: Merge remote-tracking branch 'remotes/mjt/tags/pull-trivial-patches-2015-11-06' into staging (2015-11-06 12:50:24 +0000) are available in the git repository at: git://github.com/stefanha/qemu.git tags/block-pull-request for you to fetch changes up to 6f707181b1bd6ccf2d2fd9397039c7ef6fa4a9fd: blockdev: acquire AioContext in hmp_commit() (2015-11-06 15:41:00 +0000) ---------------------------------------------------------------- ---------------------------------------------------------------- Denis V. Lunev (1): monitor: add missed aio_context_acquire into vm_completion call Fam Zheng (3): aio: Introduce aio_external_disabled aio: Introduce aio_context_setup aio: Introduce aio-epoll.c Michael S. Tsirkin (2): dataplane: simplify indirect descriptor read dataplane: support non-contigious s/g Stefan Hajnoczi (1): blockdev: acquire AioContext in hmp_commit() aio-posix.c | 188 +++++++++++++++++++++++++++++++++++++++++++- aio-win32.c | 4 + async.c | 13 ++- blockdev.c | 12 ++- hw/virtio/dataplane/vring.c | 96 ++++++++++++++-------- include/block/aio.h | 24 ++++++ monitor.c | 11 ++- 7 files changed, 309 insertions(+), 39 deletions(-) -- 2.5.0 ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Block patches 2015-11-06 17:52 Stefan Hajnoczi @ 2015-11-06 18:07 ` Peter Maydell 2015-11-09 2:00 ` Fam Zheng 0 siblings, 1 reply; 28+ messages in thread From: Peter Maydell @ 2015-11-06 18:07 UTC (permalink / raw) To: Stefan Hajnoczi; +Cc: QEMU Developers On 6 November 2015 at 17:52, Stefan Hajnoczi <stefanha@redhat.com> wrote: > The following changes since commit 4b59f39bc9a03afcc74b2fa28da7c3189fca507c: > > Merge remote-tracking branch 'remotes/mjt/tags/pull-trivial-patches-2015-11-06' into staging (2015-11-06 12:50:24 +0000) > > are available in the git repository at: > > git://github.com/stefanha/qemu.git tags/block-pull-request > > for you to fetch changes up to 6f707181b1bd6ccf2d2fd9397039c7ef6fa4a9fd: > > blockdev: acquire AioContext in hmp_commit() (2015-11-06 15:41:00 +0000) > > ---------------------------------------------------------------- Build failure on OSX :-( /Users/pm215/src/qemu-for-merges/aio-posix.c CC block/qcow.o :442:37: error: no member named 'epollfd' in 'struct AioContext' epoll_handler.pfd.fd = ctx->epollfd; ~~~ ^ thanks -- PMM ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Block patches 2015-11-06 18:07 ` Peter Maydell @ 2015-11-09 2:00 ` Fam Zheng 2015-11-09 7:35 ` Markus Armbruster 0 siblings, 1 reply; 28+ messages in thread From: Fam Zheng @ 2015-11-09 2:00 UTC (permalink / raw) To: Peter Maydell; +Cc: QEMU Developers, Stefan Hajnoczi On Fri, 11/06 18:07, Peter Maydell wrote: > On 6 November 2015 at 17:52, Stefan Hajnoczi <stefanha@redhat.com> wrote: > > The following changes since commit 4b59f39bc9a03afcc74b2fa28da7c3189fca507c: > > > > Merge remote-tracking branch 'remotes/mjt/tags/pull-trivial-patches-2015-11-06' into staging (2015-11-06 12:50:24 +0000) > > > > are available in the git repository at: > > > > git://github.com/stefanha/qemu.git tags/block-pull-request > > > > for you to fetch changes up to 6f707181b1bd6ccf2d2fd9397039c7ef6fa4a9fd: > > > > blockdev: acquire AioContext in hmp_commit() (2015-11-06 15:41:00 +0000) > > > > ---------------------------------------------------------------- > > Build failure on OSX :-( > > /Users/pm215/src/qemu-for-merges/aio-posix.c CC block/qcow.o > :442:37: error: no member named 'epollfd' in 'struct AioContext' > epoll_handler.pfd.fd = ctx->epollfd; > ~~~ ^ > :( I think it is harmless to always include this member in AioContext. Stefan, could you squash this into patch 5? Thanks! Fam --- diff --git a/include/block/aio.h b/include/block/aio.h index 91737d5..735f1f8 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -124,11 +124,9 @@ struct AioContext { QEMUTimerListGroup tlg; int external_disable_cnt; -#ifdef CONFIG_EPOLL int epollfd; bool epoll_enabled; bool epoll_available; -#endif }; /** ^ permalink raw reply related [flat|nested] 28+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Block patches 2015-11-09 2:00 ` Fam Zheng @ 2015-11-09 7:35 ` Markus Armbruster 2015-11-09 10:01 ` Stefan Hajnoczi 0 siblings, 1 reply; 28+ messages in thread From: Markus Armbruster @ 2015-11-09 7:35 UTC (permalink / raw) To: Fam Zheng; +Cc: Peter Maydell, QEMU Developers, Stefan Hajnoczi Fam Zheng <famz@redhat.com> writes: > On Fri, 11/06 18:07, Peter Maydell wrote: >> On 6 November 2015 at 17:52, Stefan Hajnoczi <stefanha@redhat.com> wrote: >> > The following changes since commit 4b59f39bc9a03afcc74b2fa28da7c3189fca507c: >> > >> > Merge remote-tracking branch >> > 'remotes/mjt/tags/pull-trivial-patches-2015-11-06' into staging >> > (2015-11-06 12:50:24 +0000) >> > >> > are available in the git repository at: >> > >> > git://github.com/stefanha/qemu.git tags/block-pull-request >> > >> > for you to fetch changes up to 6f707181b1bd6ccf2d2fd9397039c7ef6fa4a9fd: >> > >> > blockdev: acquire AioContext in hmp_commit() (2015-11-06 15:41:00 +0000) >> > >> > ---------------------------------------------------------------- >> >> Build failure on OSX :-( >> >> /Users/pm215/src/qemu-for-merges/aio-posix.c CC block/qcow.o >> :442:37: error: no member named 'epollfd' in 'struct AioContext' >> epoll_handler.pfd.fd = ctx->epollfd; >> ~~~ ^ >> > > :( > > I think it is harmless to always include this member in AioContext. Stefan, > could you squash this into patch 5? Thanks! > > Fam > > --- > > diff --git a/include/block/aio.h b/include/block/aio.h > index 91737d5..735f1f8 100644 > --- a/include/block/aio.h > +++ b/include/block/aio.h > @@ -124,11 +124,9 @@ struct AioContext { > QEMUTimerListGroup tlg; > > int external_disable_cnt; > -#ifdef CONFIG_EPOLL > int epollfd; > bool epoll_enabled; > bool epoll_available; > -#endif > }; Replace by the ifdeffery by a comment pointing to CONFIG_EPOLL, perhaps? ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Block patches 2015-11-09 7:35 ` Markus Armbruster @ 2015-11-09 10:01 ` Stefan Hajnoczi 0 siblings, 0 replies; 28+ messages in thread From: Stefan Hajnoczi @ 2015-11-09 10:01 UTC (permalink / raw) To: Markus Armbruster; +Cc: Peter Maydell, Fam Zheng, QEMU Developers [-- Attachment #1: Type: text/plain, Size: 1885 bytes --] On Mon, Nov 09, 2015 at 08:35:56AM +0100, Markus Armbruster wrote: > Fam Zheng <famz@redhat.com> writes: > > > On Fri, 11/06 18:07, Peter Maydell wrote: > >> On 6 November 2015 at 17:52, Stefan Hajnoczi <stefanha@redhat.com> wrote: > >> > The following changes since commit 4b59f39bc9a03afcc74b2fa28da7c3189fca507c: > >> > > >> > Merge remote-tracking branch > >> > 'remotes/mjt/tags/pull-trivial-patches-2015-11-06' into staging > >> > (2015-11-06 12:50:24 +0000) > >> > > >> > are available in the git repository at: > >> > > >> > git://github.com/stefanha/qemu.git tags/block-pull-request > >> > > >> > for you to fetch changes up to 6f707181b1bd6ccf2d2fd9397039c7ef6fa4a9fd: > >> > > >> > blockdev: acquire AioContext in hmp_commit() (2015-11-06 15:41:00 +0000) > >> > > >> > ---------------------------------------------------------------- > >> > >> Build failure on OSX :-( > >> > >> /Users/pm215/src/qemu-for-merges/aio-posix.c CC block/qcow.o > >> :442:37: error: no member named 'epollfd' in 'struct AioContext' > >> epoll_handler.pfd.fd = ctx->epollfd; > >> ~~~ ^ > >> > > > > :( > > > > I think it is harmless to always include this member in AioContext. Stefan, > > could you squash this into patch 5? Thanks! > > > > Fam > > > > --- > > > > diff --git a/include/block/aio.h b/include/block/aio.h > > index 91737d5..735f1f8 100644 > > --- a/include/block/aio.h > > +++ b/include/block/aio.h > > @@ -124,11 +124,9 @@ struct AioContext { > > QEMUTimerListGroup tlg; > > > > int external_disable_cnt; > > -#ifdef CONFIG_EPOLL > > int epollfd; > > bool epoll_enabled; > > bool epoll_available; > > -#endif > > }; > > Replace by the ifdeffery by a comment pointing to CONFIG_EPOLL, perhaps? Done. Will send a v2 pull request. Stefan [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 473 bytes --] ^ permalink raw reply [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 0/7] Block patches @ 2015-09-25 15:50 Jeff Cody 2015-09-25 19:21 ` Peter Maydell 0 siblings, 1 reply; 28+ messages in thread From: Jeff Cody @ 2015-09-25 15:50 UTC (permalink / raw) To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel The following changes since commit eb9d0ea063fc7bdfab76b84085602a9e48d13ec7: Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20150924' into staging (2015-09-24 01:32:11 +0100) are available in the git repository at: git@github.com:codyprime/qemu-kvm-jtc.git tags/block-pull-request for you to fetch changes up to e6fd57ea297ec3aad32b24090c5d3757a99df3fe: sheepdog: refine discard support (2015-09-25 10:25:19 -0400) ---------------------------------------------------------------- Block patches ---------------------------------------------------------------- Hitoshi Mitake (2): sheepdog: use per AIOCB dirty indexes for non overlapping requests sheepdog: refine discard support Liu Yuan (1): sheepdog: add reopen support Peter Lieven (2): block/nfs: fix calculation of allocated file size block/nfs: cache allocated filesize for read-only files Wen Congyang (2): block: Introduce a new API bdrv_co_no_copy_on_readv() Backup: don't do copy-on-read in before_write_notifier block/backup.c | 20 ++++-- block/io.c | 12 +++- block/nfs.c | 38 +++++++++++- block/sheepdog.c | 168 +++++++++++++++++++++++++++++++++++++++----------- include/block/block.h | 9 ++- trace-events | 1 + 6 files changed, 200 insertions(+), 48 deletions(-) -- 1.9.3 ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Block patches 2015-09-25 15:50 Jeff Cody @ 2015-09-25 19:21 ` Peter Maydell 0 siblings, 0 replies; 28+ messages in thread From: Peter Maydell @ 2015-09-25 19:21 UTC (permalink / raw) To: Jeff Cody; +Cc: QEMU Developers, Qemu-block On 25 September 2015 at 08:50, Jeff Cody <jcody@redhat.com> wrote: > The following changes since commit eb9d0ea063fc7bdfab76b84085602a9e48d13ec7: > > Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20150924' into staging (2015-09-24 01:32:11 +0100) > > are available in the git repository at: > > > git@github.com:codyprime/qemu-kvm-jtc.git tags/block-pull-request > > for you to fetch changes up to e6fd57ea297ec3aad32b24090c5d3757a99df3fe: > > sheepdog: refine discard support (2015-09-25 10:25:19 -0400) > > ---------------------------------------------------------------- > Block patches > ---------------------------------------------------------------- > Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 0/7] Block patches @ 2015-04-30 19:10 Kevin Wolf 2015-05-01 8:59 ` Peter Maydell 0 siblings, 1 reply; 28+ messages in thread From: Kevin Wolf @ 2015-04-30 19:10 UTC (permalink / raw) To: qemu-block; +Cc: kwolf, qemu-devel The following changes since commit 06feaacfb4cfef10cc0c93d97df7bfc8a71dbc7e: Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging (2015-04-30 12:04:11 +0100) are available in the git repository at: git://repo.or.cz/qemu/kevin.git tags/for-upstream for you to fetch changes up to 4a4d614ff56b4cf15e83629946afe51dc116053f: Enable NVMe start controller for Windows guest. (2015-04-30 15:35:26 +0200) ---------------------------------------------------------------- Block patches ---------------------------------------------------------------- Daniel Stekloff (1): Enable NVMe start controller for Windows guest. Kevin Wolf (1): MAINTAINERS: Add qemu-block list where missing Stefan Hajnoczi (5): MAINTAINERS: make virtio-blk Stefan Hajnoczi's responsibility MAINTAINERS: split out image formats MAINTAINERS: make block I/O path Stefan Hajnoczi's responsibility MAINTAINERS: make image fuzzer Stefan Hajnoczi's responsibility MAINTAINERS: make block layer core Kevin Wolf's responsibility MAINTAINERS | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- hw/block/nvme.c | 7 ++++ 2 files changed, 110 insertions(+), 7 deletions(-) ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Block patches 2015-04-30 19:10 Kevin Wolf @ 2015-05-01 8:59 ` Peter Maydell 0 siblings, 0 replies; 28+ messages in thread From: Peter Maydell @ 2015-05-01 8:59 UTC (permalink / raw) To: Kevin Wolf; +Cc: QEMU Developers, qemu-block On 30 April 2015 at 20:10, Kevin Wolf <kwolf@redhat.com> wrote: > The following changes since commit 06feaacfb4cfef10cc0c93d97df7bfc8a71dbc7e: > > Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging (2015-04-30 12:04:11 +0100) > > are available in the git repository at: > > > git://repo.or.cz/qemu/kevin.git tags/for-upstream > > for you to fetch changes up to 4a4d614ff56b4cf15e83629946afe51dc116053f: > > Enable NVMe start controller for Windows guest. (2015-04-30 15:35:26 +0200) > > ---------------------------------------------------------------- > Block patches > > ---------------------------------------------------------------- Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 0/7] Block patches @ 2013-10-18 14:18 Stefan Hajnoczi 0 siblings, 0 replies; 28+ messages in thread From: Stefan Hajnoczi @ 2013-10-18 14:18 UTC (permalink / raw) To: qemu-devel; +Cc: Stefan Hajnoczi, Anthony Liguori The following changes since commit 1680d485777ecf436d724631ea8722cc0c66990e: Merge remote-tracking branch 'rth/tcg-ldst-6' into staging (2013-10-14 09:59:59 -0700) are available in the git repository at: git://github.com/stefanha/qemu.git block for you to fetch changes up to dbbcaa8d4358fdf3c42bf01e9e2d687300e84770: vmdk: fix VMFS extent parsing (2013-10-18 13:41:36 +0200) ---------------------------------------------------------------- Andreas Färber (1): sd: Avoid access to NULL BlockDriverState Fam Zheng (3): blockdev: fix cdrom read_only flag vmdk: Only read cid from image file when opening vmdk: fix VMFS extent parsing Max Reitz (1): block/raw-win32: Always use -errno in hdev_open Mike Qiu (1): hmp: drop bogus "[not inserted]" Stefan Weil (1): virtio: Remove unneeded memcpy block/raw-win32.c | 5 ++--- block/vmdk.c | 10 +++++----- blockdev.c | 7 ++++--- hmp.c | 2 -- hw/block/virtio-blk.c | 1 - hw/sd/sd.c | 2 +- 6 files changed, 12 insertions(+), 15 deletions(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 0/7] Block patches @ 2013-06-17 16:31 Kevin Wolf 2013-06-17 21:17 ` Anthony Liguori 0 siblings, 1 reply; 28+ messages in thread From: Kevin Wolf @ 2013-06-17 16:31 UTC (permalink / raw) To: anthony; +Cc: kwolf, qemu-devel The following changes since commit 38aea177d93556aada7c4c7aa530f0050715e293: Merge remote-tracking branch 'pmaydell/configury.next' into staging (2013-06-17 08:57:57 -0500) are available in the git repository at: git://repo.or.cz/qemu/kevin.git for-anthony for you to fetch changes up to 0bed087df24c7b3fae366f239b9d150de3309416: vmdk: Allow reading variable size descriptor files (2013-06-17 17:47:59 +0200) ---------------------------------------------------------------- Evgeny Budilovsky (1): vmdk: Allow reading variable size descriptor files Keith Busch (1): NVMe: Initial commit for new storage interface Liu Yuan (2): sheepdog: fix snapshot tag initialization sheepdog: support 'qemu-img snapshot -a' Richard W.M. Jones (2): block/curl.c: Refuse to open the handle for writes. curl: Don't set curl options on the handle just before it's going to be deleted. Stefan Hajnoczi (1): vmdk: byteswap VMDK4Header.desc_offset field MAINTAINERS | 5 + block/curl.c | 8 +- block/sheepdog.c | 14 +- block/vmdk.c | 34 +- default-configs/pci.mak | 1 + hw/block/Makefile.objs | 1 + hw/block/nvme.c | 885 +++++++++++++++++++++++++++++++++++++++++++++++ hw/block/nvme.h | 711 +++++++++++++++++++++++++++++++++++++ include/hw/pci/pci_ids.h | 1 + 9 files changed, 1641 insertions(+), 19 deletions(-) create mode 100644 hw/block/nvme.c create mode 100644 hw/block/nvme.h ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Block patches 2013-06-17 16:31 Kevin Wolf @ 2013-06-17 21:17 ` Anthony Liguori 0 siblings, 0 replies; 28+ messages in thread From: Anthony Liguori @ 2013-06-17 21:17 UTC (permalink / raw) To: Kevin Wolf, anthony; +Cc: qemu-devel Pulled. Thanks. Regards, Anthony Liguori ^ permalink raw reply [flat|nested] 28+ messages in thread
* [Qemu-devel] [PULL 0/7] Block patches @ 2010-07-26 14:01 Kevin Wolf 0 siblings, 0 replies; 28+ messages in thread From: Kevin Wolf @ 2010-07-26 14:01 UTC (permalink / raw) To: anthony; +Cc: kwolf, qemu-devel Some more fixes for 0.13. The following changes since commit cdcf9153e5e17dde340135fee5dcc7c299f2d4f5: etrax: Update ethernet mgm-ctrl reg on writes (2010-07-25 21:03:56 +0200) are available in the git repository at: git://repo.or.cz/qemu/kevin.git for-anthony Alex Williamson (1): virtio-blk: Create exit function to unregister savevm Aurelien Jarno (1): ide/atapi: add support for GET EVENT STATUS NOTIFICATION Blue Swirl (1): Fix -snapshot deleting images on disk change Bruce Rogers (1): move 'unsafe' to end of caching modes in help Christoph Hellwig (1): block: default to 0 minimal / optiomal I/O size Stefan Weil (1): block: Use error codes from lower levels for error message Yoshiaki Tamura (1): block migration: propagate return value when bdrv_write() returns < 0 block-migration.c | 6 +++++- block.c | 32 ++++++++++++++++++++++++-------- block.h | 1 + block_int.h | 4 ++-- blockdev.c | 1 + hw/ide/core.c | 15 +++++++++++++++ hw/virtio-blk.c | 8 ++++++++ hw/virtio-pci.c | 1 + hw/virtio.h | 1 + qemu-options.hx | 2 +- 10 files changed, 59 insertions(+), 12 deletions(-) ^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2019-03-09 20:55 UTC | newest] Thread overview: 28+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-09-28 18:15 [Qemu-devel] [PULL 0/7] Block patches Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 1/7] block: mirror: fix wrong comment of mirror_start Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 2/7] aio-posix: avoid unnecessary aio_epoll_enabled() calls Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 3/7] iothread: check iothread->ctx before aio_context_unref to avoid assertion Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 4/7] libqos: fix qvring_init() Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 5/7] coroutine: add qemu_coroutine_entered() function Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 6/7] test-coroutine: test qemu_coroutine_entered() Stefan Hajnoczi 2016-09-28 18:15 ` [Qemu-devel] [PULL 7/7] linux-aio: fix re-entrant completion processing Stefan Hajnoczi 2016-09-28 22:02 ` [Qemu-devel] [PULL 0/7] Block patches Peter Maydell -- strict thread matches above, loose matches on Subject: below -- 2019-03-08 16:53 Stefan Hajnoczi 2019-03-09 20:55 ` Peter Maydell 2018-03-09 13:19 Stefan Hajnoczi 2018-03-09 18:49 ` Peter Maydell 2017-06-30 11:46 Stefan Hajnoczi 2017-06-30 13:58 ` Peter Maydell 2015-11-06 17:52 Stefan Hajnoczi 2015-11-06 18:07 ` Peter Maydell 2015-11-09 2:00 ` Fam Zheng 2015-11-09 7:35 ` Markus Armbruster 2015-11-09 10:01 ` Stefan Hajnoczi 2015-09-25 15:50 Jeff Cody 2015-09-25 19:21 ` Peter Maydell 2015-04-30 19:10 Kevin Wolf 2015-05-01 8:59 ` Peter Maydell 2013-10-18 14:18 Stefan Hajnoczi 2013-06-17 16:31 Kevin Wolf 2013-06-17 21:17 ` Anthony Liguori 2010-07-26 14:01 Kevin Wolf
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).