]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/core/mount.h
journal: allow watching symlinked journal dirs
[thirdparty/systemd.git] / src / core / mount.h
CommitLineData
03467c88 1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
5cb5a6ff
LP
2
3#ifndef foomounthfoo
4#define foomounthfoo
5
a7334b09
LP
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
5430f7f2
LP
12 under the terms of the GNU Lesser General Public License as published by
13 the Free Software Foundation; either version 2.1 of the License, or
a7334b09
LP
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
5430f7f2 19 Lesser General Public License for more details.
a7334b09 20
5430f7f2 21 You should have received a copy of the GNU Lesser General Public License
a7334b09
LP
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
23***/
24
5cb5a6ff
LP
25typedef struct Mount Mount;
26
87f0e418 27#include "unit.h"
5cb5a6ff
LP
28
29typedef enum MountState {
30 MOUNT_DEAD,
e537352b
LP
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. */
5cb5a6ff 33 MOUNT_MOUNTED,
e537352b 34 MOUNT_REMOUNTING,
5cb5a6ff 35 MOUNT_UNMOUNTING,
e537352b
LP
36 MOUNT_MOUNTING_SIGTERM,
37 MOUNT_MOUNTING_SIGKILL,
38 MOUNT_REMOUNTING_SIGTERM,
39 MOUNT_REMOUNTING_SIGKILL,
40 MOUNT_UNMOUNTING_SIGTERM,
41 MOUNT_UNMOUNTING_SIGKILL,
fdf20a31 42 MOUNT_FAILED,
e537352b
LP
43 _MOUNT_STATE_MAX,
44 _MOUNT_STATE_INVALID = -1
5cb5a6ff
LP
45} MountState;
46
e537352b
LP
47typedef 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
55typedef struct MountParameters {
56 char *what;
57 char *options;
58 char *fstype;
9fff8a1f 59 int passno;
e537352b
LP
60} MountParameters;
61
9d2f5178
LP
62typedef 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
5cb5a6ff 73struct Mount {
ac155bb8 74 Unit meta;
5cb5a6ff 75
e537352b 76 char *where;
b08d03ff 77
e537352b
LP
78 MountParameters parameters_proc_self_mountinfo;
79 MountParameters parameters_fragment;
f50e0a01 80
f50e0a01 81 bool from_proc_self_mountinfo:1;
e537352b 82 bool from_fragment:1;
ef734fd6
LP
83
84 /* Used while looking for mount points that vanished or got
85 * added from/to /proc/self/mountinfo */
e537352b
LP
86 bool is_mounted:1;
87 bool just_mounted:1;
88 bool just_changed:1;
89
9d2f5178
LP
90 MountResult result;
91 MountResult reload_result;
e537352b 92
3e5235b0
LP
93 mode_t directory_mode;
94
7fab9d01
LP
95 usec_t timeout_usec;
96
e537352b
LP
97 ExecCommand exec_command[_MOUNT_EXEC_COMMAND_MAX];
98 ExecContext exec_context;
99
a16e1123 100 MountState state, deserialized_state;
e537352b 101
e537352b 102 ExecCommand* control_command;
a16e1123 103 MountExecCommand control_command_id;
e537352b
LP
104 pid_t control_pid;
105
106 Watch timer_watch;
5cb5a6ff
LP
107};
108
87f0e418 109extern const UnitVTable mount_vtable;
5cb5a6ff 110
ef734fd6
LP
111void mount_fd_event(Manager *m, int events);
112
a16e1123
LP
113const char* mount_state_to_string(MountState i);
114MountState mount_state_from_string(const char *s);
115
116const char* mount_exec_command_to_string(MountExecCommand i);
117MountExecCommand mount_exec_command_from_string(const char *s);
118
9d2f5178
LP
119const char* mount_result_to_string(MountResult i);
120MountResult mount_result_from_string(const char *s);
121
5cb5a6ff 122#endif