blockjob: introduce .drain callback for jobs
authorPaolo Bonzini <pbonzini@redhat.com>
Thu, 27 Oct 2016 10:48:50 +0000 (12:48 +0200)
committerFam Zheng <famz@redhat.com>
Fri, 28 Oct 2016 13:50:18 +0000 (21:50 +0800)
commitbae8196d9f97916de6323e70e3e374362ee16ec4
treed733f20bed98d2ddaf2a66709fb81f20c9f31d2b
parent50ab0e0908d592b8bda56c2d7495e1190d734b0b
blockjob: introduce .drain callback for jobs

This is required to decouple block jobs from running in an
AioContext.  With multiqueue block devices, a BlockDriverState
does not really belong to a single AioContext.

The solution is to first wait until all I/O operations are
complete; then loop in the main thread for the block job to
complete entirely.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Message-Id: <1477565348-5458-3-git-send-email-pbonzini@redhat.com>
Signed-off-by: Fam Zheng <famz@redhat.com>
block/backup.c
block/mirror.c
blockjob.c
include/block/blockjob.h