From owner-cvs-all Mon Jan 17 17:30: 7 2000 Delivered-To: cvs-all@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id 137AA150B0; Mon, 17 Jan 2000 17:30:04 -0800 (PST) (envelope-from mckusick@FreeBSD.org) Received: (from mckusick@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id RAA48796; Mon, 17 Jan 2000 17:30:04 -0800 (PST) (envelope-from mckusick@FreeBSD.org) Message-Id: <200001180130.RAA48796@freefall.freebsd.org> From: Kirk McKusick Date: Mon, 17 Jan 2000 17:30:04 -0800 (PST) To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/contrib/softupdates ffs_softdep.c Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk mckusick 2000/01/17 17:30:04 PST Modified files: sys/contrib/softupdates ffs_softdep.c Log: Need to reorganize the flushing of directory entry (pagedep) dependencies so that they never try to lock an inode corresponding to ".." as this can lead to deadlock. We observe that any inode with an updated link count is always pushed into its buffer at the time of the link count change, so we do not need to do a VOP_UPDATE, but merely find its buffer and write it. The only time we need to get the inode itself is from the result of a mkdir whose name will never be ".." and hence locking such an inode will never request a lock above us in the filesystem tree. Thanks to Brian Fundakowski Feldman for providing the test program that tickled soft updates into hanging in "inode" sleep. Submitted by: Brian Fundakowski Feldman Revision Changes Path 1.55 +63 -64 src/sys/contrib/softupdates/ffs_softdep.c To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message