]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/mount.h
9318444249c33e5838dd0c01551eae35140ac212
[thirdparty/systemd.git] / src / mount.h
1 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3 #ifndef foomounthfoo
4 #define foomounthfoo
5
6 /***
7 This file is part of systemd.
8
9 Copyright 2010 Lennart Poettering
10
11 systemd is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2 of the License, or
14 (at your option) any later version.
15
16 systemd is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 General Public License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
23 ***/
24
25 typedef struct Mount Mount;
26
27 #include "unit.h"
28
29 typedef enum MountState {
30 MOUNT_DEAD,
31 MOUNT_MOUNTING, /* /bin/mount is running, but the mount is not done yet. */
32 MOUNT_MOUNTING_DONE, /* /bin/mount is running, and the mount is done. */
33 MOUNT_MOUNTED,
34 MOUNT_REMOUNTING,
35 MOUNT_UNMOUNTING,
36 MOUNT_MOUNTING_SIGTERM,
37 MOUNT_MOUNTING_SIGKILL,
38 MOUNT_REMOUNTING_SIGTERM,
39 MOUNT_REMOUNTING_SIGKILL,
40 MOUNT_UNMOUNTING_SIGTERM,
41 MOUNT_UNMOUNTING_SIGKILL,
42 MOUNT_FAILED,
43 _MOUNT_STATE_MAX,
44 _MOUNT_STATE_INVALID = -1
45 } MountState;
46
47 typedef enum MountExecCommand {
48 MOUNT_EXEC_MOUNT,
49 MOUNT_EXEC_UNMOUNT,
50 MOUNT_EXEC_REMOUNT,
51 _MOUNT_EXEC_COMMAND_MAX,
52 _MOUNT_EXEC_COMMAND_INVALID = -1
53 } MountExecCommand;
54
55 typedef struct MountParameters {
56 char *what;
57 char *options;
58 char *fstype;
59 int passno;
60 } MountParameters;
61
62 typedef enum MountResult {
63 MOUNT_SUCCESS,
64 MOUNT_FAILURE_RESOURCES,
65 MOUNT_FAILURE_TIMEOUT,
66 MOUNT_FAILURE_EXIT_CODE,
67 MOUNT_FAILURE_SIGNAL,
68 MOUNT_FAILURE_CORE_DUMP,
69 _MOUNT_RESULT_MAX,
70 _MOUNT_RESULT_INVALID = -1
71 } MountResult;
72
73 struct Mount {
74 Unit meta;
75
76 char *where;
77
78 MountParameters parameters_etc_fstab;
79 MountParameters parameters_proc_self_mountinfo;
80 MountParameters parameters_fragment;
81
82 bool from_etc_fstab:1;
83 bool from_proc_self_mountinfo:1;
84 bool from_fragment:1;
85
86 /* Used while looking for mount points that vanished or got
87 * added from/to /proc/self/mountinfo */
88 bool is_mounted:1;
89 bool just_mounted:1;
90 bool just_changed:1;
91
92 MountResult result;
93 MountResult reload_result;
94
95 mode_t directory_mode;
96
97 usec_t timeout_usec;
98
99 ExecCommand exec_command[_MOUNT_EXEC_COMMAND_MAX];
100 ExecContext exec_context;
101
102 MountState state, deserialized_state;
103
104 ExecCommand* control_command;
105 MountExecCommand control_command_id;
106 pid_t control_pid;
107
108 Watch timer_watch;
109 };
110
111 extern const UnitVTable mount_vtable;
112
113 void mount_fd_event(Manager *m, int events);
114
115 const char* mount_state_to_string(MountState i);
116 MountState mount_state_from_string(const char *s);
117
118 const char* mount_exec_command_to_string(MountExecCommand i);
119 MountExecCommand mount_exec_command_from_string(const char *s);
120
121 const char* mount_result_to_string(MountResult i);
122 MountResult mount_result_from_string(const char *s);
123
124 #endif