]>
Commit | Line | Data |
---|---|---|
53e1b683 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
4349cd7c LP |
2 | #pragma once |
3 | ||
4349cd7c | 4 | #include <mntent.h> |
11c3a366 | 5 | #include <stdio.h> |
4e036b7a | 6 | |
11c3a366 | 7 | #include "macro.h" |
4349cd7c | 8 | |
7d85383e TM |
9 | /* 4MB for contents of regular files, 64k inodes for directories, symbolic links and device specials, |
10 | using large storage array systems as a baseline */ | |
11 | #define TMPFS_LIMITS_DEV ",size=4m,nr_inodes=64k" | |
12 | /* Very little, if any use expected */ | |
13 | #define TMPFS_LIMITS_EMPTY_OR_ALMOST ",size=4m,nr_inodes=1k" | |
14 | #define TMPFS_LIMITS_SYS TMPFS_LIMITS_EMPTY_OR_ALMOST | |
15 | #define TMPFS_LIMITS_SYS_FS_CGROUP TMPFS_LIMITS_EMPTY_OR_ALMOST | |
b4e1563f TM |
16 | /* On an extremely small device with only 256MB of RAM, 20% of RAM for /run should be enough for re-exec of |
17 | PID1 because 16MB of free space is required. */ | |
18 | #define TMPFS_LIMITS_RUN ",size=20%,nr_inodes=800k" | |
7d85383e TM |
19 | /* 10% of RAM (using 16GB of RAM as a baseline) translates to 400k inodes (assuming 4k each) and 25% |
20 | translates to 1M inodes */ | |
21 | #define TMPFS_LIMITS_TMP ",size=10%,nr_inodes=400k" | |
22 | #define TMPFS_LIMITS_DEV_SHM TMPFS_LIMITS_TMP | |
7d85383e | 23 | #define TMPFS_LIMITS_TEMPORARY_FS TMPFS_LIMITS_TMP |
b4e1563f | 24 | /* More space for volatile root and /var */ |
7d85383e TM |
25 | #define TMPFS_LIMITS_VAR ",size=25%,nr_inodes=1m" |
26 | #define TMPFS_LIMITS_ROOTFS TMPFS_LIMITS_VAR | |
27 | #define TMPFS_LIMITS_VOLATILE_STATE TMPFS_LIMITS_VAR | |
28 | ||
3f2c0bec | 29 | int repeat_unmount(const char *path, int flags); |
4349cd7c | 30 | int umount_recursive(const char *target, int flags); |
64e82c19 LP |
31 | int bind_remount_recursive(const char *prefix, unsigned long new_flags, unsigned long flags_mask, char **blacklist); |
32 | int bind_remount_recursive_with_mountinfo(const char *prefix, unsigned long new_flags, unsigned long flags_mask, char **blacklist, FILE *proc_self_mountinfo); | |
7cce68e1 | 33 | int bind_remount_one_with_mountinfo(const char *path, unsigned long new_flags, unsigned long flags_mask, FILE *proc_self_mountinfo); |
4349cd7c LP |
34 | |
35 | int mount_move_root(const char *path); | |
36 | ||
37 | DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, endmntent); | |
38 | #define _cleanup_endmntent_ _cleanup_(endmntentp) | |
4e036b7a | 39 | |
60e76d48 ZJS |
40 | int mount_verbose( |
41 | int error_log_level, | |
42 | const char *what, | |
43 | const char *where, | |
44 | const char *type, | |
45 | unsigned long flags, | |
46 | const char *options); | |
47 | int umount_verbose(const char *where); | |
83555251 | 48 | |
9e7f941a YW |
49 | int mount_option_mangle( |
50 | const char *options, | |
51 | unsigned long mount_flags, | |
52 | unsigned long *ret_mount_flags, | |
53 | char **ret_remaining_options); | |
be1791ad | 54 | |
e5f10caf | 55 | int mode_to_inaccessible_node(const char *runtime_dir, mode_t mode, char **dest); |