summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient/nfs_vfsops.c
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2002-09-22 00:59:02 +0000
committerjake <jake@FreeBSD.org>2002-09-22 00:59:02 +0000
commitbe3bee93960d297bcd02c9eae94dfdd5ba8759b8 (patch)
tree3fb240e30b7440ff11e70f83c558b3021c0ef104 /sys/nfsclient/nfs_vfsops.c
parent482de2f109d274142d818ac890370f47c8949ab6 (diff)
downloadFreeBSD-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.c13
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);
OpenPOWER on IntegriCloud