aboutsummaryrefslogtreecommitdiff
path: root/sbin/mount_umapfs/mount_umapfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/mount_umapfs/mount_umapfs.c')
-rw-r--r--sbin/mount_umapfs/mount_umapfs.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sbin/mount_umapfs/mount_umapfs.c b/sbin/mount_umapfs/mount_umapfs.c
index a069fe5f02b9..f6a7ab54264b 100644
--- a/sbin/mount_umapfs/mount_umapfs.c
+++ b/sbin/mount_umapfs/mount_umapfs.c
@@ -95,6 +95,7 @@ main(argc, argv)
u_long gmapdata[GMAPFILEENTRIES][2], mapdata[MAPFILEENTRIES][2];
int ch, count, gnentries, mntflags, nentries;
char *gmapfile, *mapfile, *source, *target, buf[20];
+ struct vfsconf *vfc;
mntflags = 0;
mapfile = gmapfile = NULL;
@@ -218,7 +219,15 @@ main(argc, argv)
args.gnentries = gnentries;
args.gmapdata = gmapdata;
- if (mount(MOUNT_UMAP, argv[1], mntflags, &args))
+ vfc = getvfsbyname("umap");
+ if(!vfc && vfsisloadable("umap")) {
+ if(vfsload("umap"))
+ err(1, "vfsload(umap)");
+ endvfsent(); /* flush cache */
+ vfc = getvfsbyname("umap");
+ }
+
+ if (mount(vfc ? vfc->vfc_index : MOUNT_UMAP, argv[1], mntflags, &args))
err(1, NULL);
exit(0);
}