On Thu, 11/09 17:26, Alberto Garcia wrote: > On Wed 08 Nov 2017 03:45:38 PM CET, Alberto Garcia wrote: > > > 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. > > I was trying this and unfortunately this breaks the mirror job at least > (reproduced with a simple block-commit on the topmost node, which uses > commit_active_start() -> mirror_start_job()). > > So what happens is that mirror_run() always calls bdrv_drained_begin() > before returning, pausing the block job. The closing bdrv_drained_end() > call is at the end of mirror_exit(), already in the main loop. > > So the mirror job is always calling block_job_defer_to_main_loop() and > mirror_exit() when the job is paused. >
FWIW, I think Max's report on 194 failures is related: https://lists.gnu.org/archive/html/qemu-devel/2017-11/msg01822.html so perhaps it's worth testing his patch too: https://lists.gnu.org/archive/html/qemu-devel/2017-11/msg01835.html Fam