Devel
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- 25 participants
- 40350 discussions
When we get a POLLHUP or VIR_EVENT_HANDLE_HANGUP event for a client, we
still want to read from the socket to process any accumulated data. But
doing so inevitably results in an error and a call to
virNetClientMarkClose before we get to processing the hangup event (and
another call to virNetClientMarkClose). However the close reason passed
to the second virNetClientMarkClose call is ignored because another one
was already set. We need to pass the correct close reason when marking
the socket to be closed for the first time.
https://bugzilla.redhat.com/show_bug.cgi?id=1373859
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/rpc/virnetclient.c | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c
index c95974794..837a8a707 100644
--- a/src/rpc/virnetclient.c
+++ b/src/rpc/virnetclient.c
@@ -1595,6 +1595,7 @@ static int virNetClientIOEventLoop(virNetClientPtr client,
{
struct pollfd fds[2];
bool error = false;
+ int closeReason;
int ret;
fds[0].fd = virNetSocketGetFD(client->sock);
@@ -1703,9 +1704,14 @@ static int virNetClientIOEventLoop(virNetClientPtr client,
}
}
+ if (fds[0].revents & POLLHUP)
+ closeReason = VIR_CONNECT_CLOSE_REASON_EOF;
+ else
+ closeReason = VIR_CONNECT_CLOSE_REASON_ERROR;
+
if (fds[0].revents & POLLOUT) {
if (virNetClientIOHandleOutput(client) < 0) {
- virNetClientMarkClose(client, VIR_CONNECT_CLOSE_REASON_ERROR);
+ virNetClientMarkClose(client, closeReason);
error = true;
/* Fall through to process any pending data. */
}
@@ -1713,7 +1719,7 @@ static int virNetClientIOEventLoop(virNetClientPtr client,
if (fds[0].revents & POLLIN) {
if (virNetClientIOHandleInput(client) < 0) {
- virNetClientMarkClose(client, VIR_CONNECT_CLOSE_REASON_ERROR);
+ virNetClientMarkClose(client, closeReason);
error = true;
/* Fall through to process any pending data. */
}
@@ -1746,13 +1752,13 @@ static int virNetClientIOEventLoop(virNetClientPtr client,
if (fds[0].revents & POLLHUP) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("received hangup event on socket"));
- virNetClientMarkClose(client, VIR_CONNECT_CLOSE_REASON_EOF);
+ virNetClientMarkClose(client, closeReason);
goto error;
}
if (fds[0].revents & POLLERR) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("received error event on socket"));
- virNetClientMarkClose(client, VIR_CONNECT_CLOSE_REASON_ERROR);
+ virNetClientMarkClose(client, closeReason);
goto error;
}
}
@@ -1968,6 +1974,7 @@ void virNetClientIncomingEvent(virNetSocketPtr sock,
void *opaque)
{
virNetClientPtr client = opaque;
+ int closeReason;
virObjectLock(client);
@@ -1981,23 +1988,25 @@ void virNetClientIncomingEvent(virNetSocketPtr sock,
VIR_DEBUG("Event fired %p %d", sock, events);
+ if (events & VIR_EVENT_HANDLE_HANGUP)
+ closeReason = VIR_CONNECT_CLOSE_REASON_EOF;
+ else
+ closeReason = VIR_CONNECT_CLOSE_REASON_ERROR;
+
if (events & VIR_EVENT_HANDLE_WRITABLE) {
if (virNetClientIOHandleOutput(client) < 0)
- virNetClientMarkClose(client, VIR_CONNECT_CLOSE_REASON_ERROR);
+ virNetClientMarkClose(client, closeReason);
}
if (events & VIR_EVENT_HANDLE_READABLE) {
if (virNetClientIOHandleInput(client) < 0)
- virNetClientMarkClose(client, VIR_CONNECT_CLOSE_REASON_ERROR);
+ virNetClientMarkClose(client, closeReason);
}
if (events & (VIR_EVENT_HANDLE_HANGUP | VIR_EVENT_HANDLE_ERROR)) {
VIR_DEBUG("VIR_EVENT_HANDLE_HANGUP or "
"VIR_EVENT_HANDLE_ERROR encountered");
- virNetClientMarkClose(client,
- (events & VIR_EVENT_HANDLE_HANGUP) ?
- VIR_CONNECT_CLOSE_REASON_EOF :
- VIR_CONNECT_CLOSE_REASON_ERROR);
+ virNetClientMarkClose(client, closeReason);
goto done;
}
--
2.12.2
2
1
Basically all of these were ACKed, however I was on vacation and in
the meatime there were changes. The virFileMock cannot be named
'mock' because it fails the 'noinline' test, but it doesn't actually
mock anything, so I just renamed it. There was decision in another
series to use the same naming for cache types and cache allocation
scopes, so the types now are 'both', 'code', and 'data'. There was
still no consensus reached with regards to the naming of that
attribute (is it 'type' or 'scope'). The patches are fine otherwise.
This version keeps it at 'type', we can change it before release or I
can change it before pushing.
All changes Erik wanted me to incorporate are there, except those that
were optional and I felt like keeping the code as-is was better. Or
those that I missed or forgot about (hopefully none).
Martin Kletzander (8):
tests: Add virfilewrapper -- the new super "mock"
util: Remove virsysfs and instead enhance virFileReadValue* functions
tests: Test vircaps2xmldata XMLs in virschematest
tests: Add missing cache data for vircaps2xmltest
Add host cache information in capabilities
Init host cache info in drivers
tests: Add support for more complicated hierarchies in vircaps2xmltest
tests: Add resctrl test for vircaps2xmltest
cfg.mk | 4 +-
docs/schemas/capability.rng | 34 +++
src/Makefile.am | 2 -
src/conf/capabilities.c | 205 ++++++++++++++-
src/conf/capabilities.h | 29 +++
src/libvirt_private.syms | 17 +-
src/lxc/lxc_conf.c | 3 +
src/openvz/openvz_conf.c | 3 +
src/phyp/phyp_driver.c | 3 +
src/qemu/qemu_capabilities.c | 3 +
src/uml/uml_conf.c | 3 +
src/util/virfile.c | 204 ++++++++++++---
src/util/virfile.h | 14 +-
src/util/virhostcpu.c | 39 +--
src/util/virsysfs.c | 231 -----------------
src/util/virsysfs.h | 70 -----
src/vbox/vbox_common.c | 3 +
src/vmware/vmware_conf.c | 3 +
src/vz/vz_driver.c | 2 +
tests/Makefile.am | 7 +-
.../linux-caches/cpu/cpu0/cache/index0/id | 1 +
.../cpu/cpu0/cache/index0/shared_cpu_list | 2 +-
.../cpu/cpu0/cache/index0/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu0/cache/index1/id | 1 +
.../cpu/cpu0/cache/index1/shared_cpu_list | 2 +-
.../cpu/cpu0/cache/index1/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu0/cache/index2/id | 1 +
.../cpu/cpu0/cache/index2/shared_cpu_list | 2 +-
.../cpu/cpu0/cache/index2/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu0/cache/index3/id | 1 +
.../linux-caches/cpu/cpu1/cache/index0/id | 1 +
.../cpu/cpu1/cache/index0/shared_cpu_list | 2 +-
.../cpu/cpu1/cache/index0/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu1/cache/index1/id | 1 +
.../cpu/cpu1/cache/index1/shared_cpu_list | 2 +-
.../cpu/cpu1/cache/index1/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu1/cache/index2/id | 1 +
.../cpu/cpu1/cache/index2/shared_cpu_list | 2 +-
.../cpu/cpu1/cache/index2/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu1/cache/index3/id | 1 +
.../linux-caches/cpu/cpu2/cache/index0/id | 1 +
.../cpu/cpu2/cache/index0/shared_cpu_list | 2 +-
.../cpu/cpu2/cache/index0/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu2/cache/index1/id | 1 +
.../cpu/cpu2/cache/index1/shared_cpu_list | 2 +-
.../cpu/cpu2/cache/index1/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu2/cache/index2/id | 1 +
.../cpu/cpu2/cache/index2/shared_cpu_list | 2 +-
.../cpu/cpu2/cache/index2/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu2/cache/index3/id | 1 +
.../linux-caches/cpu/cpu3/cache/index0/id | 1 +
.../cpu/cpu3/cache/index0/shared_cpu_list | 2 +-
.../cpu/cpu3/cache/index0/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu3/cache/index1/id | 1 +
.../cpu/cpu3/cache/index1/shared_cpu_list | 2 +-
.../cpu/cpu3/cache/index1/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu3/cache/index2/id | 1 +
.../cpu/cpu3/cache/index2/shared_cpu_list | 2 +-
.../cpu/cpu3/cache/index2/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu3/cache/index3/id | 1 +
.../linux-caches/cpu/cpu4/cache/index0/id | 1 +
.../cpu/cpu4/cache/index0/shared_cpu_list | 2 +-
.../cpu/cpu4/cache/index0/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu4/cache/index1/id | 1 +
.../cpu/cpu4/cache/index1/shared_cpu_list | 2 +-
.../cpu/cpu4/cache/index1/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu4/cache/index2/id | 1 +
.../cpu/cpu4/cache/index2/shared_cpu_list | 2 +-
.../cpu/cpu4/cache/index2/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu4/cache/index3/id | 1 +
.../linux-caches/cpu/cpu5/cache/index0/id | 1 +
.../cpu/cpu5/cache/index0/shared_cpu_list | 2 +-
.../cpu/cpu5/cache/index0/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu5/cache/index1/id | 1 +
.../cpu/cpu5/cache/index1/shared_cpu_list | 2 +-
.../cpu/cpu5/cache/index1/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu5/cache/index2/id | 1 +
.../cpu/cpu5/cache/index2/shared_cpu_list | 2 +-
.../cpu/cpu5/cache/index2/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu5/cache/index3/id | 1 +
.../linux-caches/cpu/cpu6/cache/index0/id | 1 +
.../cpu/cpu6/cache/index0/shared_cpu_list | 2 +-
.../cpu/cpu6/cache/index0/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu6/cache/index1/id | 1 +
.../cpu/cpu6/cache/index1/shared_cpu_list | 2 +-
.../cpu/cpu6/cache/index1/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu6/cache/index2/id | 1 +
.../cpu/cpu6/cache/index2/shared_cpu_list | 2 +-
.../cpu/cpu6/cache/index2/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu6/cache/index3/id | 1 +
.../linux-caches/cpu/cpu7/cache/index0/id | 1 +
.../cpu/cpu7/cache/index0/shared_cpu_list | 2 +-
.../cpu/cpu7/cache/index0/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu7/cache/index1/id | 1 +
.../cpu/cpu7/cache/index1/shared_cpu_list | 2 +-
.../cpu/cpu7/cache/index1/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu7/cache/index2/id | 1 +
.../cpu/cpu7/cache/index2/shared_cpu_list | 2 +-
.../cpu/cpu7/cache/index2/shared_cpu_map | 2 +-
.../linux-caches/cpu/cpu7/cache/index3/id | 1 +
tests/vircaps2xmldata/linux-resctrl/resctrl/cpus | 1 +
.../linux-resctrl/resctrl/info/L3/cbm_mask | 1 +
.../linux-resctrl/resctrl/info/L3/min_cbm_bits | 1 +
.../linux-resctrl/resctrl/info/L3/num_closids | 1 +
.../linux-resctrl/resctrl/manualres/cpus | 1 +
.../linux-resctrl/resctrl/manualres/schemata | 1 +
.../linux-resctrl/resctrl/manualres/tasks | 0
.../vircaps2xmldata/linux-resctrl/resctrl/schemata | 1 +
tests/vircaps2xmldata/linux-resctrl/resctrl/tasks | 0
.../linux-resctrl/system/cpu/cpu0/cache/index0/id | 1 +
.../system/cpu/cpu0/cache/index0/level | 1 +
.../system/cpu/cpu0/cache/index0/shared_cpu_list | 1 +
.../system/cpu/cpu0/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu0/cache/index0/size | 1 +
.../system/cpu/cpu0/cache/index0/type | 1 +
.../linux-resctrl/system/cpu/cpu0/cache/index1/id | 1 +
.../system/cpu/cpu0/cache/index1/level | 1 +
.../system/cpu/cpu0/cache/index1/shared_cpu_list | 1 +
.../system/cpu/cpu0/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu0/cache/index1/size | 1 +
.../system/cpu/cpu0/cache/index1/type | 1 +
.../linux-resctrl/system/cpu/cpu0/cache/index2/id | 1 +
.../system/cpu/cpu0/cache/index2/level | 1 +
.../system/cpu/cpu0/cache/index2/shared_cpu_list | 1 +
.../system/cpu/cpu0/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu0/cache/index2/size | 1 +
.../system/cpu/cpu0/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu0/cache/index3/id | 1 +
.../system/cpu/cpu0/cache/index3/level | 1 +
.../system/cpu/cpu0/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu0/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu0/cache/index3/size | 1 +
.../system/cpu/cpu0/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu0/online | 1 +
.../linux-resctrl/system/cpu/cpu0/topology/core_id | 1 +
.../system/cpu/cpu0/topology/core_siblings | 1 +
.../system/cpu/cpu0/topology/core_siblings_list | 1 +
.../system/cpu/cpu0/topology/physical_package_id | 1 +
.../system/cpu/cpu0/topology/thread_siblings | 1 +
.../system/cpu/cpu0/topology/thread_siblings_list | 1 +
.../linux-resctrl/system/cpu/cpu1/cache/index0/id | 1 +
.../system/cpu/cpu1/cache/index0/level | 1 +
.../system/cpu/cpu1/cache/index0/shared_cpu_list | 1 +
.../system/cpu/cpu1/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu1/cache/index0/size | 1 +
.../system/cpu/cpu1/cache/index0/type | 1 +
.../linux-resctrl/system/cpu/cpu1/cache/index1/id | 1 +
.../system/cpu/cpu1/cache/index1/level | 1 +
.../system/cpu/cpu1/cache/index1/shared_cpu_list | 1 +
.../system/cpu/cpu1/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu1/cache/index1/size | 1 +
.../system/cpu/cpu1/cache/index1/type | 1 +
.../linux-resctrl/system/cpu/cpu1/cache/index2/id | 1 +
.../system/cpu/cpu1/cache/index2/level | 1 +
.../system/cpu/cpu1/cache/index2/shared_cpu_list | 1 +
.../system/cpu/cpu1/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu1/cache/index2/size | 1 +
.../system/cpu/cpu1/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu1/cache/index3/id | 1 +
.../system/cpu/cpu1/cache/index3/level | 1 +
.../system/cpu/cpu1/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu1/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu1/cache/index3/size | 1 +
.../system/cpu/cpu1/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu1/online | 1 +
.../linux-resctrl/system/cpu/cpu1/topology/core_id | 1 +
.../system/cpu/cpu1/topology/core_siblings | 1 +
.../system/cpu/cpu1/topology/core_siblings_list | 1 +
.../system/cpu/cpu1/topology/physical_package_id | 1 +
.../system/cpu/cpu1/topology/thread_siblings | 1 +
.../system/cpu/cpu1/topology/thread_siblings_list | 1 +
.../linux-resctrl/system/cpu/cpu10/cache/index0/id | 1 +
.../system/cpu/cpu10/cache/index0/level | 1 +
.../system/cpu/cpu10/cache/index0/shared_cpu_list | 1 +
.../system/cpu/cpu10/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu10/cache/index0/size | 1 +
.../system/cpu/cpu10/cache/index0/type | 1 +
.../linux-resctrl/system/cpu/cpu10/cache/index1/id | 1 +
.../system/cpu/cpu10/cache/index1/level | 1 +
.../system/cpu/cpu10/cache/index1/shared_cpu_list | 1 +
.../system/cpu/cpu10/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu10/cache/index1/size | 1 +
.../system/cpu/cpu10/cache/index1/type | 1 +
.../linux-resctrl/system/cpu/cpu10/cache/index2/id | 1 +
.../system/cpu/cpu10/cache/index2/level | 1 +
.../system/cpu/cpu10/cache/index2/shared_cpu_list | 1 +
.../system/cpu/cpu10/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu10/cache/index2/size | 1 +
.../system/cpu/cpu10/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu10/cache/index3/id | 1 +
.../system/cpu/cpu10/cache/index3/level | 1 +
.../system/cpu/cpu10/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu10/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu10/cache/index3/size | 1 +
.../system/cpu/cpu10/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu10/online | 1 +
.../system/cpu/cpu10/topology/core_id | 1 +
.../system/cpu/cpu10/topology/core_siblings | 1 +
.../system/cpu/cpu10/topology/core_siblings_list | 1 +
.../system/cpu/cpu10/topology/physical_package_id | 1 +
.../system/cpu/cpu10/topology/thread_siblings | 1 +
.../system/cpu/cpu10/topology/thread_siblings_list | 1 +
.../linux-resctrl/system/cpu/cpu11/cache/index0/id | 1 +
.../system/cpu/cpu11/cache/index0/level | 1 +
.../system/cpu/cpu11/cache/index0/shared_cpu_list} | 0
.../system/cpu/cpu11/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu11/cache/index0/size | 1 +
.../system/cpu/cpu11/cache/index0/type | 1 +
.../linux-resctrl/system/cpu/cpu11/cache/index1/id | 1 +
.../system/cpu/cpu11/cache/index1/level | 1 +
.../system/cpu/cpu11/cache/index1/shared_cpu_list} | 0
.../system/cpu/cpu11/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu11/cache/index1/size | 1 +
.../system/cpu/cpu11/cache/index1/type | 1 +
.../linux-resctrl/system/cpu/cpu11/cache/index2/id | 1 +
.../system/cpu/cpu11/cache/index2/level | 1 +
.../system/cpu/cpu11/cache/index2/shared_cpu_list} | 0
.../system/cpu/cpu11/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu11/cache/index2/size | 1 +
.../system/cpu/cpu11/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu11/cache/index3/id | 1 +
.../system/cpu/cpu11/cache/index3/level | 1 +
.../system/cpu/cpu11/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu11/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu11/cache/index3/size | 1 +
.../system/cpu/cpu11/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu11/online | 1 +
.../system/cpu/cpu11/topology/core_id | 1 +
.../system/cpu/cpu11/topology/core_siblings | 1 +
.../system/cpu/cpu11/topology/core_siblings_list | 1 +
.../system/cpu/cpu11/topology/physical_package_id | 1 +
.../system/cpu/cpu11/topology/thread_siblings | 1 +
.../cpu/cpu11/topology/thread_siblings_list} | 0
.../linux-resctrl/system/cpu/cpu2/cache/index0/id | 1 +
.../system/cpu/cpu2/cache/index0/level | 1 +
.../system/cpu/cpu2/cache/index0/shared_cpu_list | 1 +
.../system/cpu/cpu2/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu2/cache/index0/size | 1 +
.../system/cpu/cpu2/cache/index0/type | 1 +
.../linux-resctrl/system/cpu/cpu2/cache/index1/id | 1 +
.../system/cpu/cpu2/cache/index1/level | 1 +
.../system/cpu/cpu2/cache/index1/shared_cpu_list | 1 +
.../system/cpu/cpu2/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu2/cache/index1/size | 1 +
.../system/cpu/cpu2/cache/index1/type | 1 +
.../linux-resctrl/system/cpu/cpu2/cache/index2/id | 1 +
.../system/cpu/cpu2/cache/index2/level | 1 +
.../system/cpu/cpu2/cache/index2/shared_cpu_list | 1 +
.../system/cpu/cpu2/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu2/cache/index2/size | 1 +
.../system/cpu/cpu2/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu2/cache/index3/id | 1 +
.../system/cpu/cpu2/cache/index3/level | 1 +
.../system/cpu/cpu2/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu2/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu2/cache/index3/size | 1 +
.../system/cpu/cpu2/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu2/online | 1 +
.../linux-resctrl/system/cpu/cpu2/topology/core_id | 1 +
.../system/cpu/cpu2/topology/core_siblings | 1 +
.../system/cpu/cpu2/topology/core_siblings_list | 1 +
.../system/cpu/cpu2/topology/physical_package_id | 1 +
.../system/cpu/cpu2/topology/thread_siblings | 1 +
.../system/cpu/cpu2/topology/thread_siblings_list | 1 +
.../linux-resctrl/system/cpu/cpu3/cache/index0/id | 1 +
.../system/cpu/cpu3/cache/index0/level | 1 +
.../system/cpu/cpu3/cache/index0/shared_cpu_list | 1 +
.../system/cpu/cpu3/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu3/cache/index0/size | 1 +
.../system/cpu/cpu3/cache/index0/type | 1 +
.../linux-resctrl/system/cpu/cpu3/cache/index1/id | 1 +
.../system/cpu/cpu3/cache/index1/level | 1 +
.../system/cpu/cpu3/cache/index1/shared_cpu_list | 1 +
.../system/cpu/cpu3/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu3/cache/index1/size | 1 +
.../system/cpu/cpu3/cache/index1/type | 1 +
.../linux-resctrl/system/cpu/cpu3/cache/index2/id | 1 +
.../system/cpu/cpu3/cache/index2/level | 1 +
.../system/cpu/cpu3/cache/index2/shared_cpu_list | 1 +
.../system/cpu/cpu3/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu3/cache/index2/size | 1 +
.../system/cpu/cpu3/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu3/cache/index3/id | 1 +
.../system/cpu/cpu3/cache/index3/level | 1 +
.../system/cpu/cpu3/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu3/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu3/cache/index3/size | 1 +
.../system/cpu/cpu3/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu3/online | 1 +
.../linux-resctrl/system/cpu/cpu3/topology/core_id | 1 +
.../system/cpu/cpu3/topology/core_siblings | 1 +
.../system/cpu/cpu3/topology/core_siblings_list | 1 +
.../system/cpu/cpu3/topology/physical_package_id | 1 +
.../system/cpu/cpu3/topology/thread_siblings | 1 +
.../system/cpu/cpu3/topology/thread_siblings_list | 1 +
.../linux-resctrl/system/cpu/cpu4/cache/index0/id | 1 +
.../system/cpu/cpu4/cache/index0/level | 1 +
.../system/cpu/cpu4/cache/index0/shared_cpu_list | 1 +
.../system/cpu/cpu4/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu4/cache/index0/size | 1 +
.../system/cpu/cpu4/cache/index0/type | 1 +
.../linux-resctrl/system/cpu/cpu4/cache/index1/id | 1 +
.../system/cpu/cpu4/cache/index1/level | 1 +
.../system/cpu/cpu4/cache/index1/shared_cpu_list | 1 +
.../system/cpu/cpu4/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu4/cache/index1/size | 1 +
.../system/cpu/cpu4/cache/index1/type | 1 +
.../linux-resctrl/system/cpu/cpu4/cache/index2/id | 1 +
.../system/cpu/cpu4/cache/index2/level | 1 +
.../system/cpu/cpu4/cache/index2/shared_cpu_list | 1 +
.../system/cpu/cpu4/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu4/cache/index2/size | 1 +
.../system/cpu/cpu4/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu4/cache/index3/id | 1 +
.../system/cpu/cpu4/cache/index3/level | 1 +
.../system/cpu/cpu4/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu4/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu4/cache/index3/size | 1 +
.../system/cpu/cpu4/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu4/online | 1 +
.../linux-resctrl/system/cpu/cpu4/topology/core_id | 1 +
.../system/cpu/cpu4/topology/core_siblings | 1 +
.../system/cpu/cpu4/topology/core_siblings_list | 1 +
.../system/cpu/cpu4/topology/physical_package_id | 1 +
.../system/cpu/cpu4/topology/thread_siblings | 1 +
.../system/cpu/cpu4/topology/thread_siblings_list | 1 +
.../linux-resctrl/system/cpu/cpu5/cache/index0/id | 1 +
.../system/cpu/cpu5/cache/index0/level | 1 +
.../system/cpu/cpu5/cache/index0/shared_cpu_list | 1 +
.../system/cpu/cpu5/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu5/cache/index0/size | 1 +
.../system/cpu/cpu5/cache/index0/type | 1 +
.../linux-resctrl/system/cpu/cpu5/cache/index1/id | 1 +
.../system/cpu/cpu5/cache/index1/level | 1 +
.../system/cpu/cpu5/cache/index1/shared_cpu_list | 1 +
.../system/cpu/cpu5/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu5/cache/index1/size | 1 +
.../system/cpu/cpu5/cache/index1/type | 1 +
.../linux-resctrl/system/cpu/cpu5/cache/index2/id | 1 +
.../system/cpu/cpu5/cache/index2/level | 1 +
.../system/cpu/cpu5/cache/index2/shared_cpu_list | 1 +
.../system/cpu/cpu5/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu5/cache/index2/size | 1 +
.../system/cpu/cpu5/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu5/cache/index3/id | 1 +
.../system/cpu/cpu5/cache/index3/level | 1 +
.../system/cpu/cpu5/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu5/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu5/cache/index3/size | 1 +
.../system/cpu/cpu5/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu5/online | 1 +
.../linux-resctrl/system/cpu/cpu5/topology/core_id | 1 +
.../system/cpu/cpu5/topology/core_siblings | 1 +
.../system/cpu/cpu5/topology/core_siblings_list | 1 +
.../system/cpu/cpu5/topology/physical_package_id | 1 +
.../system/cpu/cpu5/topology/thread_siblings | 1 +
.../system/cpu/cpu5/topology/thread_siblings_list | 1 +
.../linux-resctrl/system/cpu/cpu6/cache/index0/id | 1 +
.../system/cpu/cpu6/cache/index0/level | 1 +
.../system/cpu/cpu6/cache/index0/shared_cpu_list | 1 +
.../system/cpu/cpu6/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu6/cache/index0/size | 1 +
.../system/cpu/cpu6/cache/index0/type | 1 +
.../linux-resctrl/system/cpu/cpu6/cache/index1/id | 1 +
.../system/cpu/cpu6/cache/index1/level | 1 +
.../system/cpu/cpu6/cache/index1/shared_cpu_list | 1 +
.../system/cpu/cpu6/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu6/cache/index1/size | 1 +
.../system/cpu/cpu6/cache/index1/type | 1 +
.../linux-resctrl/system/cpu/cpu6/cache/index2/id | 1 +
.../system/cpu/cpu6/cache/index2/level | 1 +
.../system/cpu/cpu6/cache/index2/shared_cpu_list | 1 +
.../system/cpu/cpu6/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu6/cache/index2/size | 1 +
.../system/cpu/cpu6/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu6/cache/index3/id | 1 +
.../system/cpu/cpu6/cache/index3/level | 1 +
.../system/cpu/cpu6/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu6/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu6/cache/index3/size | 1 +
.../system/cpu/cpu6/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu6/online | 1 +
.../linux-resctrl/system/cpu/cpu6/topology/core_id | 1 +
.../system/cpu/cpu6/topology/core_siblings | 1 +
.../system/cpu/cpu6/topology/core_siblings_list | 1 +
.../system/cpu/cpu6/topology/physical_package_id | 1 +
.../system/cpu/cpu6/topology/thread_siblings | 1 +
.../system/cpu/cpu6/topology/thread_siblings_list | 1 +
.../linux-resctrl/system/cpu/cpu7/cache/index0/id | 1 +
.../system/cpu/cpu7/cache/index0/level | 1 +
.../system/cpu/cpu7/cache/index0/shared_cpu_list | 1 +
.../system/cpu/cpu7/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu7/cache/index0/size | 1 +
.../system/cpu/cpu7/cache/index0/type | 1 +
.../linux-resctrl/system/cpu/cpu7/cache/index1/id | 1 +
.../system/cpu/cpu7/cache/index1/level | 1 +
.../system/cpu/cpu7/cache/index1/shared_cpu_list | 1 +
.../system/cpu/cpu7/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu7/cache/index1/size | 1 +
.../system/cpu/cpu7/cache/index1/type | 1 +
.../linux-resctrl/system/cpu/cpu7/cache/index2/id | 1 +
.../system/cpu/cpu7/cache/index2/level | 1 +
.../system/cpu/cpu7/cache/index2/shared_cpu_list | 1 +
.../system/cpu/cpu7/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu7/cache/index2/size | 1 +
.../system/cpu/cpu7/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu7/cache/index3/id | 1 +
.../system/cpu/cpu7/cache/index3/level | 1 +
.../system/cpu/cpu7/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu7/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu7/cache/index3/size | 1 +
.../system/cpu/cpu7/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu7/online | 1 +
.../linux-resctrl/system/cpu/cpu7/topology/core_id | 1 +
.../system/cpu/cpu7/topology/core_siblings | 1 +
.../system/cpu/cpu7/topology/core_siblings_list | 1 +
.../system/cpu/cpu7/topology/physical_package_id | 1 +
.../system/cpu/cpu7/topology/thread_siblings | 1 +
.../system/cpu/cpu7/topology/thread_siblings_list | 1 +
.../linux-resctrl/system/cpu/cpu8/cache/index0/id | 1 +
.../system/cpu/cpu8/cache/index0/level | 1 +
.../system/cpu/cpu8/cache/index0/shared_cpu_list | 1 +
.../system/cpu/cpu8/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu8/cache/index0/size | 1 +
.../system/cpu/cpu8/cache/index0/type | 1 +
.../linux-resctrl/system/cpu/cpu8/cache/index1/id | 1 +
.../system/cpu/cpu8/cache/index1/level | 1 +
.../system/cpu/cpu8/cache/index1/shared_cpu_list | 1 +
.../system/cpu/cpu8/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu8/cache/index1/size | 1 +
.../system/cpu/cpu8/cache/index1/type | 1 +
.../linux-resctrl/system/cpu/cpu8/cache/index2/id | 1 +
.../system/cpu/cpu8/cache/index2/level | 1 +
.../system/cpu/cpu8/cache/index2/shared_cpu_list | 1 +
.../system/cpu/cpu8/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu8/cache/index2/size | 1 +
.../system/cpu/cpu8/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu8/cache/index3/id | 1 +
.../system/cpu/cpu8/cache/index3/level | 1 +
.../system/cpu/cpu8/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu8/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu8/cache/index3/size | 1 +
.../system/cpu/cpu8/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu8/online | 1 +
.../linux-resctrl/system/cpu/cpu8/topology/core_id | 1 +
.../system/cpu/cpu8/topology/core_siblings | 1 +
.../system/cpu/cpu8/topology/core_siblings_list | 1 +
.../system/cpu/cpu8/topology/physical_package_id | 1 +
.../system/cpu/cpu8/topology/thread_siblings | 1 +
.../system/cpu/cpu8/topology/thread_siblings_list | 1 +
.../system/cpu/cpu9/cache/index0/id} | 0
.../system/cpu/cpu9/cache/index0/level | 1 +
.../system/cpu/cpu9/cache/index0/shared_cpu_list | 1 +
.../system/cpu/cpu9/cache/index0/shared_cpu_map | 1 +
.../system/cpu/cpu9/cache/index0/size | 1 +
.../system/cpu/cpu9/cache/index0/type | 1 +
.../system/cpu/cpu9/cache/index1/id} | 0
.../system/cpu/cpu9/cache/index1/level | 1 +
.../system/cpu/cpu9/cache/index1/shared_cpu_list | 1 +
.../system/cpu/cpu9/cache/index1/shared_cpu_map | 1 +
.../system/cpu/cpu9/cache/index1/size | 1 +
.../system/cpu/cpu9/cache/index1/type | 1 +
.../system/cpu/cpu9/cache/index2/id} | 0
.../system/cpu/cpu9/cache/index2/level | 1 +
.../system/cpu/cpu9/cache/index2/shared_cpu_list | 1 +
.../system/cpu/cpu9/cache/index2/shared_cpu_map | 1 +
.../system/cpu/cpu9/cache/index2/size | 1 +
.../system/cpu/cpu9/cache/index2/type | 1 +
.../linux-resctrl/system/cpu/cpu9/cache/index3/id | 1 +
.../system/cpu/cpu9/cache/index3/level | 1 +
.../system/cpu/cpu9/cache/index3/shared_cpu_list | 1 +
.../system/cpu/cpu9/cache/index3/shared_cpu_map | 1 +
.../system/cpu/cpu9/cache/index3/size | 1 +
.../system/cpu/cpu9/cache/index3/type | 1 +
.../linux-resctrl/system/cpu/cpu9/online | 1 +
.../linux-resctrl/system/cpu/cpu9/topology/core_id | 1 +
.../system/cpu/cpu9/topology/core_siblings | 1 +
.../system/cpu/cpu9/topology/core_siblings_list | 1 +
.../system/cpu/cpu9/topology/physical_package_id | 1 +
.../system/cpu/cpu9/topology/thread_siblings | 1 +
.../system/cpu/cpu9/topology/thread_siblings_list | 1 +
.../linux-resctrl/system/cpu/online | 1 +
.../linux-resctrl/system/cpu/present | 1 +
.../linux-resctrl/system/node/node0/cpu0 | 1 +
.../linux-resctrl/system/node/node0/cpu1 | 1 +
.../linux-resctrl/system/node/node0/cpu2 | 1 +
.../linux-resctrl/system/node/node0/cpu3 | 1 +
.../linux-resctrl/system/node/node0/cpu4 | 1 +
.../linux-resctrl/system/node/node0/cpu5 | 1 +
.../linux-resctrl/system/node/node0/cpulist | 1 +
.../linux-resctrl/system/node/node0/cpumap | 1 +
.../linux-resctrl/system/node/node0/distance | 1 +
.../hugepages/hugepages-1048576kB/free_hugepages | 1 +
.../hugepages/hugepages-1048576kB/nr_hugepages | 1 +
.../hugepages-1048576kB/surplus_hugepages | 1 +
.../hugepages/hugepages-2048kB/free_hugepages | 1 +
.../node0/hugepages/hugepages-2048kB/nr_hugepages | 1 +
.../hugepages/hugepages-2048kB/surplus_hugepages | 1 +
.../linux-resctrl/system/node/node1/cpu10 | 1 +
.../linux-resctrl/system/node/node1/cpu11 | 1 +
.../linux-resctrl/system/node/node1/cpu6 | 1 +
.../linux-resctrl/system/node/node1/cpu7 | 1 +
.../linux-resctrl/system/node/node1/cpu8 | 1 +
.../linux-resctrl/system/node/node1/cpu9 | 1 +
.../linux-resctrl/system/node/node1/cpulist | 1 +
.../linux-resctrl/system/node/node1/cpumap | 1 +
.../linux-resctrl/system/node/node1/distance | 1 +
.../hugepages/hugepages-1048576kB/free_hugepages | 1 +
.../hugepages/hugepages-1048576kB/nr_hugepages | 1 +
.../hugepages-1048576kB/surplus_hugepages | 1 +
.../hugepages/hugepages-2048kB/free_hugepages | 1 +
.../node1/hugepages/hugepages-2048kB/nr_hugepages | 1 +
.../hugepages/hugepages-2048kB/surplus_hugepages | 1 +
.../linux-resctrl/system/node/online | 1 +
tests/vircaps2xmldata/vircaps-x86_64-caches.xml | 3 +
tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml | 49 ++++
tests/vircaps2xmltest.c | 31 ++-
tests/virfilewrapper.c | 281 +++++++++++++++++++++
src/util/virsysfspriv.h => tests/virfilewrapper.h | 19 +-
tests/virhostcputest.c | 8 +-
tests/virnumamock.c | 17 +-
tests/virschematest.c | 3 +-
522 files changed, 1368 insertions(+), 455 deletions(-)
delete mode 100644 src/util/virsysfs.c
delete mode 100644 src/util/virsysfs.h
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/cpus
create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/info/L3/cbm_mask
create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/info/L3/min_cbm_bits
create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/info/L3/num_closids
create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/manualres/cpus
create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/manualres/schemata
create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/manualres/tasks
create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/schemata
create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/tasks
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index0/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index0/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index0/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index1/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index1/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index1/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index2/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index2/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/topology/thread_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/topology/thread_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index0/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index0/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index0/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index1/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index1/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index1/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index2/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index2/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/topology/thread_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/topology/thread_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index0/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index0/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index0/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index1/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index1/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index1/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index2/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index2/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/topology/thread_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/topology/thread_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index0/level
copy tests/vircaps2xmldata/{linux-caches/cpu/cpu0/cache/index0/shared_cpu_map => linux-resctrl/system/cpu/cpu11/cache/index0/shared_cpu_list} (100%)
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index0/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index1/level
copy tests/vircaps2xmldata/{linux-caches/cpu/cpu0/cache/index0/shared_cpu_map => linux-resctrl/system/cpu/cpu11/cache/index1/shared_cpu_list} (100%)
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index1/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index2/level
copy tests/vircaps2xmldata/{linux-caches/cpu/cpu0/cache/index0/shared_cpu_map => linux-resctrl/system/cpu/cpu11/cache/index2/shared_cpu_list} (100%)
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/topology/thread_siblings
copy tests/vircaps2xmldata/{linux-caches/cpu/cpu0/cache/index0/shared_cpu_map => linux-resctrl/system/cpu/cpu11/topology/thread_siblings_list} (100%)
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index0/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index0/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index0/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index1/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index1/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index1/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index2/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index2/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/topology/thread_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/topology/thread_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index0/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index0/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index0/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index1/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index1/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index1/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index2/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index2/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/topology/thread_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/topology/thread_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index0/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index0/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index0/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index1/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index1/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index1/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index2/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index2/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/topology/thread_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/topology/thread_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index0/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index0/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index0/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index1/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index1/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index1/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index2/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index2/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/topology/thread_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/topology/thread_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index0/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index0/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index0/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index1/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index1/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index1/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index2/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index2/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/topology/thread_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/topology/thread_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index0/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index0/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index0/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index1/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index1/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index1/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index2/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index2/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/topology/thread_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/topology/thread_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index0/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index0/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index0/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index1/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index1/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index1/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index2/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index2/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/topology/thread_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/topology/thread_siblings_list
copy tests/vircaps2xmldata/{linux-caches/cpu/cpu0/cache/index0/shared_cpu_map => linux-resctrl/system/cpu/cpu9/cache/index0/id} (100%)
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index0/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index0/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index0/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index0/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index0/type
copy tests/vircaps2xmldata/{linux-caches/cpu/cpu0/cache/index0/shared_cpu_map => linux-resctrl/system/cpu/cpu9/cache/index1/id} (100%)
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index1/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index1/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index1/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index1/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index1/type
copy tests/vircaps2xmldata/{linux-caches/cpu/cpu0/cache/index0/shared_cpu_map => linux-resctrl/system/cpu/cpu9/cache/index2/id} (100%)
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index2/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index2/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index2/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index2/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index2/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index3/level
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index3/shared_cpu_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index3/shared_cpu_map
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index3/size
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/cache/index3/type
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/topology/core_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/topology/core_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/topology/core_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/topology/physical_package_id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/topology/thread_siblings
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/topology/thread_siblings_list
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/online
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/cpu/present
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu0
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu1
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu2
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu3
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu4
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu5
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpulist
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpumap
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node0/distance
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node0/hugepages/hugepages-1048576kB/free_hugepages
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node0/hugepages/hugepages-1048576kB/surplus_hugepages
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node0/hugepages/hugepages-2048kB/free_hugepages
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node0/hugepages/hugepages-2048kB/surplus_hugepages
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu10
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu11
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu6
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu7
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu8
create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu9
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpulist
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpumap
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node1/distance
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node1/hugepages/hugepages-1048576kB/free_hugepages
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node1/hugepages/hugepages-1048576kB/surplus_hugepages
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node1/hugepages/hugepages-2048kB/free_hugepages
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/node1/hugepages/hugepages-2048kB/surplus_hugepages
create mode 100644 tests/vircaps2xmldata/linux-resctrl/system/node/online
create mode 100644 tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml
create mode 100644 tests/virfilewrapper.c
rename src/util/virsysfspriv.h => tests/virfilewrapper.h (69%)
--
2.12.2
4
18
02 May '17
While fixing a bug with incorrectly freed memory in commit
v3.1.0-399-g5498aa29a, I accidentally broke persistent migration of
transient domains. Before adding qemuDomainDefCopy in the path, the code
just took NULL from vm->newDef and used it as the persistent def, which
resulted in no persistent XML being sent in the migration cookie. This
scenario is perfectly valid and the destination correctly handles it by
using the incoming live definition and storing it as the persistent one.
After the mentioned commit libvirtd would just segfault in the described
scenario.
https://bugzilla.redhat.com/show_bug.cgi?id=1446205
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/qemu/qemu_migration.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 30f98da1e..3c0d7e957 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -3640,15 +3640,15 @@ qemuMigrationRun(virQEMUDriverPtr driver,
if (flags & VIR_MIGRATE_PERSIST_DEST) {
if (persist_xml) {
- persistDef = qemuMigrationPrepareDef(driver, persist_xml,
- NULL, NULL);
- } else {
- persistDef = qemuDomainDefCopy(driver, vm->newDef,
- VIR_DOMAIN_XML_SECURE |
- VIR_DOMAIN_XML_MIGRATABLE);
+ if (!(persistDef = qemuMigrationPrepareDef(driver, persist_xml,
+ NULL, NULL)))
+ goto cleanup;
+ } else if (vm->newDef) {
+ if (!(persistDef = qemuDomainDefCopy(driver, vm->newDef,
+ VIR_DOMAIN_XML_SECURE |
+ VIR_DOMAIN_XML_MIGRATABLE)))
+ goto cleanup;
}
- if (!persistDef)
- goto cleanup;
}
mig = qemuMigrationEatCookie(driver, vm, cookiein, cookieinlen,
--
2.12.2
2
1
If we are encoding a block of data that is 16 bytes in length,
we cannot leave it as 16 bytes, we must pad it out to the next
block boundary, 32 bytes. Without this padding, the decoder will
incorrectly treat the last byte of plain text as the padding
length, as it can't distinguish padded from non-padded data.
The problem exhibited itself when using a 16 byte passphrase
for a LUKS volume
$ virsh secret-set-value 55806c7d-8e93-456f-829b-607d8c198367 \
$(echo -n 1234567812345678 | base64)
Secret value set
$ virsh start demo
error: Failed to start domain demo
error: internal error: process exited while connecting to monitor: >>>>>>>>>>Len 16
2017-05-02T10:35:40.016390Z qemu-system-x86_64: -object \
secret,id=virtio-disk1-luks-secret0,data=SEtNi5vDUeyseMKHwc1c1Q==,\
keyid=masterKey0,iv=zm7apUB1A6dPcH53VW960Q==,format=base64: \
Incorrect number of padding bytes (56) found on decrypted data
Notice how the padding '56' corresponds to the ordinal value of
the character '8'.
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
src/util/vircrypto.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/util/vircrypto.c b/src/util/vircrypto.c
index 8748e1c..48b04fc 100644
--- a/src/util/vircrypto.c
+++ b/src/util/vircrypto.c
@@ -152,8 +152,14 @@ virCryptoEncryptDataAESgnutls(gnutls_cipher_algorithm_t gnutls_enc_alg,
uint8_t *ciphertext;
size_t ciphertextlen;
- /* Allocate a padded buffer, copy in the data */
- ciphertextlen = VIR_ROUND_UP(datalen, 16);
+ /* Allocate a padded buffer, copy in the data.
+ *
+ * NB, we must *always* have at least 1 byte of
+ * padding - we can't skip it on multiples of
+ * 16, otherwise decoder can't distinguish padded
+ * data from non-padded data. Hence datalen + 1
+ */
+ ciphertextlen = VIR_ROUND_UP(datalen + 1, 16);
if (VIR_ALLOC_N(ciphertext, ciphertextlen) < 0)
return -1;
memcpy(ciphertext, data, datalen);
--
2.9.3
2
1
Hi all,
On my host, I have been seeing instances of keepalive responses slow down
intermittently when issuing bulk power offs.
With some tips from Danpb on the channel, I was able to trace via systemtap
that the main event loop would not run for about 6-9 seconds. This would
stall keepalives and kill client connections.
I was able to trace it to the fact that qemuProcessHandleEvent() needed the
vm lock, and this was called from the main loop. I had hook scripts that
slightly elongated the time the power off RPC completed and the subsequent
keepalive delays were noticeable.
I agree that the easiest solution is to unblock the Vm lock before hook
scripts are activated.
However, I was wondering why we contend on the per-Vm lock directly from
the main loop at all ? Can we do this instead : have the main loop "park"
events to a separate event queue, and then have a dedicated thread pool in
the qemu driver pick these raw events and then try grabbing the per-vm lock
for that VM ?
That way, we can be sure that the main event loop is _never_ delayed
irrespective of an RPC dragging on.
If this sounds reasonable I will be happy to post the driver rewrite
patches to that end.
Regards,
Prerna
3
7
02 May '17
When creating v3.2.0-77-g8be3ccd04 commit, I completely forgot that one
migration capability is very special. It's the "events" capability which
tells QEMU to report "MIGRATION" events. Since libvirt always wants the
events, it is enabled in qemuConnectMonitor and the rest of the code
should not touch it.
https://bugzilla.redhat.com/show_bug.cgi?id=1439841
https://bugzilla.redhat.com/show_bug.cgi?id=1441165
Messed-up-by: Jiri Denemark <jdenemar(a)redhat.com>
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/qemu/qemu_migration.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index b4507a3ae..30f98da1e 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -5919,6 +5919,11 @@ qemuMigrationReset(virQEMUDriverPtr driver,
goto cleanup;
for (cap = 0; cap < QEMU_MONITOR_MIGRATION_CAPS_LAST; cap++) {
+ /* "events" capability is set (when supported) in qemuConnectMonitor
+ * and should never be cleared */
+ if (cap == QEMU_MONITOR_MIGRATION_CAPS_EVENTS)
+ continue;
+
if (qemuMigrationSetOption(driver, vm, cap, false, job) < 0)
goto cleanup;
}
--
2.12.2
2
1
02 May '17
libclang can be integrated into vim in pretty useful
ways, notably to provide semantic syntax highlighting
and code completion.
This series enables basic support for both (through the
color_coded and YouCompleteMe plugin respectively) by
creating the required per-project configuration files
automatically at configure time.
Note that external libraries (eg. libxml2) are not being
processed at the moment, but even with this basic
configuration the plugins can be very useful. More
sophisticated support can be worked in later on.
Visual comparison:
http://imgur.com/a/TBJsz
Andrea Bolognani (2):
Add color_coded support
Add YouCompleteMe support
.color_coded.in | 40 ++++++++++++++++++++++++++++++++++++++++
.gitignore | 2 ++
.ycm_extra_conf.py.in | 45 +++++++++++++++++++++++++++++++++++++++++++++
configure.ac | 2 ++
4 files changed, 89 insertions(+)
create mode 100644 .color_coded.in
create mode 100644 .ycm_extra_conf.py.in
--
2.7.4
2
11
02 May '17
This is a RFC patch for the reimplement of `support cache tune(CAT) in
libvirt`[1].
This patch defines some structs to represent data struct in linux
resctrl fs which will be used later to do cache allocation.
The patch expose a private interface `virResctrlFreeSchemata`, which
will be used to query the cache allocation on the host.
Also added unit test cases to test this interface can works well.
There are already patch sets[2] to address it, and functional
works, but people doesn't like it cause it has global variable, and
missing unit test case for new added capabilites, etc.
Martin has proposed a test infra to do vircaps2xmltest, and I extened it
on top of it to extend resctrl control[3], this is kinds of new desiged
apart from [2], so I propose this RFC patch to do some rework on it.
[1] https://www.redhat.com/archives/libvir-list/2017-January/msg00683.html
[2] https://www.redhat.com/archives/libvir-list/2017-March/msg00181.html
[3] https://www.redhat.com/archives/libvir-list/2017-April/msg00516.html
---
include/libvirt/virterror.h | 1 +
src/Makefile.am | 1 +
src/libvirt_private.syms | 6 +
src/util/virerror.c | 1 +
src/util/virresctrl.c | 423 ++++++++++++++++++++++++++++++
src/util/virresctrl.h | 86 ++++++
tests/Makefile.am | 7 +-
tests/virresctrldata/L3-free.schemata | 1 +
tests/virresctrldata/L3CODE-free.schemata | 1 +
tests/virresctrldata/L3DATA-free.schemata | 1 +
tests/virresctrltest.c | 117 +++++++++
11 files changed, 644 insertions(+), 1 deletion(-)
create mode 100644 src/util/virresctrl.c
create mode 100644 src/util/virresctrl.h
create mode 100644 tests/virresctrldata/L3-free.schemata
create mode 100644 tests/virresctrldata/L3CODE-free.schemata
create mode 100644 tests/virresctrldata/L3DATA-free.schemata
create mode 100644 tests/virresctrltest.c
diff --git a/include/libvirt/virterror.h b/include/libvirt/virterror.h
index 2efee8f..4bc0c74 100644
--- a/include/libvirt/virterror.h
+++ b/include/libvirt/virterror.h
@@ -132,6 +132,7 @@ typedef enum {
VIR_FROM_PERF = 65, /* Error from perf */
VIR_FROM_LIBSSH = 66, /* Error from libssh connection transport */
+ VIR_FROM_RESCTRL = 67, /* Error from resctrl */
# ifdef VIR_ENUM_SENTINELS
VIR_ERR_DOMAIN_LAST
diff --git a/src/Makefile.am b/src/Makefile.am
index 60eba37..0ae2af5 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -165,6 +165,7 @@ UTIL_SOURCES = \
util/virprocess.c util/virprocess.h \
util/virqemu.c util/virqemu.h \
util/virrandom.h util/virrandom.c \
+ util/virresctrl.h util/virresctrl.c \
util/virrotatingfile.h util/virrotatingfile.c \
util/virscsi.c util/virscsi.h \
util/virscsihost.c util/virscsihost.h \
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 9d7760d..b7225fe 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -2396,6 +2396,12 @@ virRandomGenerateWWN;
virRandomInt;
+# util/virresctrl.h
+virResctrlFreeSchemata;
+virResctrlGetFreeCache;
+virResctrlTypeToString;
+
+
# util/virrotatingfile.h
virRotatingFileReaderConsume;
virRotatingFileReaderFree;
diff --git a/src/util/virerror.c b/src/util/virerror.c
index ef17fb5..02fabcc 100644
--- a/src/util/virerror.c
+++ b/src/util/virerror.c
@@ -139,6 +139,7 @@ VIR_ENUM_IMPL(virErrorDomain, VIR_ERR_DOMAIN_LAST,
"Perf", /* 65 */
"Libssh transport layer",
+ "Resource Control",
)
diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c
new file mode 100644
index 0000000..778c2ec
--- /dev/null
+++ b/src/util/virresctrl.c
@@ -0,0 +1,423 @@
+/*
+ * virresctrl.c: methods for managing resource control
+ *
+ * Copyright (C) 2017 Intel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ * Eli Qiao <liyong.qiao(a)intel.com>
+ */
+
+#include <config.h>
+#include <fcntl.h>
+#include <sys/file.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include "virresctrl.h"
+#include "virerror.h"
+#include "virlog.h"
+#include "viralloc.h"
+#include "virstring.h"
+#include "virfile.h"
+
+VIR_LOG_INIT("util.resctrl");
+
+#define VIR_FROM_THIS VIR_FROM_RESCTRL
+#define SYSFS_RESCTRL_PATH "/sys/fs/resctrl/"
+
+VIR_ENUM_IMPL(virResctrl, VIR_RESCTRL_TYPE_LAST,
+ "L3",
+ "L3CODE",
+ "L3DATA",
+ "L2")
+
+/**
+ * a virResctrlDomain represents a resource control group, it's a directory
+ * under /sys/fs/resctrl.
+ * eg: /sys/fs/resctrl/CG1
+ * |-- cpus
+ * |-- schemata
+ * `-- tasks
+ * # cat schemata
+ * L3DATA:0=fffff;1=fffff
+ * L3CODE:0=fffff;1=fffff
+ *
+ * Besides, it can also represent the default resource control group of the
+ * host.
+ */
+
+typedef struct _virResctrlGroup virResctrlGroup;
+typedef virResctrlGroup *virResctrlGroupPtr;
+struct _virResctrlGroup {
+ char *name; /* resource group name, eg: CG1. If it represent host's
+ default resource group name, should be a NULL pointer */
+ size_t n_tasks; /* number of task assigned to the resource group */
+ char **tasks; /* task list which contains task id eg: 77454 */
+
+ size_t n_schematas; /* number of schemata the resource group contains,
+ eg: 2 */
+ virResctrlSchemataPtr *schematas; /* scheamta list */
+};
+
+/* All resource control groups on this host, including default resource group */
+typedef struct _virResctrlDomain virResctrlDomain;
+typedef virResctrlDomain *virResctrlDomainPtr;
+struct _virResctrlDomain {
+ size_t n_groups; /* number of resource control group */
+ virResctrlGroupPtr *groups; /* list of resource control group */
+};
+
+void
+virResctrlFreeSchemata(virResctrlSchemataPtr ptr)
+{
+ size_t i;
+
+ if (!ptr)
+ return;
+
+ for (i = 0; i < ptr->n_schemata_items; i++)
+ VIR_FREE(ptr->schemata_items[i]);
+}
+
+static void
+virResctrlFreeGroup(virResctrlGroupPtr ptr)
+{
+ size_t i;
+
+ if (!ptr)
+ return;
+
+ for (i = 0; i < ptr->n_tasks; i++)
+ VIR_FREE(ptr->tasks[i]);
+
+ for (i = 0; i < ptr->n_schematas; i++) {
+ virResctrlFreeSchemata(ptr->schematas[i]);
+ VIR_FREE(ptr->schematas[i]);
+ }
+}
+
+static void
+virResctrlFreeDomain(virResctrlDomainPtr ptr)
+{
+ size_t i;
+
+ if (!ptr)
+ return;
+
+ for (i = 0; i < ptr->n_groups; i++) {
+ virResctrlFreeGroup(ptr->groups[i]);
+ VIR_FREE(ptr->groups[i]);
+ }
+}
+
+static int
+virResctrlCopySchemata(virResctrlSchemataPtr src,
+ virResctrlSchemataPtr *dst)
+{
+ size_t i;
+ virResctrlSchemataItemPtr schemataitem;
+ virResctrlSchemataPtr schemata;
+
+ if (VIR_ALLOC(schemata) < 0)
+ return -1;
+
+ schemata->type = src->type;
+
+ for (i = 0; i < src->n_schemata_items; i++) {
+ if (VIR_ALLOC(schemataitem) < 0)
+ goto error;
+
+ schemataitem->cache_id = src->schemata_items[i]->cache_id;
+ schemataitem->continuous_schemata = src->schemata_items[i]->continuous_schemata;
+ schemataitem->schemata = src->schemata_items[i]->schemata;
+ schemataitem->size = src->schemata_items[i]->size;
+
+ if (VIR_APPEND_ELEMENT(schemata->schemata_items,
+ schemata->n_schemata_items,
+ schemataitem) < 0)
+ goto error;
+ }
+
+ *dst = schemata;
+
+ return 0;
+
+ error:
+ virResctrlFreeSchemata(schemata);
+ return -1;
+}
+
+static int
+virResctrlGetSchemataString(virResctrlType type,
+ const char *name,
+ char **schemata)
+{
+ int rc = -1;
+ char *tmp = NULL;
+ char *end = NULL;
+ char *buf = NULL;
+ char *type_suffix = NULL;
+
+ if (virFileReadValueString(&buf,
+ SYSFS_RESCTRL_PATH "%s/schemata",
+ name ? name : "") < 0)
+ return -1;
+
+ if (virAsprintf(&type_suffix,
+ "%s:",
+ virResctrlTypeToString(type)) < 0)
+ goto cleanup;
+
+ tmp = strstr(buf, type_suffix);
+
+ if (!tmp)
+ goto cleanup;
+
+ end = strchr(tmp, '\n');
+ if (end != NULL)
+ *end = '\0';
+
+ if (VIR_STRDUP(*schemata, tmp) < 0)
+ goto cleanup;
+
+ rc = 0;
+
+ cleanup:
+ VIR_FREE(buf);
+ VIR_FREE(type_suffix);
+ return rc;
+}
+
+static int
+virResctrlLoadSchemata(const char* schemata_str,
+ virResctrlSchemataPtr schemata)
+{
+ VIR_DEBUG("%s, %p\n", schemata_str, schemata);
+
+ int ret = -1;
+ char **lists = NULL;
+ char **sms = NULL;
+ char **sis = NULL;
+ size_t i;
+ virResctrlSchemataItemPtr si;
+
+ /* parse L3:0=fffff;1=f */
+ lists = virStringSplit(schemata_str, ":", 2);
+
+ if ((!lists) || (!lists[1]))
+ goto cleanup;
+
+ /* parse 0=fffff;1=f */
+ sms = virStringSplit(lists[1], ";", 0);
+ if (!sms)
+ goto cleanup;
+
+ for (i = 0; sms[i] != NULL; i++) {
+ /* parse 0=fffff */
+ sis = virStringSplit(sms[i], "=", 2);
+ if (!sis)
+ goto cleanup;
+
+ if (VIR_ALLOC(si) < 0)
+ goto cleanup;
+
+ if (virStrToLong_ui(sis[0], NULL, 10, &si->cache_id) < 0)
+ goto cleanup;
+
+ if (virStrToLong_ui(sis[1], NULL, 16, &si->continuous_schemata) < 0)
+ goto cleanup;
+
+ si->schemata = si->continuous_schemata;
+
+ if (VIR_APPEND_ELEMENT(schemata->schemata_items,
+ schemata->n_schemata_items,
+ si) < 0)
+ goto cleanup;
+
+ }
+
+ ret = 0;
+
+ cleanup:
+ VIR_FREE(si);
+ virStringListFree(lists);
+ virStringListFree(sms);
+ virStringListFree(sis);
+ return ret;
+}
+
+static int
+virResctrlLoadGroup(const char *name,
+ virResctrlDomainPtr dom)
+{
+ VIR_DEBUG("%s, %p\n", name, dom);
+
+ int ret = -1;
+ char *path = NULL;
+ char *schemata_str;
+ virResctrlType i;
+ int rv;
+ virResctrlGroupPtr grp;
+ virResctrlSchemataPtr schemata;
+
+ if ((virAsprintf(&path, "%s/%s", SYSFS_RESCTRL_PATH, name)) < 0)
+ return -1;
+
+ if (!virFileExists(path))
+ goto cleanup;
+
+ if (VIR_ALLOC(grp) < 0)
+ goto cleanup;
+
+ if (VIR_STRDUP(grp->name, name) < 0)
+ goto cleanup;
+
+ for (i = 0; i < VIR_RESCTRL_TYPE_LAST; i++) {
+ rv = virResctrlGetSchemataString(i, name, &schemata_str);
+ if (rv < 0)
+ continue;
+
+ if (VIR_ALLOC(schemata) < 0)
+ goto cleanup;
+
+ schemata->type = i;
+
+ if (virResctrlLoadSchemata(schemata_str, schemata) < 0)
+ goto cleanup;
+
+ VIR_FREE(schemata_str);
+
+ if (VIR_APPEND_ELEMENT(grp->schematas,
+ grp->n_schematas,
+ schemata) < 0)
+ goto cleanup;
+
+ virResctrlFreeSchemata(schemata);
+ }
+
+ if (VIR_APPEND_ELEMENT(dom->groups,
+ dom->n_groups,
+ grp) < 0)
+ goto cleanup;
+
+ ret = 0;
+
+ cleanup:
+ VIR_FREE(path);
+ virResctrlFreeGroup(grp);
+ return ret;
+}
+
+static int
+virResctrlLoadDomain(virResctrlDomainPtr dom)
+{
+ int ret = -1;
+ int rv = -1;
+ DIR *dirp = NULL;
+ char *path = NULL;
+ struct dirent *ent;
+
+ VIR_DEBUG("%s, %p\n", "", dom);
+
+ rv = virDirOpenIfExists(&dirp, SYSFS_RESCTRL_PATH);
+
+ if (rv < 0)
+ goto cleanup;
+
+ /* load default resctrl group */
+ if (virResctrlLoadGroup("", dom) < 0)
+ goto cleanup;
+
+ while ((rv = virDirRead(dirp, &ent, path)) > 0) {
+ /* only read directory in resctrl */
+ if ((ent->d_type != DT_DIR) || STREQ(ent->d_name, "info"))
+ continue;
+
+ if (virResctrlLoadGroup(ent->d_name, dom) < 0)
+ goto cleanup;
+ }
+
+ ret = 0;
+
+ cleanup:
+ virDirClose(&dirp);
+ return ret;
+}
+
+static void
+virResctrlRefreshDom(virResctrlDomainPtr dom, virResctrlType type)
+{
+ size_t i;
+ size_t j;
+ size_t k;
+
+ virResctrlGroupPtr default_grp = NULL;
+ virResctrlGroupPtr grp = NULL;
+ virResctrlSchemataPtr schemata = NULL;
+ virResctrlSchemataItemPtr schemataitem = NULL;
+
+ default_grp = dom->groups[0];
+
+ /* We are sure that the first group is the default one */
+ for (i = 1; i < dom->n_groups; i++) {
+ grp = dom->groups[i];
+ for (j = 0; j < grp->n_schematas; j++) {
+ schemata = grp->schematas[j];
+ /* we can only calculate one type of schemata */
+ if (schemata->type != type)
+ continue;
+ for (k = 0; k < schemata->n_schemata_items; k++) {
+ schemataitem = schemata->schemata_items[k];
+ /* if the schemata = 1, ignore it */
+ if (schemataitem->continuous_schemata > 1)
+ /* calculate default schemata, it can be non-continuous */
+ default_grp->schematas[j]->schemata_items[k]->schemata &= ~(schemataitem->continuous_schemata);
+ }
+ }
+ }
+}
+
+int virResctrlGetFreeCache(virResctrlType type,
+ virResctrlSchemataPtr *schemata)
+{
+ VIR_DEBUG("%d, %p\n", type, schemata);
+ int ret = -1;
+ size_t i;
+ virResctrlDomainPtr dom = NULL;
+ virResctrlGroupPtr grp = NULL;
+
+ if (VIR_ALLOC(dom) < 0)
+ return -1;
+
+ if (virResctrlLoadDomain(dom) < 0)
+ goto cleanup;
+
+ virResctrlRefreshDom(dom, type);
+ grp = dom->groups[0];
+
+ for (i = 0; i < grp->n_schematas; i ++)
+ if (grp->schematas[i]->type == type)
+ if (virResctrlCopySchemata(grp->schematas[i], schemata) < 0)
+ goto cleanup;
+
+ if (schemata != NULL)
+ ret = 0;
+
+ cleanup:
+ virResctrlFreeDomain(dom);
+ return ret;
+}
diff --git a/src/util/virresctrl.h b/src/util/virresctrl.h
new file mode 100644
index 0000000..1b040d4
--- /dev/null
+++ b/src/util/virresctrl.h
@@ -0,0 +1,86 @@
+/*
+ * virresctrl.h: header for managing resctrl control
+ *
+ * Copyright (C) 2017 Intel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ * Eli Qiao <liyong.qiao(a)intel.com>
+ */
+
+#ifndef __VIR_RESCTRL_H__
+# define __VIR_RESCTRL_H__
+
+#include "virutil.h"
+
+typedef enum {
+ VIR_RESCTRL_TYPE_L3,
+ VIR_RESCTRL_TYPE_L3_CODE,
+ VIR_RESCTRL_TYPE_L3_DATA,
+ VIR_RESCTRL_TYPE_L2,
+
+ VIR_RESCTRL_TYPE_LAST
+} virResctrlType;
+
+VIR_ENUM_DECL(virResctrl);
+
+/*
+ * a virResctrlSchemataItem represents one of schemata object in a
+ * resource control group.
+ * eg: 0=f
+ */
+typedef struct _virResctrlSchemataItem virResctrlSchemataItem;
+typedef virResctrlSchemataItem *virResctrlSchemataItemPtr;
+struct _virResctrlSchemataItem {
+ unsigned int cache_id; /* cache resource id, eg: 0 */
+ unsigned int continuous_schemata; /* schemata, should be a continuous bits,
+ eg: f, this schemata can be persisted
+ to sysfs */
+ unsigned int schemata; /* schemata eg: f0f, a schemata which is calculated
+ at running time */
+ unsigned long long size; /* the cache size schemata represented in B,
+ eg: (min * bits of continuous_schemata) */
+};
+
+/*
+ * a virResctrlSchemata represents schemata objects of specific type of
+ * resource in a resource control group.
+ * eg: L3:0=f,1=ff
+ */
+typedef struct _virResctrlSchemata virResctrlSchemata;
+typedef virResctrlSchemata *virResctrlSchemataPtr;
+struct _virResctrlSchemata {
+ virResctrlType type; /* resource control type, eg: L3 */
+ size_t n_schemata_items; /* number of schemata item, eg: 2 */
+ virResctrlSchemataItemPtr *schemata_items; /* pointer list of schemata item */
+};
+
+/* Get free cache of the host, result saved in schemata */
+int virResctrlGetFreeCache(virResctrlType type,
+ virResctrlSchemataPtr *schemata);
+
+
+/* TODO Need to first define virDomainCachetunePtr */
+/* Set cache allocation for a VM domain */
+// int virResctrlSetCacheBanks(virDomainCachetunePtr cachetune,
+// unsigned char *group_name,
+// size_t n_pids,
+// pid_t *pids);
+//
+/* remove cache allocation for a VM domain */
+// int virResctrlRemoveCacheBanks(unsigned char *group_name);
+void virResctrlFreeSchemata(virResctrlSchemataPtr ptr);
+#endif
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 3cc828d..0e09e43 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -229,6 +229,7 @@ if WITH_LINUX
test_programs += fchosttest
test_programs += scsihosttest
test_programs += vircaps2xmltest
+test_programs += virresctrltest
test_libraries += virusbmock.la \
virnetdevbandwidthmock.la \
virnumamock.la \
@@ -1150,6 +1151,10 @@ vircaps2xmltest_SOURCES = \
vircaps2xmltest.c testutils.h testutils.c virfilemock.c
vircaps2xmltest_LDADD = $(LDADDS)
+virresctrltest_SOURCES = \
+ virresctrltest.c testutils.h testutils.c virfilemock.c
+virresctrltest_LDADD = $(LDADDS)
+
virnumamock_la_SOURCES = \
virnumamock.c
virnumamock_la_CFLAGS = $(AM_CFLAGS)
@@ -1157,7 +1162,7 @@ virnumamock_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
virnumamock_la_LIBADD = $(MOCKLIBS_LIBS)
else ! WITH_LINUX
-EXTRA_DIST += vircaps2xmltest.c virnumamock.c
+EXTRA_DIST += vircaps2xmltest.c virresctrltest.c virnumamock.c
endif ! WITH_LINUX
if WITH_NSS
diff --git a/tests/virresctrldata/L3-free.schemata b/tests/virresctrldata/L3-free.schemata
new file mode 100644
index 0000000..9b47d25
--- /dev/null
+++ b/tests/virresctrldata/L3-free.schemata
@@ -0,0 +1 @@
+L3:0=1ffff;1=1ffff
diff --git a/tests/virresctrldata/L3CODE-free.schemata b/tests/virresctrldata/L3CODE-free.schemata
new file mode 100644
index 0000000..7039c45
--- /dev/null
+++ b/tests/virresctrldata/L3CODE-free.schemata
@@ -0,0 +1 @@
+L3CODE:0=cffff;1=cffff
diff --git a/tests/virresctrldata/L3DATA-free.schemata b/tests/virresctrldata/L3DATA-free.schemata
new file mode 100644
index 0000000..30f1cbd
--- /dev/null
+++ b/tests/virresctrldata/L3DATA-free.schemata
@@ -0,0 +1 @@
+L3DATA:0=3ffff;1=3ffff
diff --git a/tests/virresctrltest.c b/tests/virresctrltest.c
new file mode 100644
index 0000000..4926468
--- /dev/null
+++ b/tests/virresctrltest.c
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) Intel, Inc. 2017
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ * Eli Qiao <liyong.qiao(a)intel.com>
+ */
+
+#include <config.h>
+#include <stdlib.h>
+
+#include "testutils.h"
+#include "virbitmap.h"
+#include "virfilemock.h"
+#include "virresctrl.h"
+
+
+#define VIR_FROM_THIS VIR_FROM_NONE
+
+struct virResctrlData {
+ const char *filename;
+ virResctrlType type;
+};
+
+static void
+GetSchemataStr(virResctrlSchemataPtr schemata, char **str)
+{
+ size_t i;
+ virBuffer buf = VIR_BUFFER_INITIALIZER;
+ virBufferAsprintf(&buf, "%s:%u=%x",
+ virResctrlTypeToString(schemata->type),
+ schemata->schemata_items[0]->cache_id,
+ schemata->schemata_items[0]->schemata);
+
+ for (i = 1; i < schemata->n_schemata_items; i ++)
+ virBufferAsprintf(&buf, ";%u=%x",
+ schemata->schemata_items[i]->cache_id,
+ schemata->schemata_items[i]->schemata);
+
+ *str = virBufferContentAndReset(&buf);
+}
+
+static int
+test_virResctrl(const void *opaque)
+{
+ struct virResctrlData *data = (struct virResctrlData *) opaque;
+ char *dir = NULL;
+ char *resctrl = NULL;
+ int ret = -1;
+ virResctrlSchemataPtr schemata = NULL;
+ char *schemata_str;
+ char *schemata_file;
+
+ if (virAsprintf(&resctrl, "%s/virresctrldata/linux-%s/resctrl",
+ abs_srcdir, data->filename) < 0)
+ goto cleanup;
+
+ if (virAsprintf(&schemata_file, "%s/virresctrldata/%s-free.schemata",
+ abs_srcdir, virResctrlTypeToString(data->type)) < 0)
+ goto cleanup;
+
+ virFileMockAddPrefix("/sys/fs/resctrl", resctrl);
+
+ if (virResctrlGetFreeCache(data->type, &schemata) < 0)
+ goto cleanup;
+
+ GetSchemataStr(schemata, &schemata_str);
+
+ if (virTestCompareToFile(schemata_str, schemata_file) < 0)
+ goto cleanup;
+
+ virFileMockClearPrefixes();
+
+ ret = 0;
+
+ cleanup:
+ VIR_FREE(dir);
+ VIR_FREE(resctrl);
+ VIR_FREE(schemata_str);
+ virResctrlFreeSchemata(schemata);
+ return ret;
+}
+
+static int
+mymain(void)
+{
+ int ret = 0;
+
+#define DO_TEST_FULL(filename, type) \
+ do { \
+ struct virResctrlData data = {filename, \
+ type}; \
+ if (virTestRun(filename, test_virResctrl, &data) < 0) \
+ ret = -1; \
+ } while (0)
+
+ DO_TEST_FULL("resctrl", VIR_RESCTRL_TYPE_L3);
+ DO_TEST_FULL("resctrl-cdp", VIR_RESCTRL_TYPE_L3_CODE);
+ DO_TEST_FULL("resctrl-cdp", VIR_RESCTRL_TYPE_L3_DATA);
+
+ return ret;
+}
+
+VIR_TEST_MAIN_PRELOAD(mymain, abs_builddir "/.libs/virnumamock.so")
--
1.9.1
3
3
The panic device is currently documented as a way for "libvirt to receive
panic notification from a QEMU guest".
This is true, but not the whole story. When a guest triggers the panic
device, QEMU pauses the guest, and libvirt takes the action specified by
on_crash. This can interfere with the guest's own crash handling actions
(e.g. writing a dump file and rebooting itself) if the guest triggers the
panic device first (as Windows does).
None of this is an obvious side effect of a notification mechanism, so the
panic device documentation should mention it. (I'll send a documentation
patch shortly.)
Nor is this a desirable side effect, for guests that are configured to deal
with crashes themselves. Sure, you can avoid using the panic device with
such guests, but then virsh list or another application using the libvirt
API to monitor domain state won't notice guest crashes. And if you still
want libvirt to take action on guests that don't do it themselves, then you
have to be careful to include the panic device only for those domains.
Ideally libvirt would offer (1) a state indicating "this guest crashed and
needs help" independently of triggering an action, and (2) a way to trigger
an action only when needed to recover from the crash, excluding guests that
deal with their own crashes.
Sadly pvpanic and the HyperV crash MSR convey only that the guest crashed,
not whether the guest is configured to take some action on its own. So
there's no way to know precisely that a crashed (and not paused) guest is
in need of assistance.
But a state indicating "this guest crashed N minutes ago and hasn't
rebooted itself" would be a useful approximation. And triggering an action
N minutes after a guest crash if it hasn't rebooted itself in the meantime
would make it easy to cap the downtime of crashed domains. Both could be
implemented without changing either QEMU or panic device semantics.
Does this seem useful to anyone else?
--Ed
4
7
[libvirt] [PATCH] virsh-domain-monitor: add human readable output for 'domblkinfo'.
by Julio Faracco 02 May '17
by Julio Faracco 02 May '17
02 May '17
The virsh command 'domblkinfo' returns the capacity, allocation and phisycal
size of the devices attached in a domain. Usually, this sizes are very big
and hard to understand and calculate. This commits introduce a human readable
support to check the size of each field easilly.
For example, the command today:
virsh # domblkinfo my_domain hda
Capacity: 21474836480
Allocation: 14875545600
Physical: 21474836480
After this patch:
virsh # domblkinfo my_domain hda --human
Capacity: 20.0G
Allocation: 13.9G
Physical: 20.0G
This commit supports Bytes, KiB and MiB too.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1330940
Signed-off-by: Julio Faracco <jcfaracco(a)gmail.com>
---
tools/virsh-domain-monitor.c | 41 ++++++++++++++++++++++++++++++++++++++---
tools/virsh.pod | 5 +++--
2 files changed, 41 insertions(+), 5 deletions(-)
diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
index 3db4795..755d740 100644
--- a/tools/virsh-domain-monitor.c
+++ b/tools/virsh-domain-monitor.c
@@ -396,6 +396,10 @@ static const vshCmdOptDef opts_domblkinfo[] = {
.flags = VSH_OFLAG_REQ,
.help = N_("block device")
},
+ {.name = "human",
+ .type = VSH_OT_BOOL,
+ .help = N_("Human readable output")
+ },
{.name = NULL}
};
@@ -405,6 +409,7 @@ cmdDomblkinfo(vshControl *ctl, const vshCmd *cmd)
virDomainBlockInfo info;
virDomainPtr dom;
bool ret = false;
+ bool human = false;
const char *device = NULL;
if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
@@ -416,9 +421,39 @@ cmdDomblkinfo(vshControl *ctl, const vshCmd *cmd)
if (virDomainGetBlockInfo(dom, device, &info, 0) < 0)
goto cleanup;
- vshPrint(ctl, "%-15s %llu\n", _("Capacity:"), info.capacity);
- vshPrint(ctl, "%-15s %llu\n", _("Allocation:"), info.allocation);
- vshPrint(ctl, "%-15s %llu\n", _("Physical:"), info.physical);
+ human = vshCommandOptBool(cmd, "human");
+
+ if (!human) {
+ vshPrint(ctl, "%-15s %llu\n", _("Capacity:"), info.capacity);
+ vshPrint(ctl, "%-15s %llu\n", _("Allocation:"), info.allocation);
+ vshPrint(ctl, "%-15s %llu\n", _("Physical:"), info.physical);
+ } else {
+ double sizeCapacity = 1;
+ const char *sizeStr = "B";
+
+ /* Check if capacity can be in K. */
+ if (info.capacity >= 1024) {
+ sizeCapacity = 1024.0;
+ sizeStr = "K";
+ }
+ /* Check if capacity can be in M. */
+ if (info.capacity >= 1048576) {
+ sizeCapacity = 1048576.0;
+ sizeStr = "M";
+ }
+ /* Check if capacity can be in G. */
+ if (info.capacity >= 1073741824) {
+ sizeCapacity = 1073741824.0;
+ sizeStr = "G";
+ }
+
+ vshPrint(ctl, "%-15s %.1f%s\n", _("Capacity:"),
+ info.capacity/sizeCapacity, sizeStr);
+ vshPrint(ctl, "%-15s %.1f%s\n", _("Allocation:"),
+ info.allocation/sizeCapacity, sizeStr);
+ vshPrint(ctl, "%-15s %.1f%s\n", _("Physical:"),
+ info.physical/sizeCapacity, sizeStr);
+ }
ret = true;
diff --git a/tools/virsh.pod b/tools/virsh.pod
index e16f62f..9f67de2 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -841,12 +841,13 @@ B<domstate> command says that a domain was paused due to I/O error.
The B<domblkerror> command lists all block devices in error state and
the error seen on each of them.
-=item B<domblkinfo> I<domain> I<block-device>
+=item B<domblkinfo> I<domain> I<block-device> [I<--human>]
Get block device size info for a domain. A I<block-device> corresponds
to a unique target name (<target dev='name'/>) or source file (<source
file='name'/>) for one of the disk devices attached to I<domain> (see
-also B<domblklist> for listing these names).
+also B<domblklist> for listing these names). If I<--human> is set, the
+output will have a human readable design.
=item B<domblklist> I<domain> [I<--inactive>] [I<--details>]
--
2.7.4
2
1