chiark / gitweb /
core: rework logic to determine when we decide to add automatic deps for mounts
authorLennart Poettering <lennart@poettering.net>
Tue, 29 Nov 2016 21:50:21 +0000 (22:50 +0100)
committerSven Eden <yamakuzure@gmx.net>
Mon, 17 Jul 2017 15:58:35 +0000 (17:58 +0200)
This adds a concept of "extrinsic" mounts. If mounts are extrinsic we consider
them managed by something else and do not add automatic ordering against
umount.target, local-fs.target, remote-fs.target.

Extrinsic mounts are considered:

- All mounts if we are running in --user mode

- API mounts such as everything below /proc, /sys, /dev, which exist from
  earliest boot to latest shutdown.

- All mounts marked as initrd mounts, if we run on the host

- The initrd's private directory /run/initrams that should survive until last
  reboot.

This primarily merges a couple of different exclusion lists into a single
concept.

src/basic/path-util.h

index 4d284d23cfe309f12470c24c220c63bd4d52cc3a..a4c80493cc972238b839f299f198fe9378abaebc 100644 (file)
@@ -74,6 +74,18 @@ static inline bool path_equal_ptr(const char *a, const char *b) {
         })
 
 #if 0 /// UNNEEDED by elogind
+#define PATH_STARTSWITH_SET(p, ...)                             \
+        ({                                                      \
+                char **s;                                       \
+                bool _found = false;                            \
+                STRV_FOREACH(s, STRV_MAKE(__VA_ARGS__))         \
+                        if (path_startswith(p, *s)) {           \
+                               _found = true;                   \
+                               break;                           \
+                        }                                       \
+                _found;                                         \
+        })
+
 int path_strv_make_absolute_cwd(char **l);
 #endif // 0
 char** path_strv_resolve(char **l, const char *root);