Add support for "noatime" and "nodiratime" mount flags to mount.

Change umount "-f" to mean force, and actually use umount2.
Change umount "-l" to mean "Do not free loop device".
Updates docs accordingly.
 -Erik
This commit is contained in:
Erik Andersen
2000-05-05 19:49:33 +00:00
parent 9b15e50835
commit 6c5f2c6021
6 changed files with 102 additions and 48 deletions

View File

@@ -38,8 +38,11 @@ static const char umount_usage[] =
"\n"
#endif
"\t-r:\tTry to remount devices as read-only if mount is busy\n"
#if defined BB_FEATURE_MOUNT_FORCE
"\t-f:\tForce filesystem umount (i.e. unreachable NFS server)\n"
#endif
#if defined BB_FEATURE_MOUNT_LOOP
"\t-f:\tDo not free loop device (if a loop device has been used)\n"
"\t-l:\tDo not free loop device (if a loop device has been used)\n"
#endif
;
@@ -53,6 +56,9 @@ static struct _mtab_entry_t *mtab_cache = NULL;
#if defined BB_FEATURE_MOUNT_FORCE
static int doForce = FALSE;
#endif
#if defined BB_FEATURE_MOUNT_LOOP
static int freeLoop = TRUE;
#endif
@@ -175,6 +181,14 @@ static int do_umount(const char *name, int useMtab)
if (freeLoop == TRUE && blockDevice != NULL && !strncmp("/dev/loop", blockDevice, 9))
/* this was a loop device, delete it */
del_loop(blockDevice);
#endif
#if defined BB_FEATURE_MOUNT_FORCE
if (status != 0 && doForce == TRUE) {
status = umount2(blockDevice, MNT_FORCE);
if (status != 0) {
fatalError("umount: forced umount of %s failed!\n", blockDevice);
}
}
#endif
if (status != 0 && doRemount == TRUE && errno == EBUSY) {
status = mount(blockDevice, name, NULL,
@@ -182,7 +196,6 @@ static int do_umount(const char *name, int useMtab)
if (status == 0) {
fprintf(stderr, "umount: %s busy - remounted read-only\n",
blockDevice);
/* TODO: update mtab if BB_MTAB is defined */
} else {
fprintf(stderr, "umount: Cannot remount %s read-only\n",
blockDevice);
@@ -240,7 +253,7 @@ extern int umount_main(int argc, char **argv)
umountAll = TRUE;
break;
#if defined BB_FEATURE_MOUNT_LOOP
case 'f':
case 'l':
freeLoop = FALSE;
break;
#endif
@@ -248,6 +261,11 @@ extern int umount_main(int argc, char **argv)
case 'n':
useMtab = FALSE;
break;
#endif
#ifdef BB_FEATURE_MOUNT_FORCE
case 'f':
doForce = TRUE;
break;
#endif
case 'r':
doRemount = TRUE;