• Paolo Bonzini's avatar
    blockjob: use deferred_to_main_loop to indicate the coroutine has ended · eb05e011
    Paolo Bonzini authored
    All block jobs are using block_job_defer_to_main_loop as the final
    step just before the coroutine terminates.  At this point,
    block_job_enter should do nothing, but currently it restarts
    the freed coroutine.
    
    Now, the job->co states should probably be changed to an enum
    (e.g. BEFORE_START, STARTED, YIELDED, COMPLETED) subsuming
    block_job_started, job->deferred_to_main_loop and job->busy.
    For now, this patch eliminates the problematic reenter by
    removing the reset of job->deferred_to_main_loop (which served
    no purpose, as far as I could see) and checking the flag in
    block_job_enter.
    Reviewed-by: 's avatarStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: 's avatarPaolo Bonzini <pbonzini@redhat.com>
    Message-id: 20170508141310.8674-12-pbonzini@redhat.com
    Signed-off-by: 's avatarJeff Cody <jcody@redhat.com>
    eb05e011
blockjob.c 24.2 KB