* Stefan Hajnoczi (stefa...@redhat.com) wrote: <snip>
> How to synchronize with an IOThread > ----------------------------------- > AioContext is not thread-safe so some rules must be followed when using file > descriptors, event notifiers, timers, or BHs across threads: > > 1. AioContext functions can be called safely from file descriptor, event > notifier, timer, or BH callbacks invoked by the AioContext. No locking is > necessary. > > 2. Other threads wishing to access the AioContext must use > aio_context_acquire()/aio_context_release() for mutual exclusion. Once the > context is acquired no other thread can access it or run event loop iterations > in this AioContext. > > aio_context_acquire()/aio_context_release() calls may be nested. This > means you can call them if you're not sure whether #1 applies. > > Side note: the best way to schedule a function call across threads is to > create > a BH in the target AioContext beforehand and then call qemu_bh_schedule(). No > acquire/release or locking is needed for the qemu_bh_schedule() call. But be > sure to acquire the AioContext for aio_bh_new() if necessary. How do these IOThreads pause during migration? Are they paused by the 'qemu_mutex_lock_iothread' that the migration thread calls? Dave -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK