From owner-freebsd-current@FreeBSD.ORG Sat May 17 10:07:26 2003 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F1E8337B401; Sat, 17 May 2003 10:07:25 -0700 (PDT) Received: from fledge.watson.org (fledge.watson.org [204.156.12.50]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3465C43F85; Sat, 17 May 2003 10:07:25 -0700 (PDT) (envelope-from robert@fledge.watson.org) Received: from fledge.watson.org (localhost [127.0.0.1]) by fledge.watson.org (8.12.9/8.12.9) with ESMTP id h4HH75On043844; Sat, 17 May 2003 13:07:05 -0400 (EDT) (envelope-from robert@fledge.watson.org) Received: from localhost (robert@localhost)h4HH74GT043839; Sat, 17 May 2003 13:07:05 -0400 (EDT) (envelope-from robert@fledge.watson.org) Date: Sat, 17 May 2003 13:07:04 -0400 (EDT) From: Robert Watson X-Sender: robert@fledge.watson.org To: Bruce Evans In-Reply-To: <20030517190409.Q15481@gamplex.bde.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: Don Lewis cc: current@FreeBSD.org Subject: Re: CFR: fifo_open()/fifo_close() patch X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 May 2003 17:07:26 -0000 On Sat, 17 May 2003, Bruce Evans wrote: > On Sat, 17 May 2003, Don Lewis wrote: > > > On 17 May, Bruce Evans wrote: > > > My question is mainly: why do you want or need the extra complexity for > > > using the vnode interlock here? > > > > I want to use the vnode interlock so that I can msleep() on it to avoid > > a race condition. If I rely on the vnode lock to protect fi_readers and > > fi_writers, another thread could sneak in, update them, and call > > wakeup() between the VOP_UNLOCK() call and the tsleep() call, causing > > the thread calling tsleep() to miss the wakeup(). > > I see. > > I now think fifo_close() needs both the vnode lock and the interlock. > Its socantrcvmore() calls should be atomic with decrementing the > reader/writer counts to 0. I think locking them with the interlock > would work, but this depends too much on their internals (not sleeping). > Sorry, I deleted your original patch and don't remember exactly what it > does here. > > NetBSD changed VOP_CLOSE() to "L L L" 4+ years ago. No comment on the remainder, but moving VOP_CLOSE to L L L seems like quite a reasonable direction to me. Robert N M Watson FreeBSD Core Team, TrustedBSD Projects robert@fledge.watson.org Network Associates Laboratories