From owner-cvs-all@FreeBSD.ORG Tue Jul 13 19:55:37 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 458D316A4CE; Tue, 13 Jul 2004 19:55:37 +0000 (GMT) Received: from critter.freebsd.dk (critter.freebsd.dk [212.242.86.163]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9727D43D45; Tue, 13 Jul 2004 19:55:36 +0000 (GMT) (envelope-from phk@critter.freebsd.dk) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.12.11/8.12.11) with ESMTP id i6DJtRZk023945; Tue, 13 Jul 2004 21:55:27 +0200 (CEST) (envelope-from phk@critter.freebsd.dk) To: Nate Lawson From: "Poul-Henning Kamp" In-Reply-To: Your message of "Tue, 13 Jul 2004 12:51:18 PDT." <40F43D36.2000407@root.org> Date: Tue, 13 Jul 2004 21:55:27 +0200 Message-ID: <23944.1089748527@critter.freebsd.dk> Sender: phk@critter.freebsd.dk cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sbin/kldunload kldunload.8 kldunload.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jul 2004 19:55:37 -0000 In message <40F43D36.2000407@root.org>, Nate Lawson writes: >Poul-Henning Kamp wrote: >> Give kldunload a -f(orce) argument. >> >> Add a MOD_QUIESCE event for modules. This should return error (EBUSY) >> of the module is in use. >> >> MOD_UNLOAD should now only fail if it is impossible (as opposed to >> inconvenient) to unload the module. Valid reasons are memory references >> into the module which cannot be tracked down and eliminated. >> >> When kldunloading, we abandon if MOD_UNLOAD fails, and if -force is >> not given, MOD_QUIESCE failing will also prevent the unload. > >Hmmm, a quick check of the archives shows that I missed your discussion >of this on Thursday/Friday when I was on vacation. (Including the >extremely useful naming replies!) > >Have you kept up on the newbus discussions? The tentative plan was to >add quiesce functionality to it as part of device_detach(). Doing it at >the module layer is a bit too low since there are events that can >trigger a detach but not an unload. For instance, any driver compiled >into the kernel for an ejectable device will never be unloaded, but >certainly should quiesce/detach when the device is ejected. Getting it >right in newbus automatically fixes the problem you're trying to solve >since a module unload always triggers a call to device_detach() but not >vice versa. > >I think duplicating this at multiple layers is not a good idea and the >module level is not the right layer to implement it. Well, since one kld can contain multiple modules, and since the modules get to veto an unload with MOD_UNLOAD, I don't really see how you can come up with something that doesn't have a MOD_QUIESCE. The fact that we have many modules which know nothing about newbus also look like a pretty solid argument for needing it at the module layer. -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence.