• Jens Axboe's avatar
    io_uring: SQPOLL parking fixes · 05962f95
    Jens Axboe authored
    We keep running into weird dependency issues between the sqd lock and
    the parking state. Disentangle the SQPOLL thread from the last bits of
    the kthread parking inheritance, and just replace the parking state,
    and two associated locks, with a single rw mutex. The SQPOLL thread
    keeps the mutex for read all the time, except if someone has marked us
    needing to park. Then we drop/re-acquire and try again.
    
    This greatly simplifies the parking state machine (by just getting rid
    of it), and makes it a lot more obvious how it works - if you need to
    modify the ctx list, then you simply park the thread which will grab
    the lock for writing.
    
    Fold in fix from Hillf Danton on not setting STOP on a fatal signal.
    
    Fixes: e54945ae ("io_uring: SQPOLL stop error handling fixes")
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    05962f95
io_uring.c 239 KB