Go to file
Marek Marczykowski-Górecki dd50e300c3
Fix multiple qmemman issues
First the main bug: when meminfo xenstore watch fires, in some cases
(just after starting some domain) XS_Watcher refreshes internal list of
domains before processing the event. This is done specifically to
include new domain in there. But the opposite could happen too - the
domain could be destroyed. In this case refres_meminfo() function raises
an exception, which isn't handled and interrupts the whole xenstore
watch loop. This issue is likely to be triggered by killing the domain,
as this way it could disappear shortly after writing updated meminfo
entry. In case of proper shutdown, meminfo-writer is stopped earlier and
do not write updates just before domain destroy.
Fix this by checking if the requested domain is still there just after
refreshing the list.

Then, catch exceptions in xenstore watch handling functions, to not
interrupt xenstore watch loop. If it gets interrupted, qmemman basically
stops memory balancing.

And finally, clear force_refresh_domain_list flag after refreshing the
domain list. That missing line caused domain refresh at every meminfo
change, making it use some more CPU time.

While at it, change "EOF" log message to something a bit more
meaningful.

Thanks @conorsch for capturing valuable logs.

Fixes QubesOS/qubes-issues#4890
2020-04-01 03:46:29 +02:00
ci Move pylint configuration into standard location 2019-09-27 16:29:20 +02:00
contrib Remove python2 compat __future__ imports 2020-02-15 17:33:34 +00:00
doc doc/tests: extend qubes-specific quirks in tests 2019-11-30 04:38:10 +01:00
etc Replace pool config parsing logic 2016-04-25 07:16:37 +02:00
linux cleanup-dispvms: fix python shebang 2019-11-22 21:39:35 +01:00
qubes Fix multiple qmemman issues 2020-04-01 03:46:29 +02:00
qubes-rpc Make /etc/qubes-rpc/qubes.ConnectTCP executable 2020-03-10 11:56:47 +01:00
qubes-rpc-policy Add policy for qubes.VMExecGUI 2020-01-24 19:07:40 +01:00
qvm-tools qvm-sync-clock: Do not fail if clockvm is not set 2020-03-08 22:39:11 -04:00
relaxng Change license to LGPL v2.1+ 2017-10-12 00:11:50 +02:00
rpm_spec Support for AudioVM 2020-03-08 17:05:33 +01:00
templates Pass network parameters to linux-stubdom 2020-01-29 09:45:05 +01:00
test-packages Fix starting VM with kernel=None 2017-12-14 23:26:52 +01:00
.gitignore run-tests: Script for running tests in repo 2016-04-20 13:54:56 +02:00
.pylintrc pylint: disable import-outside-toplevel 2019-09-27 16:29:20 +02:00
.travis.yml travis: switch to dom0 Fedora 31 2020-01-11 11:38:06 +01:00
installer.wxs windows/installer: configurable destination directory 2014-11-19 12:50:31 +01:00
LICENSE Change license to LGPL v2.1+ 2017-10-12 00:11:50 +02:00
Makefile Add policy for qubes.VMExecGUI 2020-01-24 19:07:40 +01:00
Makefile.builder rpm: integrate -doc package into main one 2017-05-12 18:43:35 +02:00
README.md Update readme 2017-10-16 04:16:23 +02:00
run-tests tests: rearrage LVM thin tests to run at least some in devel env 2017-05-12 18:10:17 +02:00
setup.cfg Add yapf configuration to setup.cfg 2016-07-21 12:11:34 +02:00
setup.py Support for AudioVM 2020-03-08 17:05:33 +01:00
version version 4.1.10 2020-03-15 03:50:01 +01:00

Qubes core, version 3

Build Status

This is master branch of the Qubes OS core.

API documentation is available: https://dev.qubes-os.org/projects/core-admin/en/latest/.