[libvirt] [PATCH] qemu: add qemu.conf option to disable PCI passthrough
by Ján Tomko
---
Note: virPCIProbeStubDriver is currently broken because of 2f8babc,
I've sent a fix:
https://www.redhat.com/archives/libvir-list/2013-July/msg01154.html
src/qemu/libvirtd_qemu.aug | 1 +
src/qemu/qemu.conf | 5 +++++
src/qemu/qemu_conf.c | 2 ++
src/qemu/qemu_conf.h | 2 ++
src/qemu/qemu_hostdev.c | 8 ++++++++
src/qemu/test_libvirtd_qemu.aug.in | 1 +
6 files changed, 19 insertions(+)
diff --git a/src/qemu/libvirtd_qemu.aug b/src/qemu/libvirtd_qemu.aug
index 5344125..62399fa 100644
--- a/src/qemu/libvirtd_qemu.aug
+++ b/src/qemu/libvirtd_qemu.aug
@@ -53,6 +53,7 @@ module Libvirtd_qemu =
| str_array_entry "cgroup_controllers"
| str_array_entry "cgroup_device_acl"
| int_entry "seccomp_sandbox"
+ | bool_entry "pci_passthrough"
let save_entry = str_entry "save_image_format"
| str_entry "dump_image_format"
diff --git a/src/qemu/qemu.conf b/src/qemu/qemu.conf
index cdf1ec4..23d63d1 100644
--- a/src/qemu/qemu.conf
+++ b/src/qemu/qemu.conf
@@ -212,6 +212,11 @@
# Set to 0 to disable file ownership changes.
#dynamic_ownership = 1
+# Whether PCI passthrough is enabled.
+# Set to 0 to disable PCI passthrough.
+#
+#pci_passthrough = 1
+
# What cgroup controllers to make use of with QEMU guests
#
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index c91551f..fbfff66 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -132,6 +132,7 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged)
cfg->group = (gid_t)-1;
}
cfg->dynamicOwnership = privileged;
+ cfg->pciPassthrough = true;
cfg->cgroupControllers = -1; /* -1 == auto-detect */
@@ -547,6 +548,7 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
GET_VALUE_LONG("keepalive_count", cfg->keepAliveCount);
GET_VALUE_LONG("seccomp_sandbox", cfg->seccompSandbox);
+ GET_VALUE_BOOL("pci_passthrough", cfg->pciPassthrough);
ret = 0;
diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
index 19893c8..b12c011 100644
--- a/src/qemu/qemu_conf.h
+++ b/src/qemu/qemu_conf.h
@@ -156,6 +156,8 @@ struct _virQEMUDriverConfig {
unsigned int keepAliveCount;
int seccompSandbox;
+
+ bool pciPassthrough;
};
/* Main driver state */
diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c
index 21fe47f..1916ad1 100644
--- a/src/qemu/qemu_hostdev.c
+++ b/src/qemu/qemu_hostdev.c
@@ -492,6 +492,14 @@ int qemuPrepareHostdevPCIDevices(virQEMUDriverPtr driver,
if (!(pcidevs = qemuGetPciHostDeviceList(hostdevs, nhostdevs)))
goto cleanup;
+ if (virPCIDeviceListCount(pcidevs) > 0 &&
+ !cfg->pciPassthrough) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("PCI passthrough is disabled in qemu.conf"
+ " but host PCI devices are present"));
+ goto cleanup;
+ }
+
/* We have to use 9 loops here. *All* devices must
* be detached before we reset any of them, because
* in some cases you have to reset the whole PCI,
diff --git a/src/qemu/test_libvirtd_qemu.aug.in b/src/qemu/test_libvirtd_qemu.aug.in
index d4e4fae..f251616 100644
--- a/src/qemu/test_libvirtd_qemu.aug.in
+++ b/src/qemu/test_libvirtd_qemu.aug.in
@@ -25,6 +25,7 @@ module Test_libvirtd_qemu =
{ "user" = "root" }
{ "group" = "root" }
{ "dynamic_ownership" = "1" }
+{ "pci_passthrough" = "1" }
{ "cgroup_controllers"
{ "1" = "cpu" }
{ "2" = "devices" }
--
1.8.1.5
11 years, 4 months
[libvirt] [PATCH] Add virtio-scsi to fallback models of scsi controller
by Martin Kletzander
When user does not specify any model for scsi controller, or worse, no
controller at all, but libvirt automatically adds scsi controller with
no model, we are not searching for virtio-scsi and thus this can fail
for example on qemu which doesn't support lsi logic adapter.
This means that when qemu on x86 doesn't support lsi53c895a and the
user adds the following to an XML without any scsi controller:
<disk ...>
...
<target dev='sda'>
</disk>
libvirt fails like this:
# virsh define asdf.xml
error: Failed to define domain from asdf.xml
error: internal error Unable to determine model for scsi controller
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=974943
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
src/qemu/qemu_command.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 0e517f2..aff1768 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -703,6 +703,8 @@ qemuSetScsiControllerModel(virDomainDefPtr def,
*model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI;
} else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_LSI)) {
*model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC;
+ } else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_SCSI)) {
+ *model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI;
} else {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Unable to determine model for scsi controller"));
--
1.8.3.2
11 years, 4 months
[libvirt] [PATCH] virAsprintf: correctly check return value
by Ján Tomko
When virAsprintf was changed from a function to a macro
reporting OOM error in dc6f2da, it was documented as returning
0 on success. This is incorrect, it returns the number of bytes
written as asprintf does.
Some of the functions were converted to use virAsprintf's return
value directly, changing the return value on success from 0 to >= 0.
For most of these, this is not a problem, but the change in
virPCIDriverDir breaks PCI passthrough.
The return value check in virhashtest pre-dates virAsprintf OOM
conversion.
vmwareMakePath seems to be unused.
---
src/util/virstring.h | 10 ++++++----
src/util/virpci.c | 26 ++++++++++++++++++--------
tests/virhashtest.c | 2 +-
src/qemu/qemu_command.c | 13 ++++++++++---
src/qemu/qemu_process.c | 6 ++++--
src/util/virnetdev.c | 10 +++++++---
src/util/virrandom.c | 6 ++++--
src/vmware/vmware_conf.c | 15 ++++++++++++---
8 files changed, 62 insertions(+), 26 deletions(-)
diff --git a/src/util/virstring.h b/src/util/virstring.h
index 8b66b23..b390150 100644
--- a/src/util/virstring.h
+++ b/src/util/virstring.h
@@ -176,7 +176,8 @@ size_t virStringListLength(char **strings);
* Like glibc's vasprintf but makes sure *strp == NULL on failure, in which
* case the OOM error is reported too.
*
- * Returns -1 on failure (with OOM error reported), 0 on success.
+ * Returns -1 on failure (with OOM error reported), number of bytes printed
+ * on success.
*/
# define virVasprintf(strp, fmt, list) \
virVasprintfInternal(true, VIR_FROM_THIS, __FILE__, __FUNCTION__, \
@@ -187,7 +188,7 @@ size_t virStringListLength(char **strings);
*
* Like glibc's vasprintf but makes sure *strp == NULL on failure.
*
- * Returns -1 on failure, 0 on success.
+ * Returns -1 on failure, number of bytes printed on success.
*/
# define virVasprintfQuiet(strp, fmt, list) \
virVasprintfInternal(false, 0, NULL, NULL, 0, strp, fmt, list)
@@ -200,7 +201,8 @@ size_t virStringListLength(char **strings);
* Like glibc's_asprintf but makes sure *strp == NULL on failure, in which case
* the OOM error is reported too.
*
- * Returns -1 on failure (with OOM error reported), 0 on success.
+ * Returns -1 on failure (with OOM error reported), number of bytes printed
+ * on success.
*/
# define virAsprintf(strp, ...) \
@@ -214,7 +216,7 @@ size_t virStringListLength(char **strings);
*
* Like glibc's_asprintf but makes sure *strp == NULL on failure.
*
- * Returns -1 on failure, 0 on success.
+ * Returns -1 on failure, number of bytes printed on success.
*/
# define virAsprintfQuiet(strp, ...) \
diff --git a/src/util/virpci.c b/src/util/virpci.c
index c95c0e6..be50b4f 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -194,7 +194,9 @@ virPCIDriverDir(char **buffer, const char *driver)
{
VIR_FREE(*buffer);
- return virAsprintf(buffer, PCI_SYSFS "drivers/%s", driver);
+ if (virAsprintf(buffer, PCI_SYSFS "drivers/%s", driver) < 0)
+ return -1;
+ return 0;
}
@@ -203,7 +205,9 @@ virPCIDriverFile(char **buffer, const char *driver, const char *file)
{
VIR_FREE(*buffer);
- return virAsprintf(buffer, PCI_SYSFS "drivers/%s/%s", driver, file);
+ if (virAsprintf(buffer, PCI_SYSFS "drivers/%s/%s", driver, file) < 0)
+ return -1;
+ return 0;
}
@@ -212,7 +216,9 @@ virPCIFile(char **buffer, const char *device, const char *file)
{
VIR_FREE(*buffer);
- return virAsprintf(buffer, PCI_SYSFS "devices/%s/%s", device, file);
+ if (virAsprintf(buffer, PCI_SYSFS "devices/%s/%s", device, file) < 0)
+ return -1;
+ return 0;
}
@@ -2529,17 +2535,21 @@ out:
int
virPCIGetSysfsFile(char *virPCIDeviceName, char **pci_sysfs_device_link)
{
- return virAsprintf(pci_sysfs_device_link, PCI_SYSFS "devices/%s",
- virPCIDeviceName);
+ if (virAsprintf(pci_sysfs_device_link, PCI_SYSFS "devices/%s",
+ virPCIDeviceName) < 0)
+ return -1;
+ return 0;
}
int
virPCIDeviceAddressGetSysfsFile(virPCIDeviceAddressPtr dev,
char **pci_sysfs_device_link)
{
- return virAsprintf(pci_sysfs_device_link,
- PCI_SYSFS "devices/%04x:%02x:%02x.%x", dev->domain,
- dev->bus, dev->slot, dev->function);
+ if (virAsprintf(pci_sysfs_device_link,
+ PCI_SYSFS "devices/%04x:%02x:%02x.%x", dev->domain,
+ dev->bus, dev->slot, dev->function) < 0)
+ return -1;
+ return 0;
}
/*
diff --git a/tests/virhashtest.c b/tests/virhashtest.c
index 2430432..dd2c948 100644
--- a/tests/virhashtest.c
+++ b/tests/virhashtest.c
@@ -18,7 +18,7 @@
#define testError(...) \
do { \
char *str; \
- if (virAsprintfQuiet(&str, __VA_ARGS__) == 0) { \
+ if (virAsprintfQuiet(&str, __VA_ARGS__) >= 0) { \
fprintf(stderr, "%s", str); \
VIR_FREE(str); \
} \
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 71e37f3..38b224b 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -796,7 +796,9 @@ qemuAssignDeviceNetAlias(virDomainDefPtr def, virDomainNetDefPtr net, int idx)
}
}
- return virAsprintf(&net->info.alias, "net%d", idx);
+ if (virAsprintf(&net->info.alias, "net%d", idx) < 0)
+ return -1;
+ return 0;
}
@@ -851,7 +853,9 @@ qemuAssignDeviceRedirdevAlias(virDomainDefPtr def, virDomainRedirdevDefPtr redir
}
}
- return virAsprintf(&redirdev->info.alias, "redir%d", idx);
+ if (virAsprintf(&redirdev->info.alias, "redir%d", idx) < 0)
+ return -1;
+ return 0;
}
@@ -860,7 +864,10 @@ qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller)
{
const char *prefix = virDomainControllerTypeToString(controller->type);
- return virAsprintf(&controller->info.alias, "%s%d", prefix, controller->idx);
+ if (virAsprintf(&controller->info.alias, "%s%d", prefix,
+ controller->idx) < 0)
+ return -1;
+ return 0;
}
static ssize_t
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 3d5e8f6..73b862d 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -2562,8 +2562,10 @@ qemuProcessPrepareMonitorChr(virQEMUDriverConfigPtr cfg,
monConfig->type = VIR_DOMAIN_CHR_TYPE_UNIX;
monConfig->data.nix.listen = true;
- return virAsprintf(&monConfig->data.nix.path, "%s/%s.monitor",
- cfg->libDir, vm);
+ if (virAsprintf(&monConfig->data.nix.path, "%s/%s.monitor",
+ cfg->libDir, vm) < 0)
+ return -1;
+ return 0;
}
diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
index aaa276d..30df7a6 100644
--- a/src/util/virnetdev.c
+++ b/src/util/virnetdev.c
@@ -1050,7 +1050,9 @@ virNetDevSysfsFile(char **pf_sysfs_device_link, const char *ifname,
const char *file)
{
- return virAsprintf(pf_sysfs_device_link, NET_SYSFS "%s/%s", ifname, file);
+ if (virAsprintf(pf_sysfs_device_link, NET_SYSFS "%s/%s", ifname, file) < 0)
+ return -1;
+ return 0;
}
static int
@@ -1058,8 +1060,10 @@ virNetDevSysfsDeviceFile(char **pf_sysfs_device_link, const char *ifname,
const char *file)
{
- return virAsprintf(pf_sysfs_device_link, NET_SYSFS "%s/device/%s",
- ifname, file);
+ if (virAsprintf(pf_sysfs_device_link, NET_SYSFS "%s/device/%s", ifname,
+ file) < 0)
+ return -1;
+ return 0;
}
/**
diff --git a/src/util/virrandom.c b/src/util/virrandom.c
index e2d18f8..c233732 100644
--- a/src/util/virrandom.c
+++ b/src/util/virrandom.c
@@ -178,6 +178,8 @@ virRandomGenerateWWN(char **wwn,
return -1;
}
- return virAsprintf(wwn, "5" "%s%09llx", oui,
- (unsigned long long)virRandomBits(36));
+ if (virAsprintf(wwn, "5" "%s%09llx", oui,
+ (unsigned long long)virRandomBits(36)) < 0)
+ return -1;
+ return 0;
}
diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c
index 96f69b3..ed99e59 100644
--- a/src/vmware/vmware_conf.c
+++ b/src/vmware/vmware_conf.c
@@ -313,9 +313,16 @@ error:
int
vmwareConstructVmxPath(char *directoryName, char *name, char **vmxPath)
{
+ int ret;
+
if (directoryName != NULL)
- return virAsprintf(vmxPath, "%s/%s.vmx", directoryName, name);
- return virAsprintf(vmxPath, "%s.vmx", name);
+ ret = virAsprintf(vmxPath, "%s/%s.vmx", directoryName, name);
+ else
+ ret = virAsprintf(vmxPath, "%s.vmx", name);
+
+ if (ret < 0)
+ return -1;
+ return 0;
}
int
@@ -414,7 +421,9 @@ vmwareMoveFile(char *srcFile, char *dstFile)
int
vmwareMakePath(char *srcDir, char *srcName, char *srcExt, char **outpath)
{
- return virAsprintf(outpath, "%s/%s.%s", srcDir, srcName, srcExt);
+ if (virAsprintf(outpath, "%s/%s.%s", srcDir, srcName, srcExt) < 0)
+ return -1;
+ return 0;
}
int
--
1.8.1.5
11 years, 4 months
[libvirt] [PATCH 1/2] qemuDomainDetachChrDevice: Don't leak @charAlias
by Michal Privoznik
Moreover, since virAsprintf now does report OOM error, there's no need
to call virReportOOMError in error path.
---
src/qemu/qemu_hotplug.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 788ad47..a98de9d 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -3155,10 +3155,8 @@ int qemuDomainDetachChrDevice(virQEMUDriverPtr driver,
if (qemuBuildChrDeviceStr(&devstr, vm->def, chr, priv->qemuCaps) < 0)
return ret;
- if (virAsprintf(&charAlias, "char%s", tmpChr->info.alias) < 0) {
- virReportOOMError();
- return ret;
- }
+ if (virAsprintf(&charAlias, "char%s", tmpChr->info.alias) < 0)
+ goto cleanup;
qemuDomainObjEnterMonitor(driver, vm);
if (devstr && qemuMonitorDelDevice(priv->mon, tmpChr->info.alias) < 0) {
--
1.8.1.5
11 years, 4 months
[libvirt] [PATCH 0/6] Enable fd passing / socket activation with LXC guest
by Daniel P. Berrange
From: "Daniel P. Berrange" <berrange(a)redhat.com>
Systemd has a concept of socket activation whereby systemd
will listen on a TCP socket in the host. When a client arrives
on the socket, systemd will run a service, passing it the
pre-opened TCP server socket. The service can then accept the
client connection.
This patch series adds the ability to pass pre-opened file
descriptors into LXC guests. The file descriptors will be
made available to the 'init' process in the container,
starting from STDERR_FILENO + 1.
For example, assuming you have pre-opened a file descriptors
in your shell
# exec 10>/tmp/foo
# exec 20>/tmp/bar
# exec 30>/tmp/wizz
You can then start a container with:
# virsh -c lxc:/// start --pass-fds 10,20,30 demo
Inside that container the FDs will appear as 3, 4, 5:
# virsh -c lxc:/// console demo
Connected to domain demo
Escape character is ^]
sh-4.2# lsof -p 1 | grep /tmp
sh 1 root 3w REG 0,32 0 90226444 /tmp/foo
sh 1 root 4w REG 0,32 0 90238163 /tmp/bar
sh 1 root 5w REG 0,32 0 90238164 /tmp/wizz
Finally, if you run systemd inside the container, it can then
use these pre-opened file descriptors, passing them along when
launching services inside the container. So you have end-to-end
socket activation between the host & guest systemd instances.
Daniel P. Berrange (6):
Introduce new domain create APIs to pass pre-opened FDs to LXC
Introduce remote protocol support for virDomainCreate{XML}WithFiles
Fix impl of virDomainCreateWithFlags remote client helper
LXC: Wire up the virDomainCreate{XML}WithFiles methods
Enable FD passing when starting guests with virsh
Merge virCommandPreserveFD / virCommandTransferFD
daemon/remote.c | 104 ++++++++++++++++++++++
include/libvirt/libvirt.h.in | 10 +++
python/generator.py | 3 +
python/libvirt-override-virConnect.py | 30 +++++++
python/libvirt-override-virDomain.py | 38 ++++++++
python/libvirt-override.c | 89 +++++++++++++++++++
src/driver.h | 13 +++
src/fdstream.c | 3 +-
src/libvirt.c | 154 ++++++++++++++++++++++++++++++++
src/libvirt_private.syms | 3 +-
src/libvirt_public.syms | 6 ++
src/lxc/lxc_container.c | 136 ++++++++++++++++++++++-------
src/lxc/lxc_container.h | 6 +-
src/lxc/lxc_controller.c | 36 +++++++-
src/lxc/lxc_driver.c | 45 ++++++++--
src/lxc/lxc_process.c | 20 ++++-
src/lxc/lxc_process.h | 1 +
src/qemu/qemu_command.c | 16 ++--
src/remote/remote_driver.c | 91 +++++++++++++++----
src/remote/remote_protocol.x | 32 ++++++-
src/remote_protocol-structs | 16 ++++
src/uml/uml_conf.c | 3 +-
src/util/vircommand.c | 159 ++++++++++++++++------------------
src/util/vircommand.h | 13 +--
tests/commandtest.c | 5 +-
tools/virsh-domain.c | 82 +++++++++++++++++-
tools/virsh.pod | 13 ++-
27 files changed, 960 insertions(+), 167 deletions(-)
--
1.8.1.4
11 years, 4 months
[libvirt] [PATCH 0/9] Fine grained locking in LXC driver
by Michal Privoznik
The first round of my patches that breaks LXC driver into smaller pieces. With
my testing on 10 domains which are started up and destroyed in a loop with 10
iterations (each loop is run in a separate thread in client):
Before:
real 0m45.973s
user 0m0.080s
sys 0m0.020s
After:
real 0m14.951s
user 0m0.080s
sys 0m0.020s
Michal Privoznik (9):
qemu: Move close callbacks handling into util/virclosecallbacks.c
Introduce a virLXCDriverConfigPtr object
lxc: Use atomic ops for driver->nactive
Introduce annotations for virLXCDriverPtr fields
lxc: switch to virCloseCallbacks API
Stop accessing driver->caps directly in LXC driver
lxc: Make activeUsbHostdevs use locks
Remove lxcDriverLock from almost everywhere
Introduce lxcDomObjFromDomain
po/POTFILES.in | 1 +
src/Makefile.am | 4 +-
src/libvirt_private.syms | 8 +
src/lxc/lxc_conf.c | 120 ++++++--
src/lxc/lxc_conf.h | 64 ++--
src/lxc/lxc_controller.c | 2 +-
src/lxc/lxc_driver.c | 705 +++++++++++++++----------------------------
src/lxc/lxc_hostdev.c | 8 +
src/lxc/lxc_process.c | 181 ++++-------
src/lxc/lxc_process.h | 1 -
src/qemu/qemu_conf.c | 295 +-----------------
src/qemu/qemu_conf.h | 25 +-
src/qemu/qemu_driver.c | 4 +-
src/qemu/qemu_migration.c | 18 +-
src/qemu/qemu_migration.h | 2 +-
src/qemu/qemu_process.c | 14 +-
src/util/virclosecallbacks.c | 356 ++++++++++++++++++++++
src/util/virclosecallbacks.h | 56 ++++
18 files changed, 900 insertions(+), 964 deletions(-)
create mode 100644 src/util/virclosecallbacks.c
create mode 100644 src/util/virclosecallbacks.h
--
1.8.1.5
11 years, 4 months
[libvirt] [libvirt-sandbox][PATCH] Docs: update EXAMPLES section of virt-sandbox man page
by Alex Jia
Signed-off-by: Alex Jia <ajia(a)redhat.com>
---
bin/virt-sandbox.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/bin/virt-sandbox.c b/bin/virt-sandbox.c
index 883e6c0..b51465d 100644
--- a/bin/virt-sandbox.c
+++ b/bin/virt-sandbox.c
@@ -438,7 +438,9 @@ Run an interactive shell under LXC, replace $HOME with the contents
of $HOME/scratch
# mkdir $HOME/scratch
- # virt-sandbox -c lxc:/// --host-bind $HOME=$HOME/scratch /bin/sh
+ # echo "hello" > $HOME/scratch/foo
+ # echo "sandbox" > $HOME/scratch/bar
+ # virt-sandbox -c lxc:/// -m host-bind:$HOME=$HOME/scratch -i $HOME/scratch/foo -i $HOME/scratch/bar /bin/sh
Convert an OGG file to WAV inside QEMU
--
1.7.1
11 years, 4 months
[libvirt] [sandbox][PATCH] Docs: remove duplicate -u item in create man page
by Wayne Sun
This related to bug:
https://bugzilla.redhat.com/show_bug.cgi?id=916651#c11
Signed-off-by: Wayne Sun <gsun(a)redhat.com>
---
bin/virt-sandbox-service-create.pod | 4 ----
1 files changed, 0 insertions(+), 4 deletions(-)
diff --git a/bin/virt-sandbox-service-create.pod b/bin/virt-sandbox-service-create.pod
index ad081ea..4dbfcb3 100644
--- a/bin/virt-sandbox-service-create.pod
+++ b/bin/virt-sandbox-service-create.pod
@@ -187,10 +187,6 @@ static,label=system_u:system_r:svirt_t:s0:c412,c355
Create file system image file of this size to store container content.
-=item B<-u UNITFILE>, B<--unitfile UNITFILE>
-
-systemd Unit file to run within the container
-
=item B<-P PACKAGE>, B<--package PACKAGE>
Package(s) to be used within the container.
--
1.7.1
11 years, 4 months
[libvirt] Schedule for next release 1.1.1
by Daniel Veillard
Time to plan the release at the end of the month, for a change I
would prefer to release a bit earlier and shoot for Tue 30th July.
So this would mean that we enter the freeze on Wednesday 24 next week,
hopefully that is fine for everybody, if people have pending patche(s)
that still need reviews or ACKs to be pushed in time for the release
please raise the issue !
thanks,
Daniel
--
Daniel Veillard | Open Source and Standards, Red Hat
veillard(a)redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | virtualization library http://libvirt.org/
11 years, 4 months
[libvirt] [PATCH v3 0/3] libxl: implement some chuncks of the NUMA interface
by Dario Faggioli
Hi everyone again,
3rd round for the initial NUMA support in the libxl driver.
I think I addressed all the comments that have been raised during v2 review
(more details in the signle changelogs). Let me know if there's more.
Thanks and Regards,
Dario
---
Dario Faggioli (3):
libxl: implement NUMA capabilities reporting
libxl: advertise the support for VIR_TYPED_PARAM_STRING
libxl: implement virDomainGetNumaParameters
src/libxl/libxl_conf.c | 148 ++++++++++++++++++++++++++++++++++++++++++
src/libxl/libxl_driver.c | 161 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 307 insertions(+), 2 deletions(-)
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
11 years, 4 months