summaryrefslogtreecommitdiff
path: root/src/basic/mount-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2016-11-22 20:19:08 +0100
committerSven Eden <yamakuzure@gmx.net>2017-07-17 17:58:35 +0200
commitd1fccb5f88df2bdbbbb20033c3f8cff281cec041 (patch)
treecbc597927df7918fc27f458754127b305be75713 /src/basic/mount-util.c
parent971e2488dda5dbdfddc29adabc9a10590b084ba5 (diff)
core: hook up MountFlags= to the transient unit logic
This makes "elogind-run -p MountFlags=shared -t /bin/sh" work, by making MountFlags= to the list of properties that may be accessed transiently.
Diffstat (limited to 'src/basic/mount-util.c')
-rw-r--r--src/basic/mount-util.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/basic/mount-util.c b/src/basic/mount-util.c
index 477342e71..61190e40a 100644
--- a/src/basic/mount-util.c
+++ b/src/basic/mount-util.c
@@ -219,7 +219,7 @@ int path_is_mount_point(const char *t, const char *root, int flags) {
* /bin -> /usr/bin/ and /usr is a mount point, then the parent that we
* look at needs to be /usr, not /. */
if (flags & AT_SYMLINK_FOLLOW) {
- r = chase_symlinks(t, root, &canonical);
+ r = chase_symlinks(t, root, 0, &canonical);
if (r < 0)
return r;
@@ -691,3 +691,35 @@ int umount_verbose(const char *what) {
return 0;
}
#endif // 0
+
+const char *mount_propagation_flags_to_string(unsigned long flags) {
+
+ switch (flags & (MS_SHARED|MS_SLAVE|MS_PRIVATE)) {
+
+ case MS_SHARED:
+ return "shared";
+
+ case MS_SLAVE:
+ return "slave";
+
+ case MS_PRIVATE:
+ return "private";
+ }
+
+ return NULL;
+}
+
+unsigned long mount_propagation_flags_from_string(const char *name) {
+
+ if (isempty(name))
+ return 0;
+
+ if (streq(name, "shared"))
+ return MS_SHARED;
+ if (streq(name, "slave"))
+ return MS_SLAVE;
+ if (streq(name, "private"))
+ return MS_PRIVATE;
+
+ return 0;
+}