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 5505 : DEFINE_CAST(MOUNT, Mount);