home: respect user record mount flags
This commit is contained in:
parent
9f50cdd34a
commit
6a220cdb0b
|
@ -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;
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -3,6 +3,6 @@
|
|||
|
||||
#include <stdbool.h>
|
||||
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue