diff --git a/qubes/storage/reflink.py b/qubes/storage/reflink.py index 8b9bfe0d..5f68b9cf 100644 --- a/qubes/storage/reflink.py +++ b/qubes/storage/reflink.py @@ -32,16 +32,26 @@ import logging import os import subprocess import tempfile +import platform +import sys from contextlib import contextmanager, suppress import qubes.storage import qubes.utils -FICLONE = 1074041865 # defined in , assuming sizeof(int)==4 +HOST_MACHINE = platform.machine() + +if HOST_MACHINE == "x86_64": + FICLONE = 0x40049409 # defined in +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 LOGGER = logging.getLogger('qubes.storage.reflink') - def _coroutinized(function): ''' Wrap a synchronous function in a coroutine that runs the function via the event loop's ThreadPool-based default