io-wq: only exit on fatal signals
authorJens Axboe <axboe@kernel.dk>
Wed, 1 Sep 2021 17:18:41 +0000 (11:18 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 1 Sep 2021 18:35:32 +0000 (12:35 -0600)
If the application uses io_uring and also relies heavily on signals
for communication, that can cause io-wq workers to spuriously exit
just because the parent has a signal pending. Just ignore signals
unless they are fatal.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io-wq.c

index 8cba77a..027eb4e 100644 (file)
@@ -575,7 +575,9 @@ loop:
 
                        if (!get_signal(&ksig))
                                continue;
-                       break;
+                       if (fatal_signal_pending(current))
+                               break;
+                       continue;
                }
                if (ret)
                        continue;