diff options
author | wollman <wollman@FreeBSD.org> | 1994-09-22 02:07:33 +0000 |
---|---|---|
committer | wollman <wollman@FreeBSD.org> | 1994-09-22 02:07:33 +0000 |
commit | 68f50003d4ef378e2b86e98bf13451d75f7504fd (patch) | |
tree | 0f1bbcb4a9275356d74b9a9abd61dac9b8c172d5 | |
parent | d27339a8c655794d58cd82ad109ab211c4adfa56 (diff) | |
download | FreeBSD-src-68f50003d4ef378e2b86e98bf13451d75f7504fd.zip FreeBSD-src-68f50003d4ef378e2b86e98bf13451d75f7504fd.tar.gz |
Use getvfs* functions to map between VFS types and names.
Automatically load UFS if it is not present but is loadable.
(This won't happen now, but could happen if we fix NFS diskless support.)
-rw-r--r-- | sbin/mount/mount.c | 7 | ||||
-rw-r--r-- | sbin/mount/mount_ufs.c | 17 | ||||
-rw-r--r-- | sbin/mount_ifs/mount.c | 7 | ||||
-rw-r--r-- | sbin/mount_ifs/mount_ufs.c | 17 |
4 files changed, 40 insertions, 8 deletions
diff --git a/sbin/mount/mount.c b/sbin/mount/mount.c index d16b3d6..ee05e9d 100644 --- a/sbin/mount/mount.c +++ b/sbin/mount/mount.c @@ -412,12 +412,13 @@ badvfstype(vfstype, vfslist) int vfstype; const char **vfslist; { -static const char *vfsnames[] = INITMOUNTNAMES; + struct vfsconf *vfc; + vfc = getvfsbytype(vfstype); - if ((vfstype < 0) || (vfstype > MOUNT_MAXTYPE)) + if ( ! vfc ) return (0); - return (badvfsname(vfsnames[vfstype], vfslist)); + return (badvfsname(vfc->vfc_name, vfslist)); } const char ** diff --git a/sbin/mount/mount_ufs.c b/sbin/mount/mount_ufs.c index babb760..43dfb05 100644 --- a/sbin/mount/mount_ufs.c +++ b/sbin/mount/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: diff --git a/sbin/mount_ifs/mount.c b/sbin/mount_ifs/mount.c index d16b3d6..ee05e9d 100644 --- a/sbin/mount_ifs/mount.c +++ b/sbin/mount_ifs/mount.c @@ -412,12 +412,13 @@ badvfstype(vfstype, vfslist) int vfstype; const char **vfslist; { -static const char *vfsnames[] = INITMOUNTNAMES; + struct vfsconf *vfc; + vfc = getvfsbytype(vfstype); - if ((vfstype < 0) || (vfstype > MOUNT_MAXTYPE)) + if ( ! vfc ) return (0); - return (badvfsname(vfsnames[vfstype], vfslist)); + return (badvfsname(vfc->vfc_name, vfslist)); } const char ** diff --git a/sbin/mount_ifs/mount_ufs.c b/sbin/mount_ifs/mount_ufs.c index babb760..43dfb05 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: |