On 2018-08-17 21:04, John Snow wrote: > Change the manual deferment to mirror_exit into the implicit > callback to job_exit and the mirror_exit callback. > > This does change the order of some bdrv_unref calls and job_completed, > but thanks to the new context in which we call .job_exit, this is safe > to defer the possible flushing of any nodes to the job_finalize_single > cleanup stage.
Ah, right, I forgot this. Hm, what exactly do you mean? This function is executed in the main loop, so it can make 'src' go away. I don't see any difference to before. The only difference I see is that the BH-scheduled function is now job_exit() instead of just mirror_complete() (which is now called as part of job_exit()). But then again, it was mirror_complete() itself that called job_completed(), like it is now job_exit(). So if everything worked after this patch, I don't see why mirror_complete() would bdrv_ref() 'src' around job_completed(). Max > Signed-off-by: John Snow <js...@redhat.com> > --- > block/mirror.c | 25 +++++++++---------------- > 1 file changed, 9 insertions(+), 16 deletions(-)
signature.asc
Description: OpenPGP digital signature