On Fri, Apr 03, 2015 at 10:05:18PM +0800, Fam Zheng wrote: > This patch changes block_job_pause to increase the pause counter and > block_job_resume to decrease it. > > The counter will allow calling block_job_pause/block_job_resume > unconditionally on a job when we need to suspend the IO temporarily. > > From now on, each block_job_resume must be paired with a block_job_pause > to keep the counter balanced. > > The user pause from QMP or HMP will only trigger block_job_pause once > until it's resumed, this is achieved by adding a user_paused flag in > BlockJob. > > One occurrence of block_job_resume in mirror_complete is replaced with > block_job_enter which does what is necessary. > > In block_job_cancel, the cancel flag is good enough to instruct > coroutines to quit loop, so use block_job_enter to replace the unpaired > block_job_resume. > > Upon block job IO error, user is notified about the entering to the > pause state, so this pause belongs to user pause, set the flag > accordingly and expect a matching QMP resume. > > Signed-off-by: Fam Zheng <f...@redhat.com> > --- > block/mirror.c | 2 +- > blockdev.c | 8 +++++--- > blockjob.c | 23 +++++++++++++++++------ > include/block/blockjob.h | 20 ++++++++++++++++---- > 4 files changed, 39 insertions(+), 14 deletions(-)
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
pgpTxrgnrKMpi.pgp
Description: PGP signature