From: Lennart Poettering Date: Thu, 9 Apr 2020 09:57:15 +0000 (+0200) Subject: homed: when creating home directory as btrfs inside luks volume, place subvol inside it X-Git-Tag: v246-rc1~609^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F15376%2Fhead;p=thirdparty%2Fsystemd.git homed: when creating home directory as btrfs inside luks volume, place subvol inside it When managing a home directory as LUKS image we currently place a directory at the top that contains the actual home directory (so that the home directory of the user won't be cluttered by lost-found and suchlike). On btrfs let's make that a subvol though. This is a good idea so that possibly later on we can make use of this for automatic history management. Fixes: #15121 --- diff --git a/src/home/homework-luks.c b/src/home/homework-luks.c index de7535fc600..5eb67bc2b3b 100644 --- a/src/home/homework-luks.c +++ b/src/home/homework-luks.c @@ -8,6 +8,7 @@ #include "blkid-util.h" #include "blockdev-util.h" +#include "btrfs-util.h" #include "chattr-util.h" #include "dm-util.h" #include "errno-util.h" @@ -2037,8 +2038,10 @@ int home_create_luks( goto fail; } - if (mkdir(subdir, 0700) < 0) { - r = log_error_errno(errno, "Failed to create user directory in mounted image file: %m"); + /* Prefer using a btrfs subvolume if we can, fall back to directory otherwise */ + r = btrfs_subvol_make_fallback(subdir, 0700); + if (r < 0) { + log_error_errno(r, "Failed to create user directory in mounted image file: %m"); goto fail; }