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.
pgpiqUOvIo0nD.pgp
Description: PGP signature