Hi folks, One of the problems with the NBD protocol is that the read command sends out the reply header before the data. As such, if handling of a read request encounters a problem after the header has been sent out, there is no way currently to communicate this fact to the client.
This is a problem, because it forces the server to choose between a number of equally unattractive options: - The server could ignore read errors. This would mean the client would get incorrect data. - The server could drop the connection on receiving a read error. This would mean the client would see a lost connection without really knowing what's happening. - The server could be required to read all data into memory before sending out the reply header. This is problematic for busy servers and/or large read requests. I would therefore want to add another message to the protocol, NBD_CMD_READ2. The semantics of this message would be similar to NBD_CMD_READ, except that an nbd_reply structure is sent both before and after the read data. If the first reply has a nonzero error message, then no data is to be expected by the client (this is different from the current semantics of NBD_CMD_READ as described in the protocol document). If the second reply has a nonzero error message, the client should consider the received data to be (possibly partially) invalid. The server should send "invalid request" error replies in the first reply header; it should send "medium error" replies in the second. Thoughts? -- It is easy to love a country that is famous for chocolate and beer -- Barack Obama, speaking in Brussels, Belgium, 2014-03-26 ------------------------------------------------------------------------------ _______________________________________________ Nbd-general mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/nbd-general
