From owner-freebsd-current@FreeBSD.ORG Sun Aug 28 01:59:07 2005 Return-Path: X-Original-To: freebsd-current@FreeBSD.org Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BACF516A420 for ; Sun, 28 Aug 2005 01:59:06 +0000 (GMT) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [204.156.12.53]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9827A43D6B for ; Sun, 28 Aug 2005 01:59:03 +0000 (GMT) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [204.156.12.50]) by cyrus.watson.org (Postfix) with ESMTP id 38C0546B86; Sat, 27 Aug 2005 21:59:03 -0400 (EDT) Date: Sun, 28 Aug 2005 02:59:03 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: "M. Warner Losh" In-Reply-To: <20050827.124941.14976142.imp@bsdimp.com> Message-ID: <20050828025721.X43518@fledge.watson.org> References: <20050827181827.O24510@fledge.watson.org> <20050827.114013.35047360.imp@bsdimp.com> <20050827184153.A24510@fledge.watson.org> <20050827.124941.14976142.imp@bsdimp.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: bzeeb-lists@lists.zabbadoz.net, freebsd-current@FreeBSD.org, dandee@volny.cz Subject: Re: LOR route vr0 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: Sun, 28 Aug 2005 01:59:07 -0000 On Sat, 27 Aug 2005, M. Warner Losh wrote: > : You need to add an entry to subr_witness.c creating a graph edge between > : the softc lock and the routing lock. An example of an entry in > : subr_witness.c: > : > : /* > : * TCP/IP > : */ > : { "tcp", &lock_class_mtx_sleep }, > : { "tcpinp", &lock_class_mtx_sleep }, > : { "so_snd", &lock_class_mtx_sleep }, > : { NULL, NULL }, > : > : Note that sets of ordered entries are terminated with a double-null. This > : declares that locks of type "tcp" preceed "tcpinp" which preceed > : "so_snd". > > So you have to have locks of type tcp BEFORE you take out tcpinp type > locks? Correct. 'tcp' reflects the global TCP state tables (pcbinfo) locks, and 'tcpinp' is for individual PCBs. If you acquire first a tcpinp and then tcp, the above settings should cause WITNESS to generate a lock order warning. Likewise, both tcp and tcpinp preceed so_snd, so if you acquire a protocol lock after a socket lock, it will get unhappy. WITNESS handles transitive relationships, so it gets connected up to the rest of the lock graph, explicit and implicit, so indirect violations of orders are fully handled. Robert N M Watson