]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
repart: Default to swap format for swap partitions
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 16 Aug 2023 14:53:02 +0000 (16:53 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 16 Aug 2023 19:26:04 +0000 (21:26 +0200)
src/partition/repart.c
test/TEST-58-REPART/test.sh

index de7de65d721fd4529dccc676d4af5e6f80344d81..06494dd5b9dbcc377b5d86191cef00a669825e6a 100644 (file)
@@ -1733,11 +1733,20 @@ static int partition_read_definition(Partition *p, const char *path, const char
                 return log_syntax(NULL, LOG_ERR, path, 1, SYNTHETIC_ERRNO(EINVAL),
                                   "Format=swap and CopyFiles= cannot be combined, refusing.");
 
-        if (!p->format && (!strv_isempty(p->copy_files) || !strv_isempty(p->make_directories) || (p->encrypt != ENCRYPT_OFF && !(p->copy_blocks_path || p->copy_blocks_auto)))) {
-                /* Pick "vfat" as file system for esp and xbootldr partitions, otherwise default to "ext4". */
-                p->format = strdup(IN_SET(p->type.designator, PARTITION_ESP, PARTITION_XBOOTLDR) ? "vfat" : "ext4");
-                if (!p->format)
-                        return log_oom();
+        if (!p->format) {
+                const char *format = NULL;
+
+                if (!strv_isempty(p->copy_files) || !strv_isempty(p->make_directories) || (p->encrypt != ENCRYPT_OFF && !(p->copy_blocks_path || p->copy_blocks_auto)))
+                        /* Pick "vfat" as file system for esp and xbootldr partitions, otherwise default to "ext4". */
+                        format = IN_SET(p->type.designator, PARTITION_ESP, PARTITION_XBOOTLDR) ? "vfat" : "ext4";
+                else if (p->type.designator == PARTITION_SWAP)
+                        format = "swap";
+
+                if (format) {
+                        p->format = strdup(format);
+                        if (!p->format)
+                                return log_oom();
+                }
         }
 
         if (p->minimize != MINIMIZE_OFF && !p->format && p->verity != VERITY_HASH)
index 06b1313477a134020cf4514d4bdb301afec872f9..14898b5d39023f17db4287fe68d7964c77e9d186 100755 (executable)
@@ -22,6 +22,7 @@ test_append_files() {
     fi
 
     inst_binary mcopy
+    image_install mkswap
     if command -v openssl >/dev/null 2>&1; then
         inst_binary openssl
     fi