What the patch does is goes from the situation where:
1) If /etc/mtab doesn't exist and /etc is read-only, you get the
"can't create lock file" message and the mount fails
2) If /etc/mtab does exist and /etc is read-only,you get the same
message but the mount succeeds
Clearly, the failure to update /etc/mtab should either cause the mount
to fail or not ... sometimes causing it to fail, and sometimes not
(each with the same message) is not useful.
This patch sets the same behaviour for create and update mtab. In both
cases it prints error message and the mount succeeds.
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
}
}
+void
+reset_mtab_info(void) {
+ have_mtab_info = 0;
+}
+
int
mtab_does_not_exist(void) {
get_mtab_info();
#include "mount_mntent.h"
int mtab_is_writable(void);
int mtab_does_not_exist(void);
+void reset_mtab_info(void);
int is_mounted_once(const char *name);
struct mntentchn {
my_endmntent (mfp);
unlock_mtab();
+
+ reset_mtab_info();
}
/* count successful mount system calls */
if (verbose)
print_one (&mnt);
+ if (!nomtab && mtab_does_not_exist()) {
+ if (verbose > 1)
+ printf(_("mount: no %s found - creating it..\n"),
+ MOUNTED);
+ create_mtab ();
+ }
+
if (!nomtab && mtab_is_writable()) {
if (flags & MS_REMOUNT)
update_mtab (mnt.mnt_dir, &mnt);
die (EX_USAGE, _("mount: only root can do that"));
}
- if (!nomtab && mtab_does_not_exist()) {
- if (verbose > 1)
- printf(_("mount: no %s found - creating it..\n"),
- _PATH_MOUNTED);
- create_mtab ();
- }
-
atexit(unlock_mtab);
switch (argc+specseen) {