On 6/21/07, Wouter Verhelst <w@...112...> wrote:
I'm thinking it would be good to extend the protocol with two packets, one PING and one PONG
<snip>
I don't think any other way can reliably allow either the client or the server to detect the other end's death. We're using TCP keepalive probes right now already, and there's the -a option to nbd-server, but both are not really a good solution -- the former because it takes literally days to discover a lost connection, the latter because it a) assumes that there is never a good reason for a client to be inactive for more than the time given on the nbd-server command line, b) only allows the server to detect the death of the client, never the other way around, and, well, c) because the implementation is broken currently :)
Do you have intentions of fixing the 2.9.x nbd-server's -a ? Even though it has its limits it does offer a means to timeout the child nbd-server reliably; but IFF steps are taken to make sure there is nbd-client activity within the specified timeout. It is useful for me so I'd like to see it revived. I could look at the code to see why its broken... I remember the 2.8.x code to be fairly subtle in this area. You helped me understand the implementation over email some time ago. But I'm not sure of how drastically 2.9.x's nbd-server has changed; whereby making 2.8.x's nbd-server -a implementation obsolete... point is let me know if you don't have cycles and/or a desire to fix it. thanks, Mike