Hi, This contains 2 patches from my previous series addressing the p->running misuse and the TLS thread leak and 3 new patches to fix the cleanup-while-creating-threads race.
For the p->running I'm keeping the idea from the other series to remove p->running and use a more narrow p->thread_created flag. This flag is used only inform whether the thread has been created so we can join it. For the cleanup race I have moved some code around and added a semaphore to make multifd_save_setup() only return once all channel creation tasks have started. The idea is that after multifd_save_setup() returns, no new creations are in flight and the p->thread_created flags will never change again, so they're enough to cause the cleanup code to wait for the threads to join. CI run: https://gitlab.com/farosas/qemu/-/pipelines/1162798843 @Peter: I can rebase this on top of your series once we decide about it. Fabiano Rosas (5): migration/multifd: Join the TLS thread migration/multifd: Remove p->running migration/multifd: Move multifd_save_setup error handling in to the function migration/multifd: Move multifd_save_setup into migration thread migration/multifd: Add a synchronization point for channel creation migration/migration.c | 14 ++--- migration/multifd.c | 129 ++++++++++++++++++++++++------------------ migration/multifd.h | 11 ++-- 3 files changed, 83 insertions(+), 71 deletions(-) -- 2.35.3