[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-block] [PULL 1/4] blockjob: do not allow coroutin

From: Kevin Wolf
Subject: Re: [Qemu-devel] [Qemu-block] [PULL 1/4] blockjob: do not allow coroutine double entry or entry-after-completion
Date: Wed, 22 Nov 2017 11:25:15 +0100
User-agent: Mutt/1.9.1 (2017-09-22)

Am 21.11.2017 um 18:03 hat Jeff Cody geschrieben:
> When block_job_sleep_ns() is called, the co-routine is scheduled for
> future execution.  If we allow the job to be re-entered prior to the
> scheduled time, we present a race condition in which a coroutine can be
> entered recursively, or even entered after the coroutine is deleted.
> The job->busy flag is used by blockjobs when a coroutine is busy
> executing. The function 'block_job_enter()' obeys the busy flag,
> and will not enter a coroutine if set.  If we sleep a job, we need to
> leave the busy flag set, so that subsequent calls to block_job_enter()
> are prevented.
> This changes the prior behavior of block_job_cancel() being able to
> immediately wake up and cancel a job; in practice, this should not be an
> issue, as the coroutine sleep times are generally very small, and the
> cancel will occur the next time the coroutine wakes up.
> This fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1508708
> Signed-off-by: Jeff Cody <address@hidden>
> Reviewed-by: Stefan Hajnoczi <address@hidden>

git bisect says that this is the commit where qemu-iotests started to
break, e.g. case 020:

--- /home/kwolf/source/qemu/tests/qemu-iotests/020.out  2017-11-20 
10:43:53.157894898 +0100
+++ /home/kwolf/source/qemu/tests/qemu-iotests/020.out.bad      2017-11-22 
11:22:48.781344756 +0100
@@ -537,7 +537,8 @@
 wrote 65536/65536 bytes at offset 4295098368
 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 No errors were found on the image.
-Image committed.
+qemu-img: block/block-backend.c:2086: blk_root_drained_end: Assertion 
`blk->quiesce_counter' failed.
+./common.rc: line 61: 17396 Aborted                 (core dumped) ( exec 
 Reading from the backing file

reply via email to

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