From: Tudor Roman Date: Sun, 24 May 2020 10:25:13 +0000 (+0300) Subject: home: respect user record mount flags X-Git-Tag: v246-rc1~301 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6a220cdb0b7d5ed787e4bfabc252fc5435f276eb;p=thirdparty%2Fsystemd.git home: respect user record mount flags --- diff --git a/src/home/homework-cifs.c b/src/home/homework-cifs.c index 1510031a38a..27c92e16e72 100644 --- a/src/home/homework-cifs.c +++ b/src/home/homework-cifs.c @@ -28,7 +28,7 @@ int home_prepare_cifs( char **pw; int r; - r = home_unshare_and_mount(NULL, NULL, false); + r = home_unshare_and_mount(NULL, NULL, false, user_record_mount_flags(h)); if (r < 0) return r; diff --git a/src/home/homework-luks.c b/src/home/homework-luks.c index 44face33898..e9b2fc0c0da 100644 --- a/src/home/homework-luks.c +++ b/src/home/homework-luks.c @@ -1156,7 +1156,7 @@ int home_prepare_luks( if (r < 0) goto fail; - r = home_unshare_and_mount(setup->dm_node, fstype, user_record_luks_discard(h)); + r = home_unshare_and_mount(setup->dm_node, fstype, user_record_luks_discard(h), user_record_mount_flags(h)); if (r < 0) goto fail; @@ -2079,7 +2079,7 @@ int home_create_luks( log_info("Formatting file system completed."); - r = home_unshare_and_mount(dm_node, fstype, user_record_luks_discard(h)); + r = home_unshare_and_mount(dm_node, fstype, user_record_luks_discard(h), user_record_mount_flags(h)); if (r < 0) goto fail; @@ -2284,7 +2284,7 @@ static int can_resize_fs(int fd, uint64_t old_size, uint64_t new_size) { return CAN_RESIZE_ONLINE; } -static int ext4_offline_resize_fs(HomeSetup *setup, uint64_t new_size, bool discard) { +static int ext4_offline_resize_fs(HomeSetup *setup, uint64_t new_size, bool discard, unsigned long flags) { _cleanup_free_ char *size_str = NULL; bool re_open = false, re_mount = false; pid_t resize_pid, fsck_pid; @@ -2354,7 +2354,7 @@ static int ext4_offline_resize_fs(HomeSetup *setup, uint64_t new_size, bool disc /* Re-establish mounts and reopen the directory */ if (re_mount) { - r = home_mount_node(setup->dm_node, "ext4", discard); + r = home_mount_node(setup->dm_node, "ext4", discard, flags); if (r < 0) return r; @@ -2774,7 +2774,7 @@ int home_resize_luks( if (resize_type == CAN_RESIZE_ONLINE) r = resize_fs(setup->root_fd, new_fs_size, NULL); else - r = ext4_offline_resize_fs(setup, new_fs_size, user_record_luks_discard(h)); + r = ext4_offline_resize_fs(setup, new_fs_size, user_record_luks_discard(h), user_record_mount_flags(h)); if (r < 0) return log_error_errno(r, "Failed to resize file system: %m"); diff --git a/src/home/homework-mount.c b/src/home/homework-mount.c index 9e1116840de..51c0a386494 100644 --- a/src/home/homework-mount.c +++ b/src/home/homework-mount.c @@ -20,7 +20,7 @@ static const char *mount_options_for_fstype(const char *fstype) { return NULL; } -int home_mount_node(const char *node, const char *fstype, bool discard) { +int home_mount_node(const char *node, const char *fstype, bool discard, unsigned long flags) { _cleanup_free_ char *joined = NULL; const char *options, *discard_option; int r; @@ -38,7 +38,7 @@ int home_mount_node(const char *node, const char *fstype, bool discard) { } else options = discard_option; - r = mount_verbose(LOG_ERR, node, "/run/systemd/user-home-mount", fstype, MS_NODEV|MS_NOSUID|MS_RELATIME, strempty(options)); + r = mount_verbose(LOG_ERR, node, "/run/systemd/user-home-mount", fstype, flags|MS_RELATIME, strempty(options)); if (r < 0) return r; @@ -46,7 +46,7 @@ int home_mount_node(const char *node, const char *fstype, bool discard) { return 0; } -int home_unshare_and_mount(const char *node, const char *fstype, bool discard) { +int home_unshare_and_mount(const char *node, const char *fstype, bool discard, unsigned long flags) { int r; if (unshare(CLONE_NEWNS) < 0) @@ -59,7 +59,7 @@ int home_unshare_and_mount(const char *node, const char *fstype, bool discard) { (void) mkdir_p("/run/systemd/user-home-mount", 0700); if (node) - return home_mount_node(node, fstype, discard); + return home_mount_node(node, fstype, discard, flags); return 0; } diff --git a/src/home/homework-mount.h b/src/home/homework-mount.h index d926756f7bc..cf7c8cfcab4 100644 --- a/src/home/homework-mount.h +++ b/src/home/homework-mount.h @@ -3,6 +3,6 @@ #include -int home_mount_node(const char *node, const char *fstype, bool discard); -int home_unshare_and_mount(const char *node, const char *fstype, bool discard); +int home_mount_node(const char *node, const char *fstype, bool discard, unsigned long flags); +int home_unshare_and_mount(const char *node, const char *fstype, bool discard, unsigned long flags); int home_move_mount(const char *user_name_and_realm, const char *target);