Re: [Qemu-devel] [PATCH v3] blockjob: Fix hang in block_job_finish_sync

2016-02-01 Thread Stefan Hajnoczi
On Mon, Feb 01, 2016 at 10:49:00AM +0800, Fam Zheng wrote: > On Fri, 01/29 11:31, Stefan Hajnoczi wrote: > > On Fri, Jan 29, 2016 at 10:19:49AM +0800, Fam Zheng wrote: > > > @@ -402,6 +407,10 @@ typedef void BlockJobDeferToMainLoopFn(BlockJob > > > *job, void *opaque); > > > * AioContext acquire

Re: [Qemu-devel] [PATCH v3] blockjob: Fix hang in block_job_finish_sync

2016-01-31 Thread Fam Zheng
On Fri, 01/29 11:31, Stefan Hajnoczi wrote: > On Fri, Jan 29, 2016 at 10:19:49AM +0800, Fam Zheng wrote: > > @@ -402,6 +407,10 @@ typedef void BlockJobDeferToMainLoopFn(BlockJob *job, > > void *opaque); > > * AioContext acquired. Block jobs must call bdrv_unref(), bdrv_close(), > > and > > *

Re: [Qemu-devel] [PATCH v3] blockjob: Fix hang in block_job_finish_sync

2016-01-29 Thread Stefan Hajnoczi
On Fri, Jan 29, 2016 at 10:19:49AM +0800, Fam Zheng wrote: > @@ -402,6 +407,10 @@ typedef void BlockJobDeferToMainLoopFn(BlockJob *job, > void *opaque); > * AioContext acquired. Block jobs must call bdrv_unref(), bdrv_close(), and > * anything that uses bdrv_drain_all() in the main loop. >

[Qemu-devel] [PATCH v3] blockjob: Fix hang in block_job_finish_sync

2016-01-28 Thread Fam Zheng
With a mirror job running on a virtio-blk dataplane disk, sending "q" to HMP will cause a dead loop in block_job_finish_sync. This is because the aio_poll() only processes the AIO context of bs which has no more work to do, while the main loop BH that is scheduled for setting the job->completed fl