From owner-cvs-src-old@FreeBSD.ORG Sun Jul 19 14:21:49 2009 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7B1281065691 for ; Sun, 19 Jul 2009 14:21:49 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 493938FC20 for ; Sun, 19 Jul 2009 14:21:49 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6JELmGg058447 for ; Sun, 19 Jul 2009 14:21:48 GMT (envelope-from rwatson@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6JELm2r058446 for cvs-src-old@freebsd.org; Sun, 19 Jul 2009 14:21:48 GMT (envelope-from rwatson@repoman.freebsd.org) Message-Id: <200907191421.n6JELm2r058446@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to rwatson@repoman.freebsd.org using -f From: Robert Watson Date: Sun, 19 Jul 2009 14:20:53 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/kern kern_vimage.c src/sys/net if.c src/sys/netgraph ng_gif.c src/sys/netinet igmp.c in_pcb.c in_rmx.c ip_input.c tcp_subr.c tcp_timer.c src/sys/netinet6 frag6.c mld6.c src/sys/netipsec key.c src/sys/sys kernel.h vimage.h X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 14:21:50 -0000 rwatson 2009-07-19 14:20:53 UTC FreeBSD src repository Modified files: sys/kern kern_vimage.c sys/net if.c sys/netgraph ng_gif.c sys/netinet igmp.c in_pcb.c in_rmx.c ip_input.c tcp_subr.c tcp_timer.c sys/netinet6 frag6.c mld6.c sys/netipsec key.c sys/sys kernel.h vimage.h Log: SVN rev 195760 on 2009-07-19 14:20:53Z by rwatson Reimplement and/or implement vnet list locking by replacing a mostly unused custom mutex/condvar-based sleep locks with two locks: an rwlock (for non-sleeping use) and sxlock (for sleeping use). Either acquired for read is sufficient to stabilize the vnet list, but both must be acquired for write to modify the list. Replace previous no-op read locking macros, used in various places in the stack, with actual locking to prevent race conditions. Callers must declare when they may perform unbounded sleeps or not when selecting how to lock. Refactor vnet sysinits so that the vnet list and locks are initialized before kernel modules are linked, as the kernel linker will use them for modules loaded by the boot loader. Update various consumers of these KPIs based on whether they may sleep or not. Reviewed by: bz Approved by: re (kib) Revision Changes Path 1.15 +27 -21 src/sys/kern/kern_vimage.c 1.355 +2 -2 src/sys/net/if.c 1.27 +2 -2 src/sys/netgraph/ng_gif.c 1.86 +4 -4 src/sys/netinet/igmp.c 1.259 +2 -2 src/sys/netinet/in_pcb.c 1.78 +2 -2 src/sys/netinet/in_rmx.c 1.371 +4 -4 src/sys/netinet/ip_input.c 1.348 +4 -4 src/sys/netinet/tcp_subr.c 1.111 +2 -2 src/sys/netinet/tcp_timer.c 1.49 +7 -5 src/sys/netinet6/frag6.c 1.54 +4 -4 src/sys/netinet6/mld6.c 1.61 +2 -2 src/sys/netipsec/key.c 1.149 +3 -2 src/sys/sys/kernel.h 1.40 +33 -9 src/sys/sys/vimage.h