On 11/4/24 10:03 AM, Jens Axboe wrote: > On 11/4/24 9:54 AM, Pavel Begunkov wrote: >> On 11/4/24 15:43, Jens Axboe wrote: >>> On 11/4/24 8:34 AM, Pavel Begunkov wrote: >>>> On 11/4/24 15:27, Pavel Begunkov wrote: >> ... >>>> Regardless, the rule with sth like that should be simpler, >>>> i.e. a ctx is getting killed => everything is run from fallback/kthread. >>> >>> I like it, and now there's another reason to do it. Can you out the >>> patch? >> >> Let's see if it works, hopefully will try today. > > I already tried it here fwiw, does fix the issue (as expected) and it > passes the full testing too. Forgot to include the basic reproducer I wrote for this report, it's below. #include <stdio.h> #include <inttypes.h> #include <stdlib.h> #include <unistd.h> #include <liburing.h> int main(int argc, char *argv[]) { struct io_uring ring; int fds[2], ret; __u64 tags[2]; if (pipe(fds) < 0) { perror("pipe"); return 1; } tags[0] = 1; tags[1] = 2; io_uring_queue_init(4, &ring, IORING_SETUP_SINGLE_ISSUER|IORING_SETUP_DEFER_TASKRUN); io_uring_register_files_tags(&ring, fds, tags, 2); io_uring_queue_exit(&ring); sleep(1); return 0; } -- Jens Axboe