On Thu 09 Nov 2017 07:05:26 AM CET, Fam Zheng wrote: >> > I can fix the crash by adding block_job_pause_point(&s->common) at >> > the end of stream_run() (where the 'out' label is). >> > >> > I'm thinking that perhaps we should add the pause point directly to >> > block_job_defer_to_main_loop(), to prevent any block job from >> > running the exit function when it's paused. >> > >> >> Is it possible that the exit function is already deferred when the >> jobs are being paused? (even though it's at least less likely to >> happen) >> >> Then should we flush the bottom halves somehow in addition to putting >> the jobs to sleep? And also then it all probably has to happen before >> bdrv_reopen_queue() > > Or we can stash away the BH temporarily during pause period: > > --- > > diff --git a/blockjob.c b/blockjob.c > index 3a0c49137e..7058ff7ae1 100644
Yeah, what you suggest sounds good. We would still need to add a pause point in addition to this. Does this sound good to everyone? If so I can prepare the patches. Berto
