Browse Source

storage/reflink: tweak FICLONE definition

Get rid of an otherwise unused module-level variable (HOST_MACHINE), and
show the relevant file (reflink.py) in the error message:

Traceback (most recent call last):
  File "/usr/bin/qubesd", line 2, in <module>
    from qubes.tools.qubesd import main
  File "/usr/lib/python3.8/site-packages/qubes/__init__.py", line 801, in <module>
    from qubes.app import Qubes
  File "/usr/lib/python3.8/site-packages/qubes/app.py", line 64, in <module>
    import qubes.storage.reflink
  File "/usr/lib/python3.8/site-packages/qubes/storage/reflink.py", line 46, in <module>
    FICLONE = {
KeyError: 'armv7l'
qubesd.service: Main process exited, code=exited, status=1/FAILURE
Rusty Bird 3 years ago
parent
commit
c56f06166b
1 changed files with 12 additions and 12 deletions
  1. 12 12
      qubes/storage/reflink.py

+ 12 - 12
qubes/storage/reflink.py

@@ -30,28 +30,27 @@ import functools
 import glob
 import logging
 import os
+import platform
 import subprocess
 import tempfile
-import platform
-import sys
 from contextlib import suppress
 
 import qubes.storage
 import qubes.utils
 
-HOST_MACHINE = platform.machine()
 
-if HOST_MACHINE == "x86_64":
-    FICLONE = 0x40049409       # defined in <linux/fs.h>
-elif HOST_MACHINE == "ppc64le":
-    FICLONE = 0x80049409
-else:
-    print("Missing IOCTL definitions for platform {}".format(HOST_MACHINE))
-    sys.exit(1)
-
-LOOP_SET_CAPACITY = 0x4C07  # defined in <linux/loop.h>
 LOGGER = logging.getLogger('qubes.storage.reflink')
 
+# defined in <linux/loop.h>
+LOOP_SET_CAPACITY = 0x4C07
+
+# defined in <linux/fs.h>
+FICLONE = {
+    'x86_64':  0x40049409,
+    'ppc64le': 0x80049409,
+}[platform.machine()]
+
+
 def _coroutinized(function):
     ''' Wrap a synchronous function in a coroutine that runs the
         function via the event loop's ThreadPool-based default
@@ -64,6 +63,7 @@ def _coroutinized(function):
             None, functools.partial(function, *args, **kwargs)))
     return wrapper
 
+
 class ReflinkPool(qubes.storage.Pool):
     driver = 'file-reflink'
     _known_dir_path_prefixes = ['appvms', 'vm-templates']