On 03/25, K Prateek Nayak wrote: > > I chased this down to p9_client_rpc() net/9p/client.c specifically: > > err = c->trans_mod->request(c, req); > if (err < 0) { > /* write won't happen */ > p9_req_put(c, req); > if (err != -ERESTARTSYS && err != -EFAULT) > c->status = Disconnected; > goto recalc_sigpending; > } > > c->trans_mod->request() calls p9_fd_request() in net/9p/trans_fd.c > which basically does a p9_fd_poll(). Again, I know nothing about 9p... but if p9_fd_request() returns an err < 0, then it comes from p9_conn->err and p9_fd_request() does nothing else. > Previously, the above would fail with err as -EIO which would > cause the client to "Disconnect" and the retry logic would make > progress. Now however, the err returned is -ERESTARTSYS OK... So p9_conn->err = -ERESTARTSYS was set by p9_conn_cancel() called by p9_write_work() because pipe_write() returns ERESTARTSYS? But I don't understand -EIO with the reverted commit aaec5a95d59615 Oleg.