public inbox for [email protected]
 help / color / mirror / Atom feed
* signals not reliably interrupting io_uring_enter anymore
@ 2020-07-04  0:00 Andres Freund
  2020-07-04  0:15 ` Andres Freund
  0 siblings, 1 reply; 10+ messages in thread
From: Andres Freund @ 2020-07-04  0:00 UTC (permalink / raw)
  To: Jens Axboe, io-uring

Hi,

I haven't yet fully analyzed the problem, but after updating to
cdd3bb54332f82295ed90cd0c09c78cd0c0ee822 io_uring using postgres does
not work reliably anymore.

The symptom is that io_uring_enter(IORING_ENTER_GETEVENTS) isn't
interrupted by signals anymore. The signal handler executes, but
afterwards the syscall is restarted. Previously io_uring_enter reliably
returned EINTR in that case.

Currently postgres relies on signals interrupting io_uring_enter(). We
probably can find a way to not do so, but it'd not be entirely trivial.

I suspect the issue is

commit ce593a6c480a22acba08795be313c0c6d49dd35d (tag: io_uring-5.8-2020-07-01, linux-block/io_uring-5.8)
Author: Jens Axboe <[email protected]>
Date:   2020-06-30 12:39:05 -0600

    io_uring: use signal based task_work running

as that appears to have changed the error returned by
io_uring_enter(GETEVENTS) after having been interrupted by a signal from
EINTR to ERESTARTSYS.


I'll check to make sure that the issue doesn't exist before the above
commit.


Greetings,

Andres Freund

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-07-04 19:45 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-04  0:00 signals not reliably interrupting io_uring_enter anymore Andres Freund
2020-07-04  0:15 ` Andres Freund
2020-07-04  0:48   ` Jens Axboe
2020-07-04  1:13     ` Andres Freund
2020-07-04  1:52       ` Jens Axboe
2020-07-04  2:08         ` Jens Axboe
2020-07-04  2:56           ` Jens Axboe
2020-07-04 14:55             ` Jens Axboe
2020-07-04 19:11               ` Andres Freund
2020-07-04 19:45                 ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox