Commit ab22e082 changed the server to reject all unknown flags with EINVAL, but in the process broke qemu as a client (which in qemu 2.5 unconditionally FUA on NBD_CMD_FLUSH). Commit e82baa5f relaxed the protocol to explicitly document that servers must not reject FUA on any command (but MAY ignore it where the command does not actually cause a write). Fix the reference implementation to match.
Signed-off-by: Eric Blake <[email protected]> --- nbd-server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nbd-server.c b/nbd-server.c index b222a11..4edb883 100644 --- a/nbd-server.c +++ b/nbd-server.c @@ -1523,7 +1523,7 @@ static void handle_request(gpointer data, gpointer user_data) { uint32_t flags = package->req->type & ~NBD_CMD_MASK_COMMAND; struct nbd_reply rep; - if(flags != 0 && (type != NBD_CMD_WRITE || flags != NBD_CMD_FLAG_FUA)) { + if(flags & ~NBD_CMD_FLAG_FUA) { msg(LOG_ERR, "E: received invalid flag %d on command %d, ignoring", flags, type); goto error; } -- 2.5.5 ------------------------------------------------------------------------------ _______________________________________________ Nbd-general mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/nbd-general
