Re: [Nbd] [PATCH] Don't error on NBD_FLAG_CMD_FUA on non-writes
On 6 Apr 2016, at 16:11, Eric Blake <eblake@...696...> wrote:
> 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...>
Reviewed-by: Alex Bligh <alex@...872...>
Note Eric's also fixed another bug. The line should
previously have only tested the FUA bit, rather than do
a word comparison.
> ---
> 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
> Nbd-general@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nbd-general
>
--
Alex Bligh
Reply to: