{"id":831192,"url":"http://patchwork.ozlabs.org/api/1.2/patches/831192/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20171027104037.8319-5-eblake@redhat.com/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/1.2/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20171027104037.8319-5-eblake@redhat.com>","list_archive_url":null,"date":"2017-10-27T10:40:29","name":"[v6,04/12] nbd/server: Report error for write to read-only export","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"f6f86c735c6dfd3a05c50bc2bcdaff6f6ee8ac59","submitter":{"id":6591,"url":"http://patchwork.ozlabs.org/api/1.2/people/6591/?format=json","name":"Eric Blake","email":"eblake@redhat.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20171027104037.8319-5-eblake@redhat.com/mbox/","series":[{"id":10552,"url":"http://patchwork.ozlabs.org/api/1.2/series/10552/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=10552","date":"2017-10-27T10:40:27","name":"nbd minimal structured read","version":6,"mbox":"http://patchwork.ozlabs.org/series/10552/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/831192/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/831192/checks/","tags":{},"related":[],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx05.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx05.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=eblake@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3yNgYW2KWpz9t2Z\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 27 Oct 2017 21:47:11 +1100 (AEDT)","from localhost ([::1]:56573 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1e82AP-000688-Dt\n\tfor incoming@patchwork.ozlabs.org; Fri, 27 Oct 2017 06:47:09 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:57230)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <eblake@redhat.com>) id 1e824O-0001DA-Cj\n\tfor qemu-devel@nongnu.org; Fri, 27 Oct 2017 06:40:57 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <eblake@redhat.com>) id 1e824N-0005aZ-HL\n\tfor qemu-devel@nongnu.org; Fri, 27 Oct 2017 06:40:56 -0400","from mx1.redhat.com ([209.132.183.28]:49894)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <eblake@redhat.com>)\n\tid 1e824J-0005X5-3r; Fri, 27 Oct 2017 06:40:51 -0400","from smtp.corp.redhat.com\n\t(int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 0FA8FBDCF;\n\tFri, 27 Oct 2017 10:40:50 +0000 (UTC)","from red.redhat.com (ovpn-120-166.rdu2.redhat.com [10.10.120.166])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id C32035C881;\n\tFri, 27 Oct 2017 10:40:48 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 0FA8FBDCF","From":"Eric Blake <eblake@redhat.com>","To":"qemu-devel@nongnu.org","Date":"Fri, 27 Oct 2017 12:40:29 +0200","Message-Id":"<20171027104037.8319-5-eblake@redhat.com>","In-Reply-To":"<20171027104037.8319-1-eblake@redhat.com>","References":"<20171027104037.8319-1-eblake@redhat.com>","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.16","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.29]);\n\tFri, 27 Oct 2017 10:40:50 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"[Qemu-devel] [PATCH v6 04/12] nbd/server: Report error for write to\n\tread-only export","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"pbonzini@redhat.com, vsementsov@virtuozzo.com, qemu-block@nongnu.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"},"content":"When the server is read-only, we were already reporting an error\nmessage for NBD_CMD_WRITE_ZEROES, but failed to set errp for a\nsimilar NBD_CMD_WRITE.  This will matter more once structured\nreplies allow the server to propagate the errp information back\nto the client.  While at it, use an error message that makes a\nbit more sense if viewed on the client side.\n\nNote that when using qemu-io to test qemu-nbd behavior, it is\nrather difficult to convince qemu-io to send protocol violations\n(such as a read beyond bounds), because we have a lot of active\nchecking on the client side that a qemu-io request makes sense\nbefore it ever goes over the wire to the server.  The case of a\nclient attempting a write when the server is started as\n'qemu-nbd -r' is one of the few places where we can easily test\nerror path handling, without having to resort to hacking in known\ntemporary bugs to either the server or client.  [Maybe we want a\nfuture patch to the client to do up-front checking on writes to a\nread-only export, the way it does up-front bounds checking; but I\ndon't see anything in the NBD spec that points to a protocol\nviolation in our current behavior.]\n\nSigned-off-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>\n\n---\nv6: add R-b\nv5: new patch\n---\n nbd/server.c | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)","diff":"diff --git a/nbd/server.c b/nbd/server.c\nindex efb6003364..05ff7470d5 100644\n--- a/nbd/server.c\n+++ b/nbd/server.c\n@@ -1381,6 +1381,7 @@ static coroutine_fn void nbd_trip(void *opaque)\n         break;\n     case NBD_CMD_WRITE:\n         if (exp->nbdflags & NBD_FLAG_READ_ONLY) {\n+            error_setg(&local_err, \"Export is read-only\");\n             ret = -EROFS;\n             break;\n         }\n@@ -1398,7 +1399,7 @@ static coroutine_fn void nbd_trip(void *opaque)\n         break;\n     case NBD_CMD_WRITE_ZEROES:\n         if (exp->nbdflags & NBD_FLAG_READ_ONLY) {\n-            error_setg(&local_err, \"Server is read-only, return error\");\n+            error_setg(&local_err, \"Export is read-only\");\n             ret = -EROFS;\n             break;\n         }\n","prefixes":["v6","04/12"]}