core-admin/qubes/storage
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
..
__init__.py storage: allow import_data and import_data_end be coroutines 2018-10-23 16:53:35 +02:00
file.py Fix issues found by pylint 2.0 2018-07-15 23:51:15 +02:00
kernels.py storage: add Pool.included_in() method for checking nested pools 2018-03-20 16:53:39 +01:00
lvm.py storage: convert lvm driver to async version 2018-10-23 16:53:35 +02:00
README.md Merge remote-tracking branch 'marmarek/master' into core3-devel 2016-03-03 01:13:51 +01:00
reflink.py storage/reflink: use context managers in is_supported() 2018-09-13 19:46:48 +00:00

WNI File storage

Before v3.1 there existed a draft wni storage. You can find it in the git history

(it was in /core/storage directory, now gone)