Can't load NFS server module with a custom 8.0 kernel

Kostik Belousov kostikbel at gmail.com
Thu Feb 18 22:07:26 UTC 2010


On Thu, Feb 18, 2010 at 03:00:28PM -0500, Boris Kochergin wrote:
> Rick Macklem wrote:
> >
> >
> >On Thu, 18 Feb 2010, Boris Kochergin wrote:
> >
> >>Ahoy. I didn't get any replies to this on -net, so I thought I'd try 
> >>here. I have an 8.0-RELEASE-p2/amd64 machine running a custom kernel 
> >>(configuration file at http://acm.poly.edu/~spawk/ACM) and I am 
> >>unable to use the NFS server module on it. After loading the nfssvc 
> >>module, attempting to load the nfsserver module fails and the 
> >>following appears in dmesg:
> >>
> >>Feb  3 19:35:54 acm kernel: link_elf_obj: symbol svcpool_create 
> >>undefined
> >>Feb  3 19:35:54 acm kernel: linker_load_file: Unsupported file type
> >>
> >>I see a reference to the problem at 
> >>http://lists.freebsd.org/pipermail/svn-src-all/2008-November/001025.html. 
> >>Am I missing something or has it never gotten resolved? Thanks.
> >>
> >I don't know diddly about the module loading stuff, but you could try
> >this patch. (svcpool_create() is a part of the krpc, which is listed
> >as a module that nfsserver depends on)
> >
> >rick
> >--- untested patch for nfs_srvsubs.c ---
> >--- nfsserver/nfs_srvsubs.c.sav    2010-02-18 14:41:52.000000000 -0500
> >+++ nfsserver/nfs_srvsubs.c    2010-02-18 14:42:12.000000000 -0500
> >@@ -554,7 +554,7 @@
> >     nfsrv_modevent,
> >     NULL,
> > };
> >-DECLARE_MODULE(nfsserver, nfsserver_mod, SI_SUB_VFS, SI_ORDER_ANY);
> >+DECLARE_MODULE(nfsserver, nfsserver_mod, SI_SUB_VFS, SI_ORDER_FIRST);
> >
> > /* So that loader and kldload(2) can find us, wherever we are.. */
> > MODULE_VERSION(nfsserver, 1);
> Thanks for the patch, but the problem persists with it, I'm afraid.

I think this is changed in HEAD, and part of the changes are already in
stable/8, which is different from 8.0 too.

Anyway, for HEAD nfsserver we need 1. nfscommon 2. nfs_common. Also,
nfs_common module is not attached to the build.

The patch below gives up on nfs_common, puts that parts into nfscommon,
and corrects dependencies for nfsserver and nfsclient. With the patch,
I can export and mount nfs filesystem on the HEAD again, with all
nfs* stuff loaded as modules. If following this route, sys/modules/nfs_common
can be removed.

I did not looked into fs/nfs* modules.

diff --git a/sys/modules/nfscommon/Makefile b/sys/modules/nfscommon/Makefile
index a3d75a7..df8702c 100644
--- a/sys/modules/nfscommon/Makefile
+++ b/sys/modules/nfscommon/Makefile
@@ -1,8 +1,9 @@
 # $FreeBSD$
 
-.PATH: ${.CURDIR}/../../fs/nfs 
+.PATH: ${.CURDIR}/../../fs/nfs ${.CURDIR}/../../nfs
 KMOD=	nfscommon
 SRCS=	vnode_if.h \
+	nfs_common.c \
 	nfs_commonacl.c \
 	nfs_commonkrpc.c \
 	nfs_commonport.c \
diff --git a/sys/nfsclient/nfs_vfsops.c b/sys/nfsclient/nfs_vfsops.c
index a8f32da..61cd7b8 100644
--- a/sys/nfsclient/nfs_vfsops.c
+++ b/sys/nfsclient/nfs_vfsops.c
@@ -147,7 +147,7 @@ MODULE_DEPEND(nfs, krpc, 1, 1, 1);
 #ifdef KGSSAPI
 MODULE_DEPEND(nfs, kgssapi, 1, 1, 1);
 #endif
-MODULE_DEPEND(nfs, nfs_common, 1, 1, 1);
+MODULE_DEPEND(nfs, nfscommon, 1, 1, 1);
 
 static struct nfs_rpcops nfs_rpcops = {
 	nfs_readrpc,
diff --git a/sys/nfsserver/nfs_srvsubs.c b/sys/nfsserver/nfs_srvsubs.c
index d84261e..f76c983 100644
--- a/sys/nfsserver/nfs_srvsubs.c
+++ b/sys/nfsserver/nfs_srvsubs.c
@@ -560,7 +560,7 @@ DECLARE_MODULE(nfsserver, nfsserver_mod, SI_SUB_VFS, SI_ORDER_ANY);
 MODULE_VERSION(nfsserver, 1);
 MODULE_DEPEND(nfsserver, nfssvc, 1, 1, 1);
 MODULE_DEPEND(nfsserver, krpc, 1, 1, 1);
-MODULE_DEPEND(nfsserver, nfs_common, 1, 1, 1);
+MODULE_DEPEND(nfsserver, nfscommon, 1, 1, 1);
 
 /*
  * Set up nameidata for a lookup() call and do it.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20100218/0cdf681c/attachment.pgp


More information about the freebsd-stable mailing list