This commit allows one to specify list of filesystem types to be tried when mounting particular device. E.g.
mount -t vfat,ext2 ... Signed-off-by: Karol Lewandowski <[email protected]> --- util-linux/mount.c | 24 ++++++++++++++++++++---- 1 files changed, 20 insertions(+), 4 deletions(-) diff --git a/util-linux/mount.c b/util-linux/mount.c index 56276ef..6f1fc5e 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -38,7 +38,7 @@ //usage: ) //usage: "\n -r Read-only mount" //usage: "\n -w Read-write mount (default)" -//usage: "\n -t FSTYPE Filesystem type" +//usage: "\n -t FSTYPE Filesystem type (supports comma-separated list of types)" //usage: "\n -O OPT Mount only filesystems with option OPT (-a only)" //usage: "\n-o OPT:" //usage: IF_FEATURE_MOUNT_LOOP( @@ -1823,9 +1823,25 @@ static int singlemount(struct mntent *mp, int ignore_busy) vfsflags |= MS_BIND; } - // If we know the fstype (or don't need to), jump straight - // to the actual mount. - if (mp->mnt_type || (vfsflags & (MS_REMOUNT | MS_BIND | MS_MOVE))) { + // Mount filesystem if we know fstype (or list of fstypes) + if (mp->mnt_type) { + char *fstype, *next; + + mp->mnt_type = fstype = xstrdup(mp->mnt_type); + + do { + next = strchr(fstype, ','); + if (next != NULL) + *next = '\0'; + rc = mount_it_now(mp, vfsflags, filteropts); + if (!rc) + break; + mp->mnt_type = next + 1; + } while (next != NULL); + + free(fstype); + } else if (vfsflags & (MS_REMOUNT | MS_BIND | MS_MOVE)) { + // Jump straight to the actual mount if possible rc = mount_it_now(mp, vfsflags, filteropts); } else { // Loop through filesystem types until mount succeeds -- 1.7.6.3 -- Karol Lewandowski | Samsung Poland R&D Center | Linux/Platform _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
