Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Apr 2011 13:50:12 +0000 (UTC)
From:      Rick Macklem <rmacklem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r221066 - in head/sys: fs/nfsclient nfsclient
Message-ID:  <201104261350.p3QDoCnX025002@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rmacklem
Date: Tue Apr 26 13:50:11 2011
New Revision: 221066
URL: http://svn.freebsd.org/changeset/base/221066

Log:
  Fix a kernel linking problem introduced by r221032, r221040
  when building kernels that don't have "options NFS_ROOT"
  specified. I plan on moving the functions that use these
  data structures into the shared code in sys/nfs/nfs_diskless.c
  in a future commit. At that time, these definitions will no
  longer be needed in nfs_vfsops.c and nfs_clvfsops.c.
  
  MFC after:	2 weeks

Modified:
  head/sys/fs/nfsclient/nfs_clvfsops.c
  head/sys/nfsclient/nfs_vfsops.c

Modified: head/sys/fs/nfsclient/nfs_clvfsops.c
==============================================================================
--- head/sys/fs/nfsclient/nfs_clvfsops.c	Tue Apr 26 13:09:54 2011	(r221065)
+++ head/sys/fs/nfsclient/nfs_clvfsops.c	Tue Apr 26 13:50:11 2011	(r221066)
@@ -137,10 +137,17 @@ VFS_SET(nfs_vfsops, newnfs, VFCF_NETWORK
 MODULE_VERSION(newnfs, 1);
 
 /*
- * This structure must be filled in by a primary bootstrap or bootstrap
- * server for a diskless/dataless machine. It is initialized below just
- * to ensure that it is allocated to initialized data (.data not .bss).
+ * This structure is now defined in sys/nfs/nfs_diskless.c so that it
+ * can be shared by both NFS clients. It is declared here so that it
+ * will be defined for kernels built without NFS_ROOT, although it
+ * isn't used in that case.
  */
+#if !defined(NFS_ROOT) && !defined(NFSCLIENT)
+struct nfs_diskless	nfs_diskless = { { { 0 } } };
+struct nfsv3_diskless	nfsv3_diskless = { { { 0 } } };
+int			nfs_diskless_valid = 0;
+#endif
+
 SYSCTL_INT(_vfs_newnfs, OID_AUTO, diskless_valid, CTLFLAG_RD,
     &nfs_diskless_valid, 0,
     "Has the diskless struct been filled correctly");

Modified: head/sys/nfsclient/nfs_vfsops.c
==============================================================================
--- head/sys/nfsclient/nfs_vfsops.c	Tue Apr 26 13:09:54 2011	(r221065)
+++ head/sys/nfsclient/nfs_vfsops.c	Tue Apr 26 13:50:11 2011	(r221066)
@@ -164,6 +164,18 @@ static struct nfs_rpcops nfs_rpcops = {
 	nfs_commit,
 };
 
+/*
+ * This structure is now defined in sys/nfs/nfs_diskless.c so that it
+ * can be shared by both NFS clients. It is declared here so that it
+ * will be defined for kernels built without NFS_ROOT, although it
+ * isn't used in that case.
+ */
+#ifndef NFS_ROOT
+struct nfs_diskless	nfs_diskless = { { { 0 } } };
+struct nfsv3_diskless	nfsv3_diskless = { { { 0 } } };
+int			nfs_diskless_valid = 0;
+#endif
+
 SYSCTL_INT(_vfs_nfs, OID_AUTO, diskless_valid, CTLFLAG_RD,
     &nfs_diskless_valid, 0,
     "Has the diskless struct been filled correctly");



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201104261350.p3QDoCnX025002>