void *opaque)
{
switch ((virDomainDeviceType) dev->type) {
+ case VIR_DOMAIN_DEVICE_DISK:
+ if (virStorageSourceGetActualType(dev->data.disk->src) != VIR_STORAGE_TYPE_VHOST_USER)
+ return 0;
+
+ return cb(dev, dev->data.disk->src->vhostuser, opaque);
+
case VIR_DOMAIN_DEVICE_NET:
if (virDomainNetGetActualType(dev->data.net) != VIR_DOMAIN_NET_TYPE_VHOSTUSER)
return 0;
return cb(dev, dev->data.rng->source.chardev, opaque);
- case VIR_DOMAIN_DEVICE_DISK:
case VIR_DOMAIN_DEVICE_LEASE:
case VIR_DOMAIN_DEVICE_FS:
case VIR_DOMAIN_DEVICE_INPUT:
/* this function is also called for the monitor backend which doesn't have
* a 'dev' */
if (dev) {
+ /* vhost-user disk doesn't use FD passing */
+ if (dev->type == VIR_DOMAIN_DEVICE_DISK)
+ return 0;
+
if (dev->type == VIR_DOMAIN_DEVICE_NET) {
/* due to a historical bug in qemu we don't use FD passtrhough for
* vhost-sockets for network devices */
qemuDomainChrSourcePrivate *charpriv = QEMU_DOMAIN_CHR_SOURCE_PRIVATE(chardev);
if (dev) {
+ /* vhost-user disk doesn't use FD passing */
+ if (dev->type == VIR_DOMAIN_DEVICE_DISK)
+ return 0;
+
if (dev->type == VIR_DOMAIN_DEVICE_NET) {
/* due to a historical bug in qemu we don't use FD passtrhough for
* vhost-sockets for network devices */