mirror of https://gitee.com/openkylin/libvirt.git
Do not generate security_model when fs driver is anything but 'path'
QEMU does not support security_model for anything but 'path' fs driver type. Currently in libvirt, when security_model ( accessmode attribute) is not specified it auto-generates it irrespective of the fs driver type, which can result in a qemu error for drivers other than path. This patch ensures that the qemu cmdline is correctly generated by taking into account the fs driver type. Signed-off-by: Deepak C Shetty <deepakcs@linux.vnet.ibm.com>
This commit is contained in:
parent
52d064f42d
commit
99fbb3866c
1
AUTHORS
1
AUTHORS
|
@ -214,6 +214,7 @@ Patches have also been contributed by:
|
||||||
Michael Ellerman <michael@ellerman.id.au>
|
Michael Ellerman <michael@ellerman.id.au>
|
||||||
Rommer <rommer@active.by>
|
Rommer <rommer@active.by>
|
||||||
Yuri Chornoivan <yurchor@ukr.net>
|
Yuri Chornoivan <yurchor@ukr.net>
|
||||||
|
Deepak C Shetty <deepakcs@linux.vnet.ibm.com>
|
||||||
|
|
||||||
[....send patches to get your name here....]
|
[....send patches to get your name here....]
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* qemu_command.c: QEMU command generation
|
* qemu_command.c: QEMU command generation
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006-2011 Red Hat, Inc.
|
* Copyright (C) 2006-2012 Red Hat, Inc.
|
||||||
* Copyright (C) 2006 Daniel P. Berrange
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
|
@ -2132,12 +2132,23 @@ char *qemuBuildFSStr(virDomainFSDefPtr fs,
|
||||||
}
|
}
|
||||||
virBufferAdd(&opt, driver, -1);
|
virBufferAdd(&opt, driver, -1);
|
||||||
|
|
||||||
if (fs->accessmode == VIR_DOMAIN_FS_ACCESSMODE_MAPPED) {
|
if (fs->fsdriver == VIR_DOMAIN_FS_DRIVER_TYPE_PATH ||
|
||||||
virBufferAddLit(&opt, ",security_model=mapped");
|
fs->fsdriver == VIR_DOMAIN_FS_DRIVER_TYPE_DEFAULT) {
|
||||||
} else if(fs->accessmode == VIR_DOMAIN_FS_ACCESSMODE_PASSTHROUGH) {
|
if (fs->accessmode == VIR_DOMAIN_FS_ACCESSMODE_MAPPED) {
|
||||||
virBufferAddLit(&opt, ",security_model=passthrough");
|
virBufferAddLit(&opt, ",security_model=mapped");
|
||||||
} else if(fs->accessmode == VIR_DOMAIN_FS_ACCESSMODE_SQUASH) {
|
} else if(fs->accessmode == VIR_DOMAIN_FS_ACCESSMODE_PASSTHROUGH) {
|
||||||
virBufferAddLit(&opt, ",security_model=none");
|
virBufferAddLit(&opt, ",security_model=passthrough");
|
||||||
|
} else if(fs->accessmode == VIR_DOMAIN_FS_ACCESSMODE_SQUASH) {
|
||||||
|
virBufferAddLit(&opt, ",security_model=none");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* For other fs drivers, default(passthru) should always
|
||||||
|
* be supported */
|
||||||
|
if (fs->accessmode != VIR_DOMAIN_FS_ACCESSMODE_PASSTHROUGH) {
|
||||||
|
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("only supports passthrough accessmode"));
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
virBufferAsprintf(&opt, ",id=%s%s", QEMU_FSDEV_HOST_PREFIX, fs->info.alias);
|
virBufferAsprintf(&opt, ",id=%s%s", QEMU_FSDEV_HOST_PREFIX, fs->info.alias);
|
||||||
virBufferAsprintf(&opt, ",path=%s", fs->src);
|
virBufferAsprintf(&opt, ",path=%s", fs->src);
|
||||||
|
|
|
@ -4,7 +4,10 @@ unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -hda \
|
||||||
/dev/HostVG/QEMUGuest1 -fsdev local,security_model=passthrough,id=fsdev-fs0,\
|
/dev/HostVG/QEMUGuest1 -fsdev local,security_model=passthrough,id=fsdev-fs0,\
|
||||||
path=/export/to/guest -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,\
|
path=/export/to/guest -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,\
|
||||||
mount_tag=/import/from/host,bus=pci.0,addr=0x3 \
|
mount_tag=/import/from/host,bus=pci.0,addr=0x3 \
|
||||||
-fsdev handle,security_model=mapped,id=fsdev-fs1,\
|
-fsdev local,security_model=mapped,id=fsdev-fs1,\
|
||||||
path=/export/to/guest2 -device virtio-9p-pci,id=fs1,fsdev=fsdev-fs1,\
|
path=/export/to/guest2 -device virtio-9p-pci,id=fs1,fsdev=fsdev-fs1,\
|
||||||
mount_tag=/import/from/host2,bus=pci.0,addr=0x4 \
|
mount_tag=/import/from/host2,bus=pci.0,addr=0x4 \
|
||||||
-usb -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
|
-fsdev handle,id=fsdev-fs2,\
|
||||||
|
path=/export/to/guest3 -device virtio-9p-pci,id=fs2,fsdev=fsdev-fs2,\
|
||||||
|
mount_tag=/import/from/host3,bus=pci.0,addr=0x5 \
|
||||||
|
-usb -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
|
||||||
|
|
|
@ -25,9 +25,14 @@
|
||||||
<target dir='/import/from/host'/>
|
<target dir='/import/from/host'/>
|
||||||
</filesystem>
|
</filesystem>
|
||||||
<filesystem accessmode='mapped'>
|
<filesystem accessmode='mapped'>
|
||||||
<driver type='handle'/>
|
<driver type='path'/>
|
||||||
<source dir='/export/to/guest2'/>
|
<source dir='/export/to/guest2'/>
|
||||||
<target dir='/import/from/host2'/>
|
<target dir='/import/from/host2'/>
|
||||||
</filesystem>
|
</filesystem>
|
||||||
|
<filesystem>
|
||||||
|
<driver type='handle'/>
|
||||||
|
<source dir='/export/to/guest3'/>
|
||||||
|
<target dir='/import/from/host3'/>
|
||||||
|
</filesystem>
|
||||||
</devices>
|
</devices>
|
||||||
</domain>
|
</domain>
|
||||||
|
|
Loading…
Reference in New Issue