From owner-freebsd-hackers@FreeBSD.ORG Wed Jul 11 10:30:49 2012 Return-Path: Delivered-To: freebsd-hackers@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id EA2E1106564A; Wed, 11 Jul 2012 10:30:49 +0000 (UTC) (envelope-from freebsd-listen@fabiankeil.de) Received: from smtprelay01.ispgateway.de (smtprelay01.ispgateway.de [80.67.18.43]) by mx1.freebsd.org (Postfix) with ESMTP id 8BA6A8FC18; Wed, 11 Jul 2012 10:30:49 +0000 (UTC) Received: from [78.35.173.77] (helo=fabiankeil.de) by smtprelay01.ispgateway.de with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.68) (envelope-from ) id 1SouBC-0006vx-W7; Wed, 11 Jul 2012 12:29:59 +0200 Date: Wed, 11 Jul 2012 12:29:35 +0200 From: Fabian Keil To: Andriy Gapon Message-ID: <20120711122935.1382e76d@fabiankeil.de> In-Reply-To: <4FFC8479.9080608@FreeBSD.org> References: <1341863341.6064.11.camel@powernoodle.corp.yahoo.com> <4FFB4770.7050209@FreeBSD.org> <20120710154128.192eb8d6@fabiankeil.de> <1341939155.2573.8.camel@powernoodle.corp.yahoo.com> <20120710205702.5e57168b@fabiankeil.de> <4FFC8479.9080608@FreeBSD.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=PGP-SHA1; boundary="Sig_/9sIycTmw_0p6QYzm37pBrn/"; protocol="application/pgp-signature" X-Df-Sender: Nzc1MDY3 Cc: freebsd-hackers@FreeBSD.org, Sean Bruno , rmacklem@FreeBSD.org Subject: Re: dtraceall.ko with old nfsclient X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jul 2012 10:30:50 -0000 --Sig_/9sIycTmw_0p6QYzm37pBrn/ Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Andriy Gapon wrote: > on 10/07/2012 21:57 Fabian Keil said the following: > > I do not use a completely NFS-free kernel, but I don't build any=20 > > NFS-related modules. Trying to load an unpatched dtraceall results in: > >=20 > > Jul 9 21:58:48 r500 sudo: fk : TTY=3Dpts/16 ; PWD=3D/home/fk ; U= SER=3Droot > > ; COMMAND=3D/sbin/kldload dtraceall Jul 9 21:58:48 r500 kernel: [8922]= KLD > > dtnfsclient.ko: depends on oldnfs - not available or version mismatch J= ul > > 9 21:58:48 r500 kernel: [8922] linker_load_file: Unsupported file type = Jul > > 9 21:58:48 r500 kernel: [8922] KLD dtraceall.ko: depends on dtnfsclient= - > > not available or version mismatch Jul 9 21:58:48 r500 kernel: [8922] > > linker_load_file: Unsupported file type > >=20 > > My assumption was that your patch and the "#elif defined (NFSCLIENT)" w= ould > > fix that, and indeed it does, but I later on realized that I actually do > > have NFSCL in the kernel: > >=20 > > fk@r500 /usr/src $sysctl kern.conftxt | grep NFS options NFS_ROOT optio= ns > > NFSLOCKD options NFSD options NFSCL > >=20 > > My impression is that the patch is missing an opt_nfs.h inclusion combi= ned > > with the Makefile voodoo to create the file. > >=20 > > The dtraceall module already has an opt_compat.h, even though the Makef= ile > > logic to create it seems a bit dubious to me. It blindly assumes that > > COMPAT_FREEBSD32 is available on amd64. >=20 > Not sure if I got correctly what the (perceived) problem actually is, but= I > have this to say: the proper way of building a module is either via > buildkernel (MODULES_OVERRIDE, etc) or by using KERNBUILDDIR for "indepen= dent" > module build if the module has any dependency on kernel options in effect. > This could be a little bit sad (for third-party module providers), but th= is > seems to be true. >=20 > Sometimes Makefile-s fake kernel options for truly independent module bui= ld > (no KERNBUILDDIR) to provide the widest and/or safest feature set. But t= his > has to be done very carefully to ensure that module<->kernel*s* compatibi= lity > actually occurs. I'm using the following modification of Sean's patch: diff --git a/sys/modules/dtrace/dtraceall/dtraceall.c b/sys/modules/dtrace/= dtraceall/dtraceall.c index c57f590..d50b1e5 100644 --- a/sys/modules/dtrace/dtraceall/dtraceall.c +++ b/sys/modules/dtrace/dtraceall/dtraceall.c @@ -67,8 +67,11 @@ MODULE_DEPEND(dtraceall, opensolaris, 1, 1, 1); MODULE_DEPEND(dtraceall, dtrace, 1, 1, 1); MODULE_DEPEND(dtraceall, dtio, 1, 1, 1); MODULE_DEPEND(dtraceall, dtmalloc, 1, 1, 1); +#if defined (NFSCL) MODULE_DEPEND(dtraceall, dtnfscl, 1, 1, 1); +#elif defined (NFSCLIENT) MODULE_DEPEND(dtraceall, dtnfsclient, 1, 1, 1); +#endif #if defined(__amd64__) || defined(__i386__) MODULE_DEPEND(dtraceall, fbt, 1, 1, 1); MODULE_DEPEND(dtraceall, fasttrap, 1, 1, 1); The perceived problem is that after compiling dtraceall with "make buildkernel", installing it with "make installkernel" and rebooting, loading it results in:=20 fk@r500 ~ $kldstat Id Refs Address Size Name 1 73 0xffffffff80200000 e492c0 kernel 2 1 0xffffffff8104a000 226928 zfs.ko 3 14 0xffffffff81271000 82b8 opensolaris.ko 4 1 0xffffffff8127a000 23a48 geom_eli.ko 5 2 0xffffffff8129e000 34380 crypto.ko 7 1 0xffffffff812fe000 8640 acpi_video.ko 8 1 0xffffffff81307000 7d00 acpi_ibm.ko 9 4 0xffffffff81412000 29e31 usb.ko 10 1 0xffffffff8143c000 32ec usb_quirk.ko 11 1 0xffffffff81440000 bded ehci.ko 12 1 0xffffffff8144c000 8d02 umass.ko 13 1 0xffffffff81455000 5c2a nullfs.ko 14 1 0xffffffff8145b000 51ac fdescfs.ko 15 1 0xffffffff81461000 beb4 i915.ko 16 1 0xffffffff8146d000 173cc drm.ko 17 1 0xffffffff81485000 b25 dtraceall.ko 18 1 0xffffffff81486000 4e00 profile.ko 19 3 0xffffffff8148b000 4073 cyclic.ko 20 10 0xffffffff81490000 23b931 dtrace.ko 21 1 0xffffffff816cc000 125da systrace_freebsd32.ko 22 1 0xffffffff816df000 13797 systrace.ko 23 1 0xffffffff816f3000 44be sdt.ko 24 1 0xffffffff816f8000 484d lockstat.ko 25 1 0xffffffff816fd000 bce5 fasttrap.ko 26 1 0xffffffff81709000 6553 fbt.ko 27 1 0xffffffff81710000 448b dtmalloc.ko 28 1 0xffffffff81715000 43d9 dtio.ko Note that dtnfscl.ko is not loaded even though loading it manually works and I have NFSCL in the kernel. Fabian --Sig_/9sIycTmw_0p6QYzm37pBrn/ Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (FreeBSD) iEYEARECAAYFAk/9VaEACgkQBYqIVf93VJ18rgCeID+tIXTceHLE8cwOtnUm/rVd V24AmgOtMjwBXve8X7lHyskr+tKEjVbr =Re94 -----END PGP SIGNATURE----- --Sig_/9sIycTmw_0p6QYzm37pBrn/--