From c30131633b0d1e6639e494bce77ed37c269c82d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolai=20S=C3=B8borg?= Date: Tue, 12 Sep 2017 01:57:49 +0200 Subject: [PATCH 1/2] Fix service qubesd not working with some locales On certain locales (e.g. danish) `usage_percent` will output a comma-separated number, which will make `attr` point the last two decimal points, s.t. `return vol_info['attr'][4] == 'a'` (in the `verify` func) will fail and `qubesd` wont run. --- qubes/storage/lvm.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/qubes/storage/lvm.py b/qubes/storage/lvm.py index 680607da..df9fec95 100644 --- a/qubes/storage/lvm.py +++ b/qubes/storage/lvm.py @@ -142,7 +142,7 @@ class ThinPool(qubes.storage.Pool): def init_cache(log=logging.getLogger('qubes.storage.lvm')): cmd = ['lvs', '--noheadings', '-o', 'vg_name,pool_lv,name,lv_size,data_percent,lv_attr,origin', - '--units', 'b', '--separator', ','] + '--units', 'b', '--separator', ';'] if os.getuid() != 0: cmd.insert(0, 'sudo') p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, @@ -159,11 +159,11 @@ def init_cache(log=logging.getLogger('qubes.storage.lvm')): for line in out.splitlines(): line = line.decode().strip() pool_name, pool_lv, name, size, usage_percent, attr, \ - origin = line.split(',', 6) + origin = line.split(';', 7) if '' in [pool_name, pool_lv, name, size, usage_percent]: continue name = pool_name + "/" + name - size = int(size[:-1]) + size = int(size[:-1]) # Remove 'B' suffix usage = int(size / 100 * float(usage_percent)) result[name] = {'size': size, 'usage': usage, 'pool_lv': pool_lv, 'attr': attr, 'origin': origin} From 9d797cc8647aae4d7c0e880dff0642694f4d294e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolai=20S=C3=B8borg?= Date: Wed, 13 Sep 2017 18:50:02 +0200 Subject: [PATCH 2/2] lvm->init_cache: fix incorrect max splits --- qubes/storage/lvm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qubes/storage/lvm.py b/qubes/storage/lvm.py index df9fec95..fc90b3db 100644 --- a/qubes/storage/lvm.py +++ b/qubes/storage/lvm.py @@ -159,7 +159,7 @@ def init_cache(log=logging.getLogger('qubes.storage.lvm')): for line in out.splitlines(): line = line.decode().strip() pool_name, pool_lv, name, size, usage_percent, attr, \ - origin = line.split(';', 7) + origin = line.split(';', 6) if '' in [pool_name, pool_lv, name, size, usage_percent]: continue name = pool_name + "/" + name