]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Allow forcing read-only mode in qemuDomainStorageSourceAccessModify
authorPeter Krempa <pkrempa@redhat.com>
Thu, 18 Apr 2019 13:48:39 +0000 (15:48 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 9 May 2019 13:55:36 +0000 (15:55 +0200)
Add a new flag which will set the image as read-only even if the image
data allows writing.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_domain.c

index 4a0f427de824f4c3756c3e20273f10c388d49cb1..302554b875d7a933988d1d34162bb79c1aa0b890 100644 (file)
@@ -9216,6 +9216,8 @@ typedef enum {
     QEMU_DOMAIN_STORAGE_SOURCE_ACCESS_REVOKE = 1 << 0,
     /* operate on full backing chain rather than single image */
     QEMU_DOMAIN_STORAGE_SOURCE_ACCESS_CHAIN = 1 << 1,
+    /* force permissions to read-only when allowing */
+    QEMU_DOMAIN_STORAGE_SOURCE_ACCESS_READ_ONLY = 1 << 2,
 } qemuDomainStorageSourceAccessFlags;
 
 
@@ -9243,6 +9245,10 @@ qemuDomainStorageSourceAccessModify(virQEMUDriverPtr driver,
     virErrorPtr orig_err = NULL;
     bool chain = flags & QEMU_DOMAIN_STORAGE_SOURCE_ACCESS_CHAIN;
     int rc;
+    bool was_readonly = src->readonly;
+
+    if (flags & QEMU_DOMAIN_STORAGE_SOURCE_ACCESS_READ_ONLY)
+        src->readonly = true;
 
     /* just tear down the disk access */
     if (flags & QEMU_DOMAIN_STORAGE_SOURCE_ACCESS_REVOKE) {
@@ -9292,6 +9298,7 @@ qemuDomainStorageSourceAccessModify(virQEMUDriverPtr driver,
         VIR_WARN("Unable to release lock on %s", srcstr);
 
  cleanup:
+    src->readonly = was_readonly;
     virErrorRestore(&orig_err);
 
     return ret;