Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : #pragma once 3 : : 4 : : typedef struct Mount Mount; 5 : : 6 : : #include "kill.h" 7 : : #include "dynamic-user.h" 8 : : #include "unit.h" 9 : : 10 : : typedef enum MountExecCommand { 11 : : MOUNT_EXEC_MOUNT, 12 : : MOUNT_EXEC_UNMOUNT, 13 : : MOUNT_EXEC_REMOUNT, 14 : : _MOUNT_EXEC_COMMAND_MAX, 15 : : _MOUNT_EXEC_COMMAND_INVALID = -1 16 : : } MountExecCommand; 17 : : 18 : : typedef enum MountResult { 19 : : MOUNT_SUCCESS, 20 : : MOUNT_FAILURE_RESOURCES, /* a bit of a misnomer, just our catch-all error for errnos we didn't expect */ 21 : : MOUNT_FAILURE_TIMEOUT, 22 : : MOUNT_FAILURE_EXIT_CODE, 23 : : MOUNT_FAILURE_SIGNAL, 24 : : MOUNT_FAILURE_CORE_DUMP, 25 : : MOUNT_FAILURE_START_LIMIT_HIT, 26 : : MOUNT_FAILURE_PROTOCOL, 27 : : _MOUNT_RESULT_MAX, 28 : : _MOUNT_RESULT_INVALID = -1 29 : : } MountResult; 30 : : 31 : : typedef struct MountParameters { 32 : : char *what; 33 : : char *options; 34 : : char *fstype; 35 : : } MountParameters; 36 : : 37 : : /* Used while looking for mount points that vanished or got added from/to /proc/self/mountinfo */ 38 : : typedef enum MountProcFlags { 39 : : MOUNT_PROC_IS_MOUNTED = 1 << 0, 40 : : MOUNT_PROC_JUST_MOUNTED = 1 << 1, 41 : : MOUNT_PROC_JUST_CHANGED = 1 << 2, 42 : : } MountProcFlags; 43 : : 44 : : struct Mount { 45 : : Unit meta; 46 : : 47 : : char *where; 48 : : 49 : : MountParameters parameters_proc_self_mountinfo; 50 : : MountParameters parameters_fragment; 51 : : 52 : : bool from_proc_self_mountinfo:1; 53 : : bool from_fragment:1; 54 : : 55 : : MountProcFlags proc_flags; 56 : : 57 : : bool sloppy_options; 58 : : 59 : : bool lazy_unmount; 60 : : bool force_unmount; 61 : : 62 : : MountResult result; 63 : : MountResult reload_result; 64 : : 65 : : mode_t directory_mode; 66 : : 67 : : usec_t timeout_usec; 68 : : 69 : : ExecCommand exec_command[_MOUNT_EXEC_COMMAND_MAX]; 70 : : 71 : : ExecContext exec_context; 72 : : KillContext kill_context; 73 : : CGroupContext cgroup_context; 74 : : 75 : : ExecRuntime *exec_runtime; 76 : : DynamicCreds dynamic_creds; 77 : : 78 : : MountState state, deserialized_state; 79 : : 80 : : ExecCommand* control_command; 81 : : MountExecCommand control_command_id; 82 : : pid_t control_pid; 83 : : 84 : : sd_event_source *timer_event_source; 85 : : 86 : : unsigned n_retry_umount; 87 : : }; 88 : : 89 : : extern const UnitVTable mount_vtable; 90 : : 91 : : void mount_fd_event(Manager *m, int events); 92 : : 93 : : const char* mount_exec_command_to_string(MountExecCommand i) _const_; 94 : : MountExecCommand mount_exec_command_from_string(const char *s) _pure_; 95 : : 96 : : const char* mount_result_to_string(MountResult i) _const_; 97 : : MountResult mount_result_from_string(const char *s) _pure_; 98 : : 99 [ + - - + ]: 22334 : DEFINE_CAST(MOUNT, Mount);