From owner-freebsd-current Tue Sep 2 20:43:26 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id UAA13908 for current-outgoing; Tue, 2 Sep 1997 20:43:26 -0700 (PDT) Received: from gneiss.eps.nagoya-u.ac.jp (gneiss.eps.nagoya-u.ac.jp [133.6.57.99]) by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id UAA13898 for ; Tue, 2 Sep 1997 20:43:07 -0700 (PDT) Received: from marble.eps.nagoya-u.ac.jp (localhost [127.0.0.1]) by gneiss.eps.nagoya-u.ac.jp (8.8.7/3.5Wpl3) with ESMTP id MAA07105 for ; Wed, 3 Sep 1997 12:41:56 +0900 (JST) Message-Id: <199709030341.MAA07105@gneiss.eps.nagoya-u.ac.jp> To: current@FreeBSD.ORG Subject: deadlock in vgonel() by unionfs operation From: KATO Takenori X-Mailer: Mew version 1.70 on Emacs 19.28.1 / Mule 2.3 X-PGP-Fingerprint: 03 72 85 36 62 46 23 03 52 B1 10 22 44 10 0D 9E Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Date: Wed, 03 Sep 1997 12:41:56 +0900 Sender: owner-freebsd-current@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk I got deadlock condition with unionfs. The deadlock can be easily reproduced by: % mount -t union foo bar % ls foo ... % ls bar (never returns) The ls sleeps in vgonel() by: /* * If a vgone (or vclean) is already in progress, * wait until it is done and return. */ if (vp->v_flag & VXLOCK) { vp->v_flag |= VXWANT; simple_unlock(&vp->v_interlock); tsleep((caddr_t)vp, PINOD, "vgone", 0); <---- Here! return; } The problem occurs since the change of vfs stuff in August. I think there is something locking violation or missing usecount operation. ---- KATO Takenori Dept. Earth Planet. Sci., Nagoya Univ., Nagoya, 464-01, Japan PGP public key: finger kato@eclogite.eps.nagoya-u.ac.jp ------------------- Powered by FreeBSD(98) -------------------