From owner-p4-projects@FreeBSD.ORG Mon Sep 17 18:04:10 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7B4A616A468; Mon, 17 Sep 2007 18:04:10 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E414516A417 for ; Mon, 17 Sep 2007 18:04:09 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outH.internet-mail-service.net (outH.internet-mail-service.net [216.240.47.231]) by mx1.freebsd.org (Postfix) with ESMTP id CE5CD13C480 for ; Mon, 17 Sep 2007 18:04:09 +0000 (UTC) (envelope-from julian@elischer.org) Received: from mx0.idiom.com (HELO idiom.com) (216.240.32.160) by out.internet-mail-service.net (qpsmtpd/0.40) with ESMTP; Mon, 17 Sep 2007 11:03:59 -0700 X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e Received: from julian-mac.elischer.org (nat.ironport.com [63.251.108.100]) by idiom.com (Postfix) with ESMTP id 501001263DA; Mon, 17 Sep 2007 11:03:59 -0700 (PDT) Message-ID: <46EEC18F.6000809@elischer.org> Date: Mon, 17 Sep 2007 11:03:59 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Marko Zec References: <200708212351.l7LNpi6Q006480@repoman.freebsd.org> In-Reply-To: <200708212351.l7LNpi6Q006480@repoman.freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews Subject: Re: PERFORCE change 125520 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Sep 2007 18:04:10 -0000 Marko Zec wrote: > http://perforce.freebsd.org/chv.cgi?CH=125520 > > Change 125520 by zec@zec_tpx32 on 2007/08/21 23:51:39 > > Given that ng_pipe nodes can be connected into arbitrary > topologies, and therefore it is possible for ngp_rcvdata() > to be recursively called from a single thread, it is > necessary to explicitly allow for the ng_pipe_giant mutex > to be recursively acquireable. OR use a different locking scheme. i.e. reference counts or something. > > Affected files ... > > .. //depot/projects/vimage/src/sys/netgraph/ng_pipe.c#2 edit > > Differences ... > > ==== //depot/projects/vimage/src/sys/netgraph/ng_pipe.c#2 (text+ko) ==== > > @@ -1028,7 +1028,7 @@ > error = EEXIST; > else { > mtx_init(&ng_pipe_giant, "ng_pipe_giant", NULL, > - MTX_DEF); > + MTX_DEF | MTX_RECURSE); > LIST_INIT(&node_head); > LIST_INIT(&hook_head); > ds_handle = timeout((timeout_t *) &pipe_scheduler,