diff options
Diffstat (limited to 'util-linux')
-rw-r--r-- | util-linux/mount.c | 3 | ||||
-rw-r--r-- | util-linux/umount.c | 15 |
2 files changed, 15 insertions, 3 deletions
diff --git a/util-linux/mount.c b/util-linux/mount.c index c29be5106..336cff7d2 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -142,7 +142,6 @@ do_mount(char *specialfile, char *dir, char *filesystemtype, fprintf(stderr, "WARNING: loop device is read-only\n"); flags &= ~MS_RDONLY; } - use_loop = FALSE; } #endif status = @@ -415,10 +414,10 @@ extern int mount_main(int argc, char **argv) case 'a': all = TRUE; break; -#ifdef BB_MTAB case 'f': fakeIt = TRUE; break; +#ifdef BB_MTAB case 'n': useMtab = FALSE; break; diff --git a/util-linux/umount.c b/util-linux/umount.c index 0f087e197..b0f393cca 100644 --- a/util-linux/umount.c +++ b/util-linux/umount.c @@ -41,6 +41,9 @@ static const char umount_usage[] = #ifdef BB_FEATURE_REMOUNT "\t-r:\tTry to remount devices as read-only if mount is busy\n" #endif +#if defined BB_FEATURE_MOUNT_LOOP + "\t-f:\tDo not free loop device (if a loop device has been used)\n" +#endif ; struct _mtab_entry_t { @@ -53,9 +56,14 @@ static struct _mtab_entry_t *mtab_cache = NULL; +#if defined BB_FEATURE_MOUNT_LOOP +static int freeLoop = TRUE; +#endif static int useMtab = TRUE; static int umountAll = FALSE; +#if defined BB_FEATURE_REMOUNT static int doRemount = FALSE; +#endif extern const char mtab_file[]; /* Defined in utility.c */ @@ -167,7 +175,7 @@ static int do_umount(const char *name, int useMtab) status = umount(name); #if defined BB_FEATURE_MOUNT_LOOP - if (blockDevice != NULL && !strncmp("/dev/loop", blockDevice, 9)) + if (freeLoop == TRUE && blockDevice != NULL && !strncmp("/dev/loop", blockDevice, 9)) /* this was a loop device, delete it */ del_loop(blockDevice); #endif @@ -236,6 +244,11 @@ extern int umount_main(int argc, char **argv) case 'a': umountAll = TRUE; break; +#if defined BB_FEATURE_MOUNT_LOOP + case 'f': + freeLoop = FALSE; + break; +#endif #ifdef BB_MTAB case 'n': useMtab = FALSE; |