qemu-stable
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH for-8.0 v2] aio-posix: fix race between epoll upgrade and aio


From: Kevin Wolf
Subject: Re: [PATCH for-8.0 v2] aio-posix: fix race between epoll upgrade and aio_set_fd_handler()
Date: Mon, 27 Mar 2023 15:14:57 +0200

Am 23.03.2023 um 15:48 hat Stefan Hajnoczi geschrieben:
> If another thread calls aio_set_fd_handler() while the IOThread event
> loop is upgrading from ppoll(2) to epoll(7) then we might miss new
> AioHandlers. The epollfd will not monitor the new AioHandler's fd,
> resulting in hangs.
> 
> Take the AioHandler list lock while upgrading to epoll. This prevents
> AioHandlers from changing while epoll is being set up. If we cannot lock
> because we're in a nested event loop, then don't upgrade to epoll (it
> will happen next time we're not in a nested call).
> 
> The downside to taking the lock is that the aio_set_fd_handler() thread
> has to wait until the epoll upgrade is finished, which involves many
> epoll_ctl(2) system calls. However, this scenario is rare and I couldn't
> think of another solution that is still simple.
> 
> Reported-by: Qing Wang <qinwang@redhat.com>
> Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2090998
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Fam Zheng <fam@euphon.net>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
> v2:
> - Use qemu_lockcnt_inc_and_unlock() instead of qemu_lockcnt_unlock() [Paolo]

Thanks, applied to the block branch.

Kevin




reply via email to

[Prev in Thread] Current Thread [Next in Thread]