/home/elmarco/src/qemu/blockjob.c:820:9: error: calling function 'qemu_coroutine_yield' requires holding role '_coroutine_fn' exclusively [-Werror,-Wthread-safety-analysis] qemu_coroutine_yield(); ^ /home/elmarco/src/qemu/blockjob.c:824:5: error: calling function 'block_job_pause_point' requires holding role '_coroutine_fn' exclusively [-Werror,-Wthread-safety-analysis] block_job_pause_point(job); ^ Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> --- include/block/blockjob_int.h | 4 ++-- blockjob.c | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/include/block/blockjob_int.h b/include/block/blockjob_int.h index f13ad05c0d..a3bc01fd51 100644 --- a/include/block/blockjob_int.h +++ b/include/block/blockjob_int.h @@ -145,7 +145,7 @@ void *block_job_create(const char *job_id, const BlockJobDriver *driver, * Put the job to sleep (assuming that it wasn't canceled) for @ns * nanoseconds. Canceling the job will interrupt the wait immediately. */ -void block_job_sleep_ns(BlockJob *job, QEMUClockType type, int64_t ns); +void coroutine_fn block_job_sleep_ns(BlockJob *job, QEMUClockType type, int64_t ns); /** * block_job_yield: @@ -153,7 +153,7 @@ void block_job_sleep_ns(BlockJob *job, QEMUClockType type, int64_t ns); * * Yield the block job coroutine. */ -void block_job_yield(BlockJob *job); +void coroutine_fn block_job_yield(BlockJob *job); /** * block_job_pause_all: diff --git a/blockjob.c b/blockjob.c index 70a78188b7..96424323c1 100644 --- a/blockjob.c +++ b/blockjob.c @@ -788,7 +788,8 @@ bool block_job_is_cancelled(BlockJob *job) return job->cancelled; } -void block_job_sleep_ns(BlockJob *job, QEMUClockType type, int64_t ns) +void coroutine_fn +block_job_sleep_ns(BlockJob *job, QEMUClockType type, int64_t ns) { assert(job->busy); @@ -806,7 +807,8 @@ void block_job_sleep_ns(BlockJob *job, QEMUClockType type, int64_t ns) block_job_pause_point(job); } -void block_job_yield(BlockJob *job) +void coroutine_fn +block_job_yield(BlockJob *job) { assert(job->busy); -- 2.13.1.395.gf7b71de06