]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Pass virStorageSource into virDomainDiskSourceIsBlockType
authorPeter Krempa <pkrempa@redhat.com>
Fri, 1 Aug 2014 12:00:51 +0000 (14:00 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 20 Aug 2014 07:28:03 +0000 (09:28 +0200)
All checks are based on the storage source, thus there's no need to pass
the complete disk def.

src/conf/domain_conf.c
src/conf/domain_conf.h
src/lxc/lxc_cgroup.c
src/lxc/lxc_driver.c
src/qemu/qemu_command.c
src/qemu/qemu_conf.c

index 14338baaa7802e360ce2aa902ed38bef937bef90..d14191f8897ee8da678d48e74b27e5fb663ced3e 100644 (file)
@@ -20004,29 +20004,26 @@ virDomainDefFindDevice(virDomainDefPtr def,
  * Return true if its source is block type, or false otherwise.
  */
 bool
-virDomainDiskSourceIsBlockType(virDomainDiskDefPtr def)
+virDomainDiskSourceIsBlockType(virStorageSourcePtr src)
 {
-    /* No reason to think the disk source is block type if
-     * the source is empty
-     */
-    if (!virDomainDiskGetSource(def))
+    if (!src->path)
         return false;
 
-    if (virDomainDiskGetType(def) == VIR_STORAGE_TYPE_BLOCK)
+    if (src->type == VIR_STORAGE_TYPE_BLOCK)
         return true;
 
     /* For volume types, check the srcpool.
      * If it's a block type source pool, then it's possible
      */
-    if (virDomainDiskGetType(def) == VIR_STORAGE_TYPE_VOLUME &&
-        def->src->srcpool &&
-        def->src->srcpool->voltype == VIR_STORAGE_VOL_BLOCK) {
+    if (src->type == VIR_STORAGE_TYPE_VOLUME &&
+        src->srcpool &&
+        src->srcpool->voltype == VIR_STORAGE_VOL_BLOCK) {
         /* We don't think the volume accessed by remote URI is
          * block type source, since we can't/shouldn't manage it
          * (e.g. set sgio=filtered|unfiltered for it) in libvirt.
          */
-         if (def->src->srcpool->pooltype == VIR_STORAGE_POOL_ISCSI &&
-             def->src->srcpool->mode == VIR_STORAGE_SOURCE_POOL_MODE_DIRECT)
+         if (src->srcpool->pooltype == VIR_STORAGE_POOL_ISCSI &&
+             src->srcpool->mode == VIR_STORAGE_SOURCE_POOL_MODE_DIRECT)
              return false;
 
         return true;
index 4cf56c9425c95f631f5b5d445de683a25444ee65..f2df4eb80f0d44eb8ba771534e99ce6a7763e9c3 100644 (file)
@@ -2713,7 +2713,7 @@ int virDomainDefFindDevice(virDomainDefPtr def,
                            virDomainDeviceDefPtr dev,
                            bool reportError);
 
-bool virDomainDiskSourceIsBlockType(virDomainDiskDefPtr def)
+bool virDomainDiskSourceIsBlockType(virStorageSourcePtr src)
     ATTRIBUTE_NONNULL(1);
 
 void virDomainChrSourceDefClear(virDomainChrSourceDefPtr def);
index ff88e4f406c7b52e9885601fb74af68eb49d1db8..f9af31cc84b48bc353ee4a138df5ae4023c3c9ea 100644 (file)
@@ -373,7 +373,7 @@ static int virLXCCgroupSetupDeviceACL(virDomainDefPtr def,
 
     VIR_DEBUG("Allowing any disk block devs");
     for (i = 0; i < def->ndisks; i++) {
-        if (!virDomainDiskSourceIsBlockType(def->disks[i]))
+        if (!virDomainDiskSourceIsBlockType(def->disks[i]->src))
             continue;
 
         if (virCgroupAllowDevicePath(cgroup,
index 474163283fb49e6f9af68c3577030b5b5cd6e79a..5f08a67791e803cf4156db2dae76c1ff97b78554 100644 (file)
@@ -4039,7 +4039,7 @@ lxcDomainAttachDeviceDiskLive(virLXCDriverPtr driver,
         goto cleanup;
     }
 
-    if (!virDomainDiskSourceIsBlockType(def)) {
+    if (!virDomainDiskSourceIsBlockType(def->src)) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                        _("Can't setup disk for non-block device"));
         goto cleanup;
index b68695daa0ec0cb1dc0731567f5d2d1cbfa3f433..84d8e4427df2bb66360e68059ec69e60a857c591 100644 (file)
@@ -3660,7 +3660,7 @@ qemuBuildDriveDevStr(virDomainDefPtr def,
                                virStorageNetProtocolTypeToString(disk->src->protocol));
                 goto error;
             }
-        } else if (!virDomainDiskSourceIsBlockType(disk)) {
+        } else if (!virDomainDiskSourceIsBlockType(disk->src)) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                            _("disk device='lun' is only valid for block type disk source"));
             goto error;
index eef5be1801fff554d72bba48e74c0922971e2e57..742ee6f9534df609b3bfd6d247ff4d72c256e8d2 100644 (file)
@@ -979,7 +979,7 @@ qemuAddSharedDevice(virQEMUDriverPtr driver,
     if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
         disk = dev->data.disk;
 
-        if (!disk->src->shared || !virDomainDiskSourceIsBlockType(disk))
+        if (!disk->src->shared || !virDomainDiskSourceIsBlockType(disk->src))
             return 0;
     } else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
         hostdev = dev->data.hostdev;
@@ -1088,7 +1088,7 @@ qemuRemoveSharedDevice(virQEMUDriverPtr driver,
     if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
         disk = dev->data.disk;
 
-        if (!disk->src->shared || !virDomainDiskSourceIsBlockType(disk))
+        if (!disk->src->shared || !virDomainDiskSourceIsBlockType(disk->src))
             return 0;
     } else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
         hostdev = dev->data.hostdev;
@@ -1174,7 +1174,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
         disk = dev->data.disk;
 
         if (disk->device != VIR_DOMAIN_DISK_DEVICE_LUN ||
-            !virDomainDiskSourceIsBlockType(disk))
+            !virDomainDiskSourceIsBlockType(disk->src))
             return 0;
 
         path = virDomainDiskGetSource(disk);