mirror of https://github.com/xemu-project/xemu.git
blockjob: fix user pause in block_job_error_action
Job (especially mirror) may call block_job_error_action several times before actual pause if it has several in-flight requests. block_job_error_action will call job_pause more than once in this case, which lead to following block-job-resume qmp command can't actually resume the job. Fix it by do not increase pause level in block_job_error_action if user_paused already set. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
27e42789b7
commit
8d9648cbf3
|
@ -501,9 +501,11 @@ BlockErrorAction block_job_error_action(BlockJob *job, BlockdevOnError on_err,
|
||||||
action);
|
action);
|
||||||
}
|
}
|
||||||
if (action == BLOCK_ERROR_ACTION_STOP) {
|
if (action == BLOCK_ERROR_ACTION_STOP) {
|
||||||
|
if (!job->job.user_paused) {
|
||||||
job_pause(&job->job);
|
job_pause(&job->job);
|
||||||
/* make the pause user visible, which will be resumed from QMP. */
|
/* make the pause user visible, which will be resumed from QMP. */
|
||||||
job->job.user_paused = true;
|
job->job.user_paused = true;
|
||||||
|
}
|
||||||
block_job_iostatus_set_err(job, error);
|
block_job_iostatus_set_err(job, error);
|
||||||
}
|
}
|
||||||
return action;
|
return action;
|
||||||
|
|
Loading…
Reference in New Issue