From owner-cvs-all@FreeBSD.ORG Thu Sep 22 10:51:13 2005 Return-Path: X-Original-To: cvs-all@FreeBSD.org 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 4156416A41F; Thu, 22 Sep 2005 10:51:13 +0000 (GMT) (envelope-from rwatson@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C3B5143D49; Thu, 22 Sep 2005 10:51:12 +0000 (GMT) (envelope-from rwatson@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j8MApCAY059397; Thu, 22 Sep 2005 10:51:12 GMT (envelope-from rwatson@repoman.freebsd.org) Received: (from rwatson@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j8MApCYt059396; Thu, 22 Sep 2005 10:51:12 GMT (envelope-from rwatson) Message-Id: <200509221051.j8MApCYt059396@repoman.freebsd.org> From: Robert Watson Date: Thu, 22 Sep 2005 10:51:12 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/fs/fifofs fifo_vnops.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 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: Thu, 22 Sep 2005 10:51:13 -0000 rwatson 2005-09-22 10:51:12 UTC FreeBSD src repository Modified files: sys/fs/fifofs fifo_vnops.c Log: Add fi_sx, an sx lock to serialize I/O operations on the socket pair underlying the POSIX fifo implementation. In 6.x/7.x, fifo access is moved from the VFS layer, where it was serialized using the vnode lock, to the file descriptor layer, where access is protected by a reference count but not serialized. This exposed socket buffer locking to high levels of parallelism in specific fifo workloads, such as make -j 32, which expose as yet unresolved socket buffer bugs. fi_sx re-adds serialization about the read and write routines, although not paths that simply test socket buffer mbuf queue state, such as the poll and kqueue methods. This restores the extra locking cost previously present in some cases, but is an effective workaround for the instability that has been experienced. This workaround should be removed once the bug in socket buffer handling has been fixed. Reported by: kris, jhb, Julien Gabel , Peter Holm , others MFC after: 3 days Revision Changes Path 1.127 +16 -3 src/sys/fs/fifofs/fifo_vnops.c