From 1cc6bdc2e664ed0ce6dce97ecc314fea01bc59fc Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Fri, 1 Aug 2014 14:00:51 +0200 Subject: [PATCH] conf: Pass virStorageSource into virDomainDiskSourceIsBlockType All checks are based on the storage source, thus there's no need to pass the complete disk def. --- src/conf/domain_conf.c | 19 ++++++++----------- src/conf/domain_conf.h | 2 +- src/lxc/lxc_cgroup.c | 2 +- src/lxc/lxc_driver.c | 2 +- src/qemu/qemu_command.c | 2 +- src/qemu/qemu_conf.c | 6 +++--- 6 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 14338baaa7..d14191f889 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -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; diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 4cf56c9425..f2df4eb80f 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -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); diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c index ff88e4f406..f9af31cc84 100644 --- a/src/lxc/lxc_cgroup.c +++ b/src/lxc/lxc_cgroup.c @@ -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, diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 474163283f..5f08a67791 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -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; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index b68695daa0..84d8e4427d 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -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; diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index eef5be1801..742ee6f953 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -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);