]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/home/homework.h
Merge pull request #21162 from poettering/homed-cifs-improvements
[thirdparty/systemd.git] / src / home / homework.h
index 5fa4b653e2b9dac828964229b47ab67cb816e8c6..1b56fbbd8f1e91912d8a9dfdd853c738d2c3d892 100644 (file)
@@ -28,15 +28,17 @@ typedef struct HomeSetup {
         void *volume_key;
         size_t volume_key_size;
 
-        bool undo_dm;
-        bool undo_mount;
-        bool do_offline_fitrim;
-        bool do_offline_fallocate;
-        bool do_mark_clean;
-        bool do_drop_caches;
+        bool undo_dm:1;
+        bool undo_mount:1;            /* Whether to unmount /run/systemd/user-home-mount */
+        bool do_offline_fitrim:1;
+        bool do_offline_fallocate:1;
+        bool do_mark_clean:1;
+        bool do_drop_caches:1;
 
         uint64_t partition_offset;
         uint64_t partition_size;
+
+        char *mount_suffix;           /* The directory to use as home dir is this path below /run/systemd/user-home-mount */
 } HomeSetup;
 
 typedef struct PasswordCache {
@@ -66,14 +68,20 @@ static inline bool password_cache_contains(const PasswordCache *cache, const cha
 /* Various flags for the operation of setting up a home directory */
 typedef enum HomeSetupFlags {
         HOME_SETUP_ALREADY_ACTIVATED = 1 << 0, /* Open an already activated home, rather than activate it afresh */
+
+        /* CIFS backend: */
+        HOME_SETUP_CIFS_MKDIR        = 1 << 1, /* Create CIFS subdir when missing */
 } HomeSetupFlags;
 
 int home_setup_done(HomeSetup *setup);
 
+int home_setup_undo_mount(HomeSetup *setup, int level);
+
 int home_setup(UserRecord *h, HomeSetupFlags flags, PasswordCache *cache, HomeSetup *setup, UserRecord **ret_header_home);
 
 int home_refresh(UserRecord *h, HomeSetup *setup, UserRecord *header_home, PasswordCache *cache, struct statfs *ret_statfs, UserRecord **ret_new_home);
 
+int home_maybe_shift_uid(UserRecord *h, HomeSetup *setup);
 int home_populate(UserRecord *h, int dir_fd);
 
 int home_load_embedded_identity(UserRecord *h, int root_fd, UserRecord *header_home, UserReconcileMode mode, PasswordCache *cache, UserRecord **ret_embedded_home, UserRecord **ret_new_home);
@@ -83,3 +91,5 @@ int home_extend_embedded_identity(UserRecord *h, UserRecord *used, HomeSetup *se
 int user_record_authenticate(UserRecord *h, UserRecord *secret, PasswordCache *cache, bool strict_verify);
 
 int home_sync_and_statfs(int root_fd, struct statfs *ret);
+
+#define HOME_RUNTIME_WORK_DIR "/run/systemd/user-home-mount"