core-admin/qubes/tests
Marek Marczykowski-Górecki b65fdf9700
storage: convert lvm driver to async version
LVM operations can take significant amount of time. This is especially
visible when stopping a VM (`vm.storage.stop()`) - in that time the
whole qubesd freeze for about 2 seconds.

Fix this by making all the ThinVolume methods a coroutines (where
supported). Each public coroutine is also wrapped with locking on
volume._lock to avoid concurrency-related problems.
This all also require changing internal helper functions to
coroutines. There are two functions that still needs to be called from
non-coroutine call sites:
 - init_cache/reset_cache (initial cache fill, ThinPool.setup())
 - qubes_lvm (ThinVolume.export()

So, those two functions need to live in two variants. Extract its common
code to separate functions to reduce code duplications.

Fixes QubesOS/qubes-issues#4283
2018-10-23 16:53:35 +02:00
..
integ tests: use smaller root.img in backupcompatibility tests 2018-10-15 05:24:24 +02:00
tools Change license to LGPL v2.1+ 2017-10-12 00:11:50 +02:00
vm Add default_qrexec_timeout to qubes-prefs 2018-09-16 18:42:48 +00:00
__init__.py tests: add search based on window class to wait_for_window 2018-10-15 05:08:25 +02:00
api_admin.py app: uncouple pool setup from loading initial configuration 2018-09-11 23:50:25 +00:00
api_misc.py Update windows-related feature requests 2018-07-16 22:02:58 +02:00
api.py Change license to LGPL v2.1+ 2017-10-12 00:11:50 +02:00
app.py tests/app: test varlibqubes pool driver selection 2018-09-11 23:50:33 +00:00
devices_block.py Change license to LGPL v2.1+ 2017-10-12 00:11:50 +02:00
devices.py Change license to LGPL v2.1+ 2017-10-12 00:11:50 +02:00
events.py events: add support for wildcard event handlers 2018-01-06 00:40:19 +01:00
ext.py ext/services: mechanism for advertising supported services 2018-10-23 16:47:39 +02:00
extra.py Merge remote-tracking branch 'qubesos/pr/228' 2018-09-07 01:06:59 +02:00
firewall.py tests: fix firewall tests after 6e8e48e3 "Avoid UTC datetime" 2018-03-22 01:47:41 +01:00
init.py remove unused netid code 2017-11-11 02:37:37 +01:00
run.py Change license to LGPL v2.1+ 2017-10-12 00:11:50 +02:00
storage_file.py Merge branch 'devel-storage-fixes' 2018-03-21 02:06:25 +01:00
storage_kernels.py storage/kernel: skip modules.img block device if kernel dir doesn't have it 2018-02-27 04:35:05 +01:00
storage_lvm.py storage: convert lvm driver to async version 2018-10-23 16:53:35 +02:00
storage_reflink.py tests/storage_reflink: test some file-reflink helpers 2018-09-11 23:50:32 +00:00
storage.py app: create /var/lib/qubes as file-reflink if supported 2018-09-11 23:50:26 +00:00
tarwriter.py Change license to LGPL v2.1+ 2017-10-12 00:11:50 +02:00