From 0be94a199e648ab9e10f0537a827961a16164f7f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 9 Apr 2020 11:57:15 +0200 Subject: [PATCH] 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 --- src/home/homework-luks.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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; } -- 2.47.3