diff options
author | Lennart Poettering <lennart@poettering.net> | 2016-11-22 20:19:08 +0100 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2017-07-17 17:58:35 +0200 |
commit | d1fccb5f88df2bdbbbb20033c3f8cff281cec041 (patch) | |
tree | cbc597927df7918fc27f458754127b305be75713 /src/basic/mount-util.c | |
parent | 971e2488dda5dbdfddc29adabc9a10590b084ba5 (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.c | 34 |
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; +} |