mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
qemu_command: Generate command line for MTP filesystem
The source tag sets the rootdir property of the device, which is the directory exposed to the guest via the MTP device. The target tag sets the desc property. This device supports read-only mode as well. Like virtiofs, it does not support additional access modes. Signed-off-by: Rayhan Faizel <rayhan.faizel@gmail.com> Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
5c70a7e328
commit
c836887a02
@ -2311,6 +2311,33 @@ qemuBuildDisksCommandLine(virCommand *cmd,
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
qemuBuildMTPCommandLine(virCommand *cmd,
|
||||
virDomainFSDef *fs,
|
||||
const virDomainDef *def,
|
||||
virQEMUCaps *qemuCaps)
|
||||
{
|
||||
g_autoptr(virJSONValue) props = NULL;
|
||||
|
||||
if (virJSONValueObjectAdd(&props,
|
||||
"s:driver", "usb-mtp",
|
||||
"s:id", fs->info.alias,
|
||||
"s:rootdir", fs->src->path,
|
||||
"s:desc", fs->dst,
|
||||
"b:readonly", fs->readonly,
|
||||
NULL) < 0)
|
||||
return -1;
|
||||
|
||||
if (qemuBuildDeviceAddressProps(props, def, &fs->info) < 0)
|
||||
return -1;
|
||||
|
||||
if (qemuBuildDeviceCommandlineFromJSON(cmd, props, def, qemuCaps) < 0)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
virJSONValue *
|
||||
qemuBuildVHostUserFsDevProps(virDomainFSDef *fs,
|
||||
const virDomainDef *def,
|
||||
@ -2494,10 +2521,15 @@ qemuBuildFilesystemCommandLine(virCommand *cmd,
|
||||
return -1;
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_FS_DRIVER_TYPE_MTP:
|
||||
/* Media Transfer Protocol over USB */
|
||||
if (qemuBuildMTPCommandLine(cmd, def->fss[i], def, qemuCaps) < 0)
|
||||
return -1;
|
||||
break;
|
||||
|
||||
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;
|
||||
}
|
||||
|
35
tests/qemuxmlconfdata/mtp-usb-device.x86_64-latest.args
Normal file
35
tests/qemuxmlconfdata/mtp-usb-device.x86_64-latest.args
Normal file
@ -0,0 +1,35 @@
|
||||
LC_ALL=C \
|
||||
PATH=/bin \
|
||||
HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \
|
||||
USER=test \
|
||||
LOGNAME=test \
|
||||
XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \
|
||||
XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \
|
||||
XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
|
||||
/usr/bin/qemu-system-x86_64 \
|
||||
-name guest=QEMUGuest1,debug-threads=on \
|
||||
-S \
|
||||
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
|
||||
-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
|
||||
-accel tcg \
|
||||
-cpu qemu64 \
|
||||
-m size=4194304k \
|
||||
-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":4294967296}' \
|
||||
-overcommit mem-lock=off \
|
||||
-smp 1,sockets=1,cores=1,threads=1 \
|
||||
-uuid 2d4d4b20-b19b-4713-af0a-bf1cab8b455b \
|
||||
-display none \
|
||||
-no-user-config \
|
||||
-nodefaults \
|
||||
-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
|
||||
-mon chardev=charmonitor,id=monitor,mode=control \
|
||||
-rtc base=utc \
|
||||
-no-shutdown \
|
||||
-boot strict=on \
|
||||
-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
|
||||
-device '{"driver":"usb-mtp","id":"fs0","rootdir":"/tmp/testdir1","desc":"readwrite-fs","readonly":false,"bus":"usb.0","port":"1"}' \
|
||||
-device '{"driver":"usb-mtp","id":"fs1","rootdir":"/tmp/testdir2","desc":"readonly-fs","readonly":true,"bus":"usb.0","port":"2"}' \
|
||||
-audiodev '{"id":"audio1","driver":"none"}' \
|
||||
-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x2"}' \
|
||||
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
|
||||
-msg timestamp=on
|
42
tests/qemuxmlconfdata/mtp-usb-device.x86_64-latest.xml
Normal file
42
tests/qemuxmlconfdata/mtp-usb-device.x86_64-latest.xml
Normal file
@ -0,0 +1,42 @@
|
||||
<domain type='qemu'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>2d4d4b20-b19b-4713-af0a-bf1cab8b455b</uuid>
|
||||
<memory unit='KiB'>4194304</memory>
|
||||
<currentMemory unit='KiB'>4194304</currentMemory>
|
||||
<vcpu placement='static'>1</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='hd'/>
|
||||
</os>
|
||||
<cpu mode='custom' match='exact' check='none'>
|
||||
<model fallback='forbid'>qemu64</model>
|
||||
</cpu>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<controller type='usb' index='0' model='piix3-uhci'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
|
||||
</controller>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<filesystem type='mount' accessmode='passthrough'>
|
||||
<driver type='mtp'/>
|
||||
<source dir='/tmp/testdir1'/>
|
||||
<target dir='readwrite-fs'/>
|
||||
</filesystem>
|
||||
<filesystem type='mount' accessmode='passthrough'>
|
||||
<driver type='mtp'/>
|
||||
<source dir='/tmp/testdir2'/>
|
||||
<target dir='readonly-fs'/>
|
||||
<readonly/>
|
||||
</filesystem>
|
||||
<input type='mouse' bus='ps2'/>
|
||||
<input type='keyboard' bus='ps2'/>
|
||||
<audio id='1' type='none'/>
|
||||
<memballoon model='virtio'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</memballoon>
|
||||
</devices>
|
||||
</domain>
|
27
tests/qemuxmlconfdata/mtp-usb-device.xml
Normal file
27
tests/qemuxmlconfdata/mtp-usb-device.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<domain type='qemu'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>2d4d4b20-b19b-4713-af0a-bf1cab8b455b</uuid>
|
||||
<memory unit='KiB'>4194304</memory>
|
||||
<currentMemory unit='KiB'>4194304</currentMemory>
|
||||
<vcpu placement='static'>1</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='hd'/>
|
||||
</os>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<controller type='usb' index='0' model='piix3-uhci'/>
|
||||
<filesystem type='mount'>
|
||||
<driver type='mtp'/>
|
||||
<source dir='/tmp/testdir1'/>
|
||||
<target dir='readwrite-fs'/>
|
||||
</filesystem>
|
||||
<filesystem type='mount'>
|
||||
<driver type='mtp'/>
|
||||
<source dir='/tmp/testdir2'/>
|
||||
<target dir='readonly-fs'/>
|
||||
<readonly/>
|
||||
</filesystem>
|
||||
<memballoon model='virtio'/>
|
||||
</devices>
|
||||
</domain>
|
@ -2966,6 +2966,8 @@ mymain(void)
|
||||
DO_TEST_CAPS_LATEST("tap-vhost-incorrect");
|
||||
DO_TEST_CAPS_LATEST("tap-vhost");
|
||||
|
||||
DO_TEST_CAPS_LATEST("mtp-usb-device")
|
||||
|
||||
/* check that all input files were actually used here */
|
||||
if (testConfXMLCheck(existingTestCases) < 0)
|
||||
ret = -1;
|
||||
|
Loading…
Reference in New Issue
Block a user