diff options
author | jake <jake@FreeBSD.org> | 2002-09-22 00:59:02 +0000 |
---|---|---|
committer | jake <jake@FreeBSD.org> | 2002-09-22 00:59:02 +0000 |
commit | be3bee93960d297bcd02c9eae94dfdd5ba8759b8 (patch) | |
tree | 3fb240e30b7440ff11e70f83c558b3021c0ef104 /sys/nfsclient/nfs_vfsops.c | |
parent | 482de2f109d274142d818ac890370f47c8949ab6 (diff) | |
download | FreeBSD-src-be3bee93960d297bcd02c9eae94dfdd5ba8759b8.zip FreeBSD-src-be3bee93960d297bcd02c9eae94dfdd5ba8759b8.tar.gz |
Moved nfs_diskless setup code from autoconf.c to nfsclient/nfs_diskless.c
so that it is MI. Allow nfs_mountroot to return an error if the nfs_diskless
struct is not valid, rather than panicing later on. Call nfs_setup_diskless()
from nfs_mountroot if NFS_ROOT is defined, like bootpc_init(). Removed legacy
root mount support for sparc64, and enabled NFS_ROOT by default.
Diffstat (limited to 'sys/nfsclient/nfs_vfsops.c')
-rw-r--r-- | sys/nfsclient/nfs_vfsops.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/nfsclient/nfs_vfsops.c b/sys/nfsclient/nfs_vfsops.c index 022e3bf..f4a083d 100644 --- a/sys/nfsclient/nfs_vfsops.c +++ b/sys/nfsclient/nfs_vfsops.c @@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include "opt_bootp.h" +#include "opt_nfsroot.h" #include <sys/param.h> #include <sys/systm.h> @@ -384,9 +385,13 @@ nfs_mountroot(struct mount *mp, struct thread *td) #if defined(BOOTP_NFSROOT) && defined(BOOTP) bootpc_init(); /* use bootp to get nfs_diskless filled in */ +#elif defined(NFS_ROOT) + nfs_setup_diskless(); #endif - if (nfs_diskless_valid==1) + if (nfs_diskless_valid == 0) + return (-1); + if (nfs_diskless_valid == 1) nfs_convert_diskless(); /* @@ -725,10 +730,8 @@ nfs_mount(struct mount *mp, char *path, caddr_t data, struct nameidata *ndp, size_t len; u_char nfh[NFSX_V3FHMAX]; - if (path == NULL) { - nfs_mountroot(mp, td); - return (0); - } + if (path == NULL) + return (nfs_mountroot(mp, td)); error = copyin(data, (caddr_t)&args, sizeof (struct nfs_args)); if (error) return (error); |