]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
homework: turn off compression for files backing LUKS volumes
authorLennart Poettering <lennart@poettering.net>
Thu, 4 Nov 2021 20:58:22 +0000 (21:58 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 12 Nov 2021 21:13:48 +0000 (22:13 +0100)
We need random access read/write files, and compression sucks for that,
hence disable it on the underlying files.

Compression in the home directory might be desirable, but if so it
should be done *inside* the home dir fs, not on the underlying fs.

src/home/homework-luks.c

index 7aee82a980e5fbc8ead88abd6cf52d8f0687a89c..ae101dd5bb65d4bf2d429d545d70774112fc007b 100644 (file)
@@ -2155,8 +2155,8 @@ int home_create_luks(
 
                 setup->temporary_image_path = TAKE_PTR(t);
 
-                r = chattr_fd(setup->image_fd, FS_NOCOW_FL, FS_NOCOW_FL, NULL);
-                if (r < 0)
+                r = chattr_full(t, setup->image_fd, FS_NOCOW_FL|FS_NOCOMP_FL, FS_NOCOW_FL|FS_NOCOMP_FL, NULL, NULL, CHATTR_FALLBACK_BITWISE);
+                if (r < 0 && r != -ENOANO) /* ENOANO → some bits didn't work; which we skip logging about because chattr_full() already debug logs about those flags */
                         log_full_errno(ERRNO_IS_NOT_SUPPORTED(r) ? LOG_DEBUG : LOG_WARNING, r,
                                        "Failed to set file attributes on %s, ignoring: %m", setup->temporary_image_path);