From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47744) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YqfPQ-0000wR-O5 for qemu-devel@nongnu.org; Fri, 08 May 2015 06:21:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YqfPM-0001ES-Lz for qemu-devel@nongnu.org; Fri, 08 May 2015 06:21:32 -0400 From: Paolo Bonzini Date: Fri, 8 May 2015 12:21:24 +0200 Message-Id: <1431080484-9760-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH] qemu-nbd: return ENOSPC for out-of-range writes List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, qemu-stable@nongnu.org, armbru@redhat.com, mreitz@redhat.com This ensures that werror=enospc works fine for NBD-backed devices. Recovery can be done through live snapshots even if the NBD server does not support online resizing. Suggested-by: Kevin Wolf Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini --- nbd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nbd.c b/nbd.c index 57d71b2..a04ba80 100644 --- a/nbd.c +++ b/nbd.c @@ -1297,7 +1297,8 @@ static void nbd_trip(void *opaque) request.from, request.len, (uint64_t)exp->size, (uint64_t)exp->dev_offset); LOG("requested operation past EOF--bad client?"); - goto invalid_request; + reply.error = (command == NBD_CMD_WRITE) ? ENOSPC : EINVAL; + goto error_reply; } switch (command) { @@ -1390,7 +1391,6 @@ static void nbd_trip(void *opaque) break; default: LOG("invalid request type (%u) received", request.type); - invalid_request: reply.error = EINVAL; error_reply: if (nbd_co_send_reply(req, &reply, 0) < 0) { -- 2.3.5