From owner-cvs-all Wed Dec 13 0:30:42 2000 From owner-cvs-all@FreeBSD.ORG Wed Dec 13 00:30:37 2000 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 9C75537B698; Wed, 13 Dec 2000 00:30:37 -0800 (PST) Received: (from mckusick@localhost) by freefall.freebsd.org (8.11.1/8.11.1) id eBD8UbJ17674; Wed, 13 Dec 2000 00:30:37 -0800 (PST) (envelope-from mckusick) Message-Id: <200012130830.eBD8UbJ17674@freefall.freebsd.org> From: Kirk McKusick Date: Wed, 13 Dec 2000 00:30:37 -0800 (PST) To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/ufs/ffs ffs_inode.c ffs_softdep.c src/sys/ufs/ufs ufs_extern.h ufs_lookup.c X-FreeBSD-CVS-Branch: HEAD Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG mckusick 2000/12/13 00:30:37 PST Modified files: sys/ufs/ffs ffs_inode.c ffs_softdep.c sys/ufs/ufs ufs_extern.h ufs_lookup.c Log: Preventing runaway kernel soft updates memory, take three. Previously, the syncer process was the only process in the system that could process the soft updates background work list. If enough other processes were adding requests to that list, it would eventually grow without bound. Because some of the work list requests require vnodes to be locked, it was not generally safe to let random processes process the work list while they already held vnodes locked. By adding a flag to the work list queue processing function to indicate whether the calling process could safely lock vnodes, it becomes possible to co-opt other processes into helping out with the work list. Now when the worklist gets too large, other processes can safely help out by picking off those work requests that can be handled without locking a vnode, leaving only the small number of requests requiring a vnode lock for the syncer process. With this change, it appears possible to keep even the nastiest workloads under control. Submitted by: Paul Saab Revision Changes Path 1.66 +3 -3 src/sys/ufs/ffs/ffs_inode.c 1.80 +160 -71 src/sys/ufs/ffs/ffs_softdep.c 1.29 +2 -1 src/sys/ufs/ufs/ufs_extern.h 1.42 +7 -2 src/sys/ufs/ufs/ufs_lookup.c To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message