On Thu, Feb 01, 2018 at 11:07:08AM +0000, Stefan Hajnoczi wrote: > Commit dce8921b2baaf95974af8176406881872067adfa ("iothread: Stop threads > before main() quits") introduced iothread_stop_all() to avoid the > following virtio-scsi assertion failure: > > assert(blk_get_aio_context(d->conf.blk) == s->ctx); > > Back then the assertion failed because when bdrv_close_all() made > d->conf.blk NULL, blk_get_aio_context() returned the global AioContext > instead of s->ctx. > > The same assertion can still fail today when vcpus submit new I/O > requests after iothread_stop_all() has moved the BDS to the global > AioContext. > > This patch hardens the iothread_stop_all() approach by pausing vcpus > before calling iothread_stop_all(). > > Note that the assertion failure is a race condition. It is not possible > to reproduce it reliably. > > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > --- > v2: > * Add comment explaining rationale for this ordering and why it's safe. > [Kevin] > > vl.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-)
Thanks, applied to my block tree: https://github.com/stefanha/qemu/commits/block Stefan
signature.asc
Description: PGP signature