libmount: make mnt_context_is_fs_mounted work for /proc
PATCH 1/1 libmount: make mnt_context_is_fs_mounted work for /proc
Assume that /proc is not mounted instead of returning an error when we are unable to open the mounts and mountinfo files in /proc. Also set cxt->mtab back to NULL so that it gets properly parsed when we check if the next filesystem is mounted.
The goal is to have mount -a work when /proc is not mounted, typically with /proc on the first line of fstab.
Signed-off-by Ivan Delalande <[email protected]>
--- libmount/src/context.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
libmount/src/context.c +12 -2
@@ -33,6 +33,7 @@#include "mountP.h" #include "fileutils.h" +#include "strutils.h" #include <sys/wait.h>
@@ -2458,14 +2459,23 @@ int mnt_context_helper_setopt(struct libmnt_context *cxt, int c, char *arg)int mnt_context_is_fs_mounted (struct libmnt_context *cxt,struct libmnt_fs *fs,int *mounted) { -struct libmnt_table *mtab; +struct libmnt_table *mtab, *orig;int rc;if (!cxt || !fs || !mounted)return -EINVAL ; + orig = cxt->mtab; rc =mnt_context_get_mtab (cxt, &mtab); -if (rc) +if (rc == -ENOENT &&mnt_fs_streq_target (fs,"/proc" ) && + (!cxt->mtab_path ||startswith (cxt->mtab_path,"/proc/" ))) { +if (!orig) { +mnt_unref_table (cxt->mtab); + cxt->mtab =NULL ; + } + *mounted =0 ; +return 0 ;/* /proc not mounted */ + }else if (rc)return rc; *mounted =mnt_table_is_fs_mounted (mtab, fs);
Signature · 1 line
2.13.2
Quoted 2 lines · Ivan Delalande
libmount/src/context.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
Applied, thanks. (Sorry for delay)
Karel
Signature · 2 lines
Karel Zak <[email protected]> http://karelzak.blogspot.com