On 2/11/23 8:05 AM, Ming Lei wrote: > On Sat, Feb 11, 2023 at 07:13:44AM -0700, Jens Axboe wrote: >> On 2/10/23 8:18?PM, Ming Lei wrote: >>> On Fri, Feb 10, 2023 at 02:08:35PM -0800, Linus Torvalds wrote: >>>> On Fri, Feb 10, 2023 at 1:51 PM Jens Axboe <axboe@xxxxxxxxx> wrote: >>>>> >>>>> Speaking of splice/io_uring, Ming posted this today: >>>>> >>>>> https://lore.kernel.org/io-uring/20230210153212.733006-1-ming.lei@xxxxxxxxxx/ >>>> >>>> Ugh. Some of that is really ugly. Both 'ignore_sig' and >>>> 'ack_page_consuming' just look wrong. Pure random special cases. >>>> >>>> And that 'ignore_sig' is particularly ugly, since the only thing that >>>> sets it also sets SPLICE_F_NONBLOCK. >>>> >>>> And the *only* thing that actually then checks that field is >>>> 'splice_from_pipe_next()', where there are exactly two >>>> signal_pending() checks that it adds to, and >>>> >>>> (a) the first one is to protect from endless loops >>>> >>>> (b) the second one is irrelevant when SPLICE_F_NONBLOCK is set >>>> >>>> So honestly, just NAK on that series. >>>> >>>> I think that instead of 'ignore_sig' (which shouldn't exist), that >>>> first 'signal_pending()' check in splice_from_pipe_next() should just >>>> be changed into a 'fatal_signal_pending()'. >>> >>> Good point, here the signal is often from task_work_add() called by >>> io_uring. >> >> Usually you'd use task_sigpending() to distinguis the two, but >> fatal_signal_pending() as Linus suggests would also work. The only >> concern here is that since you'll be potentially blocking on waiting for >> the pipe to be readable - if task does indeed have task_work pending and >> that very task_work is the one that will ensure that the pipe is now >> readable, then you're waiting condition will never be satisfied. > > The 2nd signal_pending() will break the loop to get task_work handled, > so it is safe to only change the 1st one to fatal_signal_pending(). OK, but then the ignore_sig change should not be needed at all, just changing that first bit to fatal_signal_pending() would do the trick? -- Jens Axboe