On Wed, Apr 19, 2017 at 04:42:15PM +0200, Paolo Bonzini wrote:
> The new functions helps respecting the invariant that the coroutine
> is entered with false user_resume, zero pause count and no error
> recorded in the iostatus.
> 
> Resetting the iostatus is now common to all of block_job_cancel_async,
> block_job_user_resume and block_job_iostatus_reset, albeit with slight
> differences:
> 
> - block_job_cancel_async resets the iostatus, and resumes the job if
> there was an error, but the coroutine is not restarted immediately.
> For example the caller may continue with a call to block_job_finish_sync.
> 
> - block_job_user_resume resets the iostatus.  It wants to resume the job
> unconditionally, even if there was no error.
> 
> - block_job_iostatus_reset doesn't resume the job at all.  Maybe that's
> a bug but it should be fixed separately.
> 
> block_job_iostatus_reset does the least common denominator, so add some
> checking but otherwise leave it as the entry point for resetting the
> iostatus.
> 
> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
> ---
>         v1->v2: rewritten
> 
>  blockjob.c | 24 ++++++++++++++++++++----
>  1 file changed, 20 insertions(+), 4 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>

Attachment: signature.asc
Description: PGP signature

Reply via email to