[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: