[Chuck Lever 2023-05-19 14:58:34 UTC]
I expected that service shutdown should unregister with the portmapper, close service listeners so no new connections can be established, then close the children last. The current code appears to close transports in no order, then unregister.
Note that if a socket listener happens to be closed first, that frees the svc_sock that might be relied upon by children sockets (eg, in svc_tcp_listen_data_ready, but that has been fixed). Pinning the svc_xprt won't help since that does not prevent release of socket-specific memory.
This was bugzilla.linux-nfs.org 409
[Chuck Lever 2023-05-19 14:58:34 UTC] I expected that service shutdown should unregister with the portmapper, close service listeners so no new connections can be established, then close the children last. The current code appears to close transports in no order, then unregister.
Note that if a socket listener happens to be closed first, that frees the svc_sock that might be relied upon by children sockets (eg, in svc_tcp_listen_data_ready, but that has been fixed). Pinning the svc_xprt won't help since that does not prevent release of socket-specific memory.