From owner-svn-src-all@FreeBSD.ORG Fri May 22 13:30:10 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1378B106564A; Fri, 22 May 2009 13:30:10 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id DEF008FC1E; Fri, 22 May 2009 13:30:09 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [65.122.17.41]) by cyrus.watson.org (Postfix) with ESMTPS id 7C6F546B03; Fri, 22 May 2009 09:30:09 -0400 (EDT) Date: Fri, 22 May 2009 14:30:09 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: John Baldwin In-Reply-To: <200905220921.34785.jhb@freebsd.org> Message-ID: References: <3bbf2fe10905210629p46c7a204v6863aaba77354462@mail.gmail.com> <20090521194243.GW1927@deviant.kiev.zoral.com.ua> <3bbf2fe10905211511g53defb6cmac45fc2469cc64f@mail.gmail.com> <200905220921.34785.jhb@freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Scott Long , src-committers@freebsd.org, svn-src-all@freebsd.org, Attilio Rao , svn-src-head@freebsd.org, Kostik Belousov , "M. Warner Losh" Subject: Re: svn commit: r192535 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 May 2009 13:30:10 -0000 On Fri, 22 May 2009, John Baldwin wrote: > On Thursday 21 May 2009 6:11:02 pm Attilio Rao wrote: >> At this point I wonder what's the purpose of maintaining the sleeping >> version for such functions? > > Actually, I still very much do not like using M_NOWAIT needlessly. I would > much rather the solution for make_dev() be that the 1 or 2 places that need > to do it with a mutex held instead queue a task to do the actual make_dev() > in a taskqueue when no locks are held. This is basically what > destroy_dev_sched() is doing. Perhaps a make_dev_sched() with a similar > callback to be called on completion would be better. Having a device driver > do all the work to setup the hardware only to fail to create a node in /dev > so that userland can actually use it is pretty rediculous and useless. It's certainly true that we don't support failing calls to if_attach(), on the basis that backing out partially successful interface attaches isn't pretty. Likewise, if_detach() will drain task queues (etc), so also may sleep. I think it's not unreasonable to require a full thread context for major interactions with device/interface registration, etc, and I don't see that changing for the network stack. We're still shaking out bugs from code that thinks it's OK to free inpcbs in arbitrary contexts (which it's not, because we have to drain timers). Robert N M Watson Computer Laboratory University of Cambridge