Re: aio poll, io_pgetevents and a new in-kernel poll API V3
From: Jeff Moyer <hidden>
Date: 2018-01-18 17:59:54
Also in:
linux-api, linux-fsdevel, lkml
Christoph Hellwig [off-list ref] writes:
On Thu, Jan 18, 2018 at 11:44:03AM -0500, Jeff Moyer wrote:quoted
Jeff Moyer [off-list ref] writes:quoted
FYI, this kernel has issues. It will boot up, but I don't have networking, and even rebooting doesn't succeed. I'm looking into it.A bisect lands on: eventfd: switch to ->poll_mask. That's not super helpful, though. I did run the ltp eventfd2 tests, and they all pass. The actual issue I get on boot is that several services don't start: [...] Christoph, are you able to reproduce this?No, I can't reproduce any of that. But I don't have a Fedora system either, so this might be a new systemd version doing funky things. The major change in this version was to call ->poll_mask before setting up the wait queue as well. This does the right thing for poll and aio poll, but the more I dig into the epoll code the less sure I am it does the right thing for it, or in fact that epoll does the right thing in general.. Do you still see it with the patch below applied?
No, that fixes it for me. -Jeff
quoted hunk
diff --git a/fs/select.c b/fs/select.c index 707abe79536b..1784c1a29253 100644 --- a/fs/select.c +++ b/fs/select.c@@ -53,9 +53,9 @@ __poll_t vfs_poll(struct file *file, struct poll_table_struct *pt) head = vfs_get_poll_head(file, events); if (!head) return DEFAULT_POLLMASK; - mask = file->f_op->poll_mask(file, events); - if (mask) - return mask; +// mask = file->f_op->poll_mask(file, events); +// if (mask) +// return mask; pt->_qproc(file, head, pt); }