[Nbd] [PATCH] Don't error on NBD_FLAG_CMD_FUA on non-writes
- To: nbd-general@lists.sourceforge.net
- Subject: [Nbd] [PATCH] Don't error on NBD_FLAG_CMD_FUA on non-writes
- From: Eric Blake <eblake@...696...>
- Date: Wed, 6 Apr 2016 09:11:37 -0600
- Message-id: <1459955497-6127-1-git-send-email-eblake@...696...>
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 <eblake@...696...>
---
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
Reply to: