From fce502cf5233d800479c2efcf7721ab895db8998 Mon Sep 17 00:00:00 2001 Message-Id: From: John Ferlan Date: Mon, 17 Dec 2018 20:42:30 -0500 Subject: [PATCH] RHEL: qemu: Add ability to set sgio values for hostdev MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://bugzilla.redhat.com/show_bug.cgi?id=1582424 RHEL-only Add necessary checks in order to allow setting sgio values for a scsi host device Signed-off-by: John Ferlan Signed-off-by: Jiri Denemark (cherry picked from commit f2cf0ae7bc371c75f6c0e79192711f2b1d201b10) Reviewed-by: Ján Tomko --- src/qemu/qemu_conf.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index b62dd1df52..ce7869e6be 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1810,6 +1810,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) virDomainDiskDefPtr disk = NULL; virDomainHostdevDefPtr hostdev = NULL; g_autofree char *sysfs_path = NULL; + g_autofree char *hostdev_path = NULL; const char *path = NULL; int val = -1; @@ -1830,14 +1831,10 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) if (!qemuIsSharedHostdev(hostdev)) return 0; - if (hostdev->source.subsys.u.scsi.sgio) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("'sgio' is not supported for SCSI " - "generic device yet ")); + if (!(hostdev_path = qemuGetHostdevPath(hostdev))) return -1; - } - return 0; + path = hostdev_path; } else { return 0; } @@ -1846,7 +1843,11 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) return -1; /* By default, filter the SG_IO commands, i.e. set unpriv_sgio to 0. */ - val = (disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED); + if (dev->type == VIR_DOMAIN_DEVICE_DISK) + val = (disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED); + else + val = (hostdev->source.subsys.u.scsi.sgio == + VIR_DOMAIN_DEVICE_SGIO_UNFILTERED); /* Do not do anything if unpriv_sgio is not supported by the kernel and the * whitelist is enabled. But if requesting unfiltered access, always call -- 2.25.0