Files
erofs-linux/net/9p
Oleg Nesterov e8fe3f07a3 9p/trans_fd: p9_fd_request: kick rx thread if EPOLLIN
p9_read_work() doesn't set Rworksched and doesn't do schedule_work(m->rq)
if list_empty(&m->req_list).

However, if the pipe is full, we need to read more data and this used to
work prior to commit aaec5a95d5 ("pipe_read: don't wake up the writer
if the pipe is still full").

p9_read_work() does p9_fd_read() -> ... -> anon_pipe_read() which (before
the commit above) triggered the unnecessary wakeup. This wakeup calls
p9_pollwake() which kicks p9_poll_workfn() -> p9_poll_mux(), p9_poll_mux()
will notice EPOLLIN and schedule_work(&m->rq).

This no longer happens after the optimization above, change p9_fd_request()
to use p9_poll_mux() instead of only checking for EPOLLOUT.

Reported-by: [email protected]
Tested-by: [email protected]
Closes: https://lore.kernel.org/all/[email protected]/
Link: https://lore.kernel.org/all/[email protected]/
Co-developed-by: K Prateek Nayak <[email protected]>
Signed-off-by: K Prateek Nayak <[email protected]>
Signed-off-by: Oleg Nesterov <[email protected]>
Tested-by: K Prateek Nayak <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Dominique Martinet <[email protected]>
2025-09-19 16:34:51 +09:00
..
2025-03-23 06:20:48 +09:00
2022-01-10 10:00:09 +09:00
2022-10-05 07:05:41 +09:00
2021-11-03 17:45:04 +09:00
2024-11-22 23:36:19 +09:00