aboutsummaryrefslogtreecommitdiff
path: root/sbin/mount_ifs/mount_ufs.c
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/mount_ifs/mount_ufs.c')
-rw-r--r--sbin/mount_ifs/mount_ufs.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/sbin/mount_ifs/mount_ufs.c b/sbin/mount_ifs/mount_ufs.c
index babb760a07d8..43dfb055e198 100644
--- a/sbin/mount_ifs/mount_ufs.c
+++ b/sbin/mount_ifs/mount_ufs.c
@@ -72,6 +72,7 @@ mount_ufs(argc, argv)
struct ufs_args args;
int ch, mntflags;
char *fs_name;
+ struct vfsconf *vfc;
mntflags = 0;
optind = optreset = 1; /* Reset for parse of new argv. */
@@ -100,7 +101,21 @@ mount_ufs(argc, argv)
else
args.export.ex_flags = 0;
- if (mount(MOUNT_UFS, fs_name, mntflags, &args) < 0) {
+ setvfsent(0);
+ if(!(vfc = getvfsbyname("ufs"))) {
+ if(vfsisloadable("ufs")) {
+ if(vfsload("ufs")) {
+ warn("vfsload(\"ufs\")");
+ return 1;
+ }
+ endvfsent(); /* flush old table */
+ vfc = getvfsbyname("ufs");
+ } else {
+ /*warnx("ufs: filesystem not found");*/
+ }
+ }
+
+ if (mount(vfc ? vfc->vfc_index : MOUNT_UFS, fs_name, mntflags, &args) < 0) {
(void)fprintf(stderr, "%s on %s: ", args.fspec, fs_name);
switch (errno) {
case EMFILE: