diff options
author | Lennart Poettering <lennart@poettering.net> | 2021-01-22 17:40:51 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2021-08-17 10:08:58 +0200 |
commit | d32a5841fb1aabc0e2fd138d78b5f66d31b3ba77 (patch) | |
tree | 43da4bbf04be82965f3a4f4657e8fd03ecd96ca1 /src/import/import-common.h | |
parent | 235be6bcea86304e7538d1ff720b14beca2914e8 (diff) | |
download | systemd-d32a5841fb1aabc0e2fd138d78b5f66d31b3ba77.tar.gz |
import: add new "--direct" mode + add controls for turning certain features on/off
This reworks/modernizes the tar/raw import logic and adds the following
new features:
- Adds the ability to control btrfs subvol and quota behaviour which was
previously always on via an env var and cmdline arg
- Adds control whether to sync() stuff after writing it, similar via env
var + cmdline arg
- Similar, the QCOW2 unpacking logic that was previously the implied
default may now be controlled via env var + cmdline arg.
- adds a "direct" mode. In this mode, the systemd-import tool can be
used as a simple tool for decompressing/unpacking/installing arbitrary
files, without all the additional meta data and auxiliary resources,
i.e. outside of the immediate disk image context. Via the new
--offset= and --size-max= switches the downloaded data can be written
to specific locations of a file (which is particularly useful to use
the tool to download fs images and write them to a partition location
before actually creating the partition).
We'll later use the latter feature for "sysupdate" concept, where images
can be directly be written to partitions. That way the systemd-import
binary will be used as backend for both "systemd-importd" and
"systemd-sysupdate" and share most of the same code.
Diffstat (limited to 'src/import/import-common.h')
-rw-r--r-- | src/import/import-common.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/import/import-common.h b/src/import/import-common.h index d7e8fc485f..36052a2952 100644 --- a/src/import/import-common.h +++ b/src/import/import-common.h @@ -3,11 +3,19 @@ #include <sys/types.h> +#include "sd-event.h" + typedef enum ImportFlags { - IMPORT_FORCE = 1 << 0, /* replace existing image */ - IMPORT_READ_ONLY = 1 << 1, /* make generated image read-only */ + IMPORT_FORCE = 1 << 0, /* replace existing image */ + IMPORT_READ_ONLY = 1 << 1, /* make generated image read-only */ + IMPORT_BTRFS_SUBVOL = 1 << 2, /* tar: preferably create images as btrfs subvols */ + IMPORT_BTRFS_QUOTA = 1 << 3, /* tar: set up btrfs quota for new subvolume as child of parent subvolume */ + IMPORT_CONVERT_QCOW2 = 1 << 4, /* raw: if we detect a qcow2 image, unpack it */ + IMPORT_DIRECT = 1 << 5, /* import without rename games */ + IMPORT_SYNC = 1 << 6, /* fsync() right before we are done */ - IMPORT_FLAGS_MASK = IMPORT_FORCE|IMPORT_READ_ONLY, + IMPORT_FLAGS_MASK_TAR = IMPORT_FORCE|IMPORT_READ_ONLY|IMPORT_BTRFS_SUBVOL|IMPORT_BTRFS_QUOTA|IMPORT_DIRECT|IMPORT_SYNC, + IMPORT_FLAGS_MASK_RAW = IMPORT_FORCE|IMPORT_READ_ONLY|IMPORT_CONVERT_QCOW2|IMPORT_DIRECT|IMPORT_SYNC, } ImportFlags; int import_make_read_only_fd(int fd); @@ -17,3 +25,7 @@ int import_fork_tar_c(const char *path, pid_t *ret); int import_fork_tar_x(const char *path, pid_t *ret); int import_mangle_os_tree(const char *path); + +bool import_validate_local(const char *name, ImportFlags flags); + +int import_allocate_event_with_signals(sd_event **ret); |