X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fbasic%2Fmount-util.c;h=402e55bcff500dea177a1062df357dec6528fe20;hb=f082899f180431f04553e4ee3b0968020ef59188;hp=477342e71f433cb48c4c912d06e01e741ef700e1;hpb=2f30582bd3d00ce582d190ddb379e46e0a67f813;p=elogind.git diff --git a/src/basic/mount-util.c b/src/basic/mount-util.c index 477342e71..402e55bcf 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; @@ -674,6 +674,9 @@ int mount_verbose( else if ((flags & MS_BIND) && !type) log_debug("Bind-mounting %s on %s (%s \"%s\")...", what, where, strnull(fl), strempty(options)); + else if (flags & MS_MOVE) + log_debug("Moving mount %s → %s (%s \"%s\")...", + what, where, strnull(fl), strempty(options)); else log_debug("Mounting %s on %s (%s \"%s\")...", strna(type), where, strnull(fl), strempty(options)); @@ -691,3 +694,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 0: + return ""; + case MS_SHARED: + return "shared"; + case MS_SLAVE: + return "slave"; + case MS_PRIVATE: + return "private"; + } + + return NULL; +} + + +int mount_propagation_flags_from_string(const char *name, unsigned long *ret) { + + if (isempty(name)) + *ret = 0; + else if (streq(name, "shared")) + *ret = MS_SHARED; + else if (streq(name, "slave")) + *ret = MS_SLAVE; + else if (streq(name, "private")) + *ret = MS_PRIVATE; + else + return -EINVAL; + return 0; +}