diff -Naur busybox.orig/util-linux/mount.c busybox/util-linux/mount.c --- busybox.orig/util-linux/mount.c 2008-02-03 08:20:21 +0000 +++ busybox/util-linux/mount.c 2008-02-03 11:58:17 +0000 @@ -309,6 +309,26 @@ for (;;) { rc = mount(mp->mnt_fsname, mp->mnt_dir, mp->mnt_type, vfsflags, filteropts); + + // Do a helper program exist? + if (ENABLE_FEATURE_MOUNT_HELPERS && rc) { + char *args[4]; + int errno_save = errno; + rc = 0; + args[rc++] = mp->mnt_type; + if (filteropts) { + args[rc++] = (char *)"-o"; + args[rc++] = filteropts; + } + args[rc++] = mp->mnt_fsname; + args[rc++] = mp->mnt_dir; + args[rc] = NULL; + rc = wait4pid(spawn(args)); + if (!rc) + break; + errno = errno_save; + } + if (!rc || (vfsflags & MS_RDONLY) || (errno != EACCES && errno != EROFS)) break; if (!(vfsflags & MS_SILENT))