From owner-freebsd-current@FreeBSD.ORG Tue Nov 9 13:48:48 2010 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 024BB10656A9; Tue, 9 Nov 2010 13:48:48 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id CA6268FC31; Tue, 9 Nov 2010 13:48:47 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 81D4E46B1A; Tue, 9 Nov 2010 08:48:47 -0500 (EST) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 927DC8A027; Tue, 9 Nov 2010 08:48:46 -0500 (EST) From: John Baldwin To: freebsd-current@freebsd.org Date: Tue, 9 Nov 2010 08:44:28 -0500 User-Agent: KMail/1.13.5 (FreeBSD/7.3-CBSD-20100819; KDE/4.4.5; amd64; ; ) References: <20101109114612.GA58585@freebsd.org> In-Reply-To: <20101109114612.GA58585@freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Message-Id: <201011090844.28609.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.6 (bigwig.baldwin.cx); Tue, 09 Nov 2010 08:48:46 -0500 (EST) X-Virus-Scanned: clamav-milter 0.96.3 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-1.9 required=4.2 tests=BAYES_00 autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on bigwig.baldwin.cx Cc: Alexander Best Subject: Re: kldunload(8) returns 0, although it fail X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Nov 2010 13:48:48 -0000 On Tuesday, November 09, 2010 6:46:12 am Alexander Best wrote: > hi there, > > i posted this message on freebsd-questions@, but nobody could help me with it. > to me this looks like a bug, so i assume posting it again here on > freebsd-current@ might be better. > > please keep in mind that the issue here is not the fact that the second attempt > to unload sound.ko/netgraph.ko fails. it *should* fail, because both modules > have dependencies. however it should fail with the first attempt. right now > kldunloadf() returns zero, whereas it should actually return EBUSY (just like > the second attempt). > > i've attached two kdump outputs: one for the first 'kldunload' attempt and one > for the second. as you can see the problem is that for some reason kldunloadf() > returns zero, although it couldn't unload the module. Did you get an error message in dmesg? If you have manually loaded netgraph.ko (via netgraph_load="YES" in loader.conf or an explicit kldload) and then loaded other modules that depend on it (such as ng_foo.ko) then this is expected behavior. What your kldunload has done is to remove the manual reference from loader.conf or 'kldload netgraph.ko'. What this changes is what happens when you do 'kldunload ng_foo.ko'. If you unload ng_foo.ko now, then netgraph.ko will also be unloaded when its last reference drops (in this case it looks like you actually have two ng_*.ko objects loaded, so you would have to unload both of them, but I will assume a single ng_foo.ko to make the explanation simpler). If you had not done 'kldunload netgraph.ko' but had done 'kldunload ng_foo.ko', then the manual reference would have kept netgraph.ko loaded. All this logic exists so that if you do 'kldload foo.ko' and it auto-loads bar.ko as a dependency, then doing 'kldunload bar.ko' will unload both foo.ko and bar.ko. -- John Baldwin