From owner-freebsd-bugs Sat Apr 27 16:30:05 1996 Return-Path: owner-bugs Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id QAA15590 for bugs-outgoing; Sat, 27 Apr 1996 16:30:05 -0700 (PDT) Received: (from gnats@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id QAA15584 Sat, 27 Apr 1996 16:30:03 -0700 (PDT) Date: Sat, 27 Apr 1996 16:30:03 -0700 (PDT) Message-Id: <199604272330.QAA15584@freefall.freebsd.org> To: freebsd-bugs Cc: From: John Capo Subject: Re: kern/1159: NFS Client hangs in vm_object_terminate() - objtrm Reply-To: John Capo Sender: owner-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk The following reply was made to PR kern/1159; it has been noted by GNATS. From: John Capo To: FreeBSD-gnats-submit@freebsd.org Cc: FreeBSD-stable@freebsd.org Subject: Re: kern/1159: NFS Client hangs in vm_object_terminate() - objtrm Date: Sat, 27 Apr 1996 19:25:46 -0400 (EDT) nfs/nfs_bio.c: 241 bp = nfs_getcacheblk(vp, lbn, bufsize, p); if (!bp) return (EINTR); if ((bp->b_flags & B_CACHE) == 0) { bp->b_flags |= B_READ; not_readin = 0; vfs_busy_pages(bp, 0); error = nfs_doio(bp, cred, p); if (error) { brelse(bp); return (error); } } The buffer returned from nfs_getcacheblk() has B_DONE set in b_flags. nfs_doio() goes off and does its thing but biodone fails with "biodone: buffer already done". bread()/brwrite() always clear (B_DONE | B_ERROR | B_INVAL). They both obtain a buffer from getblk() as does nfs_getcacheblk(). Should nfs_doio() also clear (B_DONE | B_ERROR | B_INVAL)? John Capo jc@irbs.com IRBS Engineering FreeBSD Servers and Workstations (954) 792-9551 Unix/Internet Consulting - ISP Solutions John Capo writes: > > >Number: 1159 > >Category: kern > >Synopsis: NFS Client hangs in vm_object_terminate() - objtrm > >Confidential: no > >Severity: critical > >Priority: medium > >Responsible: freebsd-bugs > >State: open > >Class: sw-bug > >Submitter-Id: current-users > >Arrival-Date: Sat Apr 27 08:50:01 PDT 1996 > >Last-Modified: > >Originator: John Capo > >Organization: > IRBS Engineering > >Release: FreeBSD 2.1-STABLE i386 > >Environment: > > FreeBSD 2.1-stable client and server both built with NFS_ASYNC from > sup around 4/18/96. > > >Description: > > Client hangs while building TeX on an NFS mounted /usr/ports tree: > 0 19496 1 46 -18 0 172 12 objtrm D p1 0:02.91 ../web2c/splitup mf > > Restarting make hangs with this status: > 0 19609 1 41 -18 0 164 12 vodead D p1 0:00.07 ../web2c/splitup mf > > >How-To-Repeat: > > mount server:/usr/ports /usr/ports or somesuch > cd /usr/ports/print/tex > make > > Hangs at: > > cd mf; make SHELL='/bin/sh' CC='gcc' CFLAGS='-g ' RANLIB='ranlib' LN='ln -s' DEFS='' CCLD='gcc' LDFLAGS='-g ' LIBS='' x_extra_libs='' x_include_flags='-I/usr/X11R6/include' x_lib_flags='-L/usr /X11R6/lib' triptrap > /bin/sh ./../mf/convert > > >Fix: > > > > >Audit-Trail: > >Unformatted: >