]> git.proxmox.com Git - mirror_qemu.git/commitdiff
nbd: Support auto-read-only option
authorKevin Wolf <kwolf@redhat.com>
Mon, 8 Oct 2018 15:27:18 +0000 (17:27 +0200)
committerKevin Wolf <kwolf@redhat.com>
Mon, 5 Nov 2018 14:09:55 +0000 (15:09 +0100)
If read-only=off, but auto-read-only=on is given, open a read-write NBD
connection if the server provides a read-write export, but instead of
erroring out for read-only exports, just degrade to read-only.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
block/nbd-client.c

index 9686ecbd5eec5704687f7b2317c6cefd4fd011b0..76e9ca3abebbfab22ce226b58311b6a2e277f385 100644 (file)
@@ -992,11 +992,11 @@ int nbd_client_init(BlockDriverState *bs,
         logout("Failed to negotiate with the NBD server\n");
         return ret;
     }
-    if (client->info.flags & NBD_FLAG_READ_ONLY &&
-        !bdrv_is_read_only(bs)) {
-        error_setg(errp,
-                   "request for write access conflicts with read-only export");
-        return -EACCES;
+    if (client->info.flags & NBD_FLAG_READ_ONLY) {
+        ret = bdrv_apply_auto_read_only(bs, "NBD export is read-only", errp);
+        if (ret < 0) {
+            return ret;
+        }
     }
     if (client->info.flags & NBD_FLAG_SEND_FUA) {
         bs->supported_write_flags = BDRV_REQ_FUA;