Send sockets in NTIRPC are currently blocking. Daniel On Thu, Mar 7, 2019 at 6:41 AM <891873395@qq.com> wrote:
Hi: I have some confusion about sending reply to client。In the process of sending the response,fouction svc_ioq_flushv() would be called. Here, use the writev() system call to send reply via sockfd. I think we're using non-blocking socket here, but comment is "/* blocking write */" and the transport is finish when return < 0. Why? result = writev(xprt->xp_fd, wiov, iw); remaining -= result;
if (result == fbytes) { wiov += iw - 1; iw = 0; continue; } if (unlikely(result < 0)) { __warnx(TIRPC_DEBUG_FLAG_ERROR, "%s() writev failed (%d)\n", __func__, errno); cfconn_set_dead(xprt); break; }
I think when the return code is less than 0, we should judge whether the error code is EAGAIN. _______________________________________________ Devel mailing list -- devel@lists.nfs-ganesha.org To unsubscribe send an email to devel-leave@lists.nfs-ganesha.org