Expose usb-mtp device as another type of <filesystem/>.
Signed-off-by: Rayhan Faizel <rayhan.faizel@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
<source socket='/tmp/sock'/>
<target dir='tag'/>
</filesystem>
+ <filesystem type='mount'>
+ <driver type='mtp'/>
+ <source dir='/export/to/guest'/>
+ <target dir='mtptag'/>
+ </filesystem>
...
</devices>
...
can also be set. ( :since:`Since 3.5.0` )
- For ``virtiofs``, the ``queue`` attribute can be used to specify the queue
size (i.e. how many requests can the queue fit). ( :since:`Since 6.2.0` )
+ - QEMU supports ``mtp`` which exposes a virtual USB MTP device to the
+ guest. ( :since:`Since 10.2.0` )
``binary``
The optional ``binary`` element can tune the options for virtiofsd. All of
case VIR_DOMAIN_FS_DRIVER_TYPE_LOOP:
case VIR_DOMAIN_FS_DRIVER_TYPE_NBD:
case VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP:
+ case VIR_DOMAIN_FS_DRIVER_TYPE_MTP:
case VIR_DOMAIN_FS_DRIVER_TYPE_LAST:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unsupported filesystem driver '%1$s'"),
"nbd",
"ploop",
"virtiofs",
+ "mtp",
);
VIR_ENUM_IMPL(virDomainFSAccessMode,
}
}
+ /* usb-mtp */
+ for (i = 0; i < def->nfss; i++) {
+ virDomainFSDef *fsdev = def->fss[i];
+ if (fsdev->fsdriver == VIR_DOMAIN_FS_DRIVER_TYPE_MTP) {
+ if (iter(&fsdev->info, opaque) < 0)
+ return -1;
+ }
+ }
+
return 0;
}
VIR_DOMAIN_FS_DRIVER_TYPE_NBD,
VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP,
VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS,
+ VIR_DOMAIN_FS_DRIVER_TYPE_MTP,
VIR_DOMAIN_FS_DRIVER_TYPE_LAST
} virDomainFSDriverType;
</optional>
<ref name="virtioOptions"/>
</group>
+ <group>
+ <attribute name="type">
+ <value>mtp</value>
+ </attribute>
+ </group>
<empty/>
</choice>
</element>
*baseName = "vhost-user-fs";
break;
+ case VIR_DOMAIN_FS_DRIVER_TYPE_MTP:
case VIR_DOMAIN_FS_DRIVER_TYPE_LOOP:
case VIR_DOMAIN_FS_DRIVER_TYPE_NBD:
case VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP:
case VIR_DOMAIN_FS_DRIVER_TYPE_LOOP:
case VIR_DOMAIN_FS_DRIVER_TYPE_NBD:
case VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP:
+ case VIR_DOMAIN_FS_DRIVER_TYPE_MTP:
case VIR_DOMAIN_FS_DRIVER_TYPE_LAST:
break;
}
/* vhost-user-fs-pci */
return virtioFlags;
+ case VIR_DOMAIN_FS_DRIVER_TYPE_MTP:
case VIR_DOMAIN_FS_DRIVER_TYPE_LOOP:
case VIR_DOMAIN_FS_DRIVER_TYPE_NBD:
case VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP:
if (!virDeviceInfoPCIAddressIsWanted(&def->fss[i]->info))
continue;
- /* Only support VirtIO-9p-pci so far. If that changes,
- * we might need to skip devices here */
+ /* Skip MTP device */
+ if (def->fss[i]->fsdriver == VIR_DOMAIN_FS_DRIVER_TYPE_MTP)
+ continue;
+
if (qemuDomainPCIAddressReserveNextAddr(addrs, &def->fss[i]->info) < 0)
return -1;
}
}
break;
+ case VIR_DOMAIN_FS_DRIVER_TYPE_MTP:
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_USB_MTP)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("mtp is not supported with this QEMU binary"));
+ return -1;
+ }
+ if (fs->accessmode != VIR_DOMAIN_FS_ACCESSMODE_PASSTHROUGH) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("mtp only supports passthrough accessmode"));
+ return -1;
+ }
+ break;
+
case VIR_DOMAIN_FS_DRIVER_TYPE_LAST:
default:
virReportEnumRangeError(virDomainFSDriverType, fs->fsdriver);