Date: Sat, 27 Apr 1996 19:25:46 -0400 (EDT) From: John Capo <jc@irbs.com> To: FreeBSD-gnats-submit@freebsd.org Cc: FreeBSD-stable@freebsd.org Subject: Re: kern/1159: NFS Client hangs in vm_object_terminate() - objtrm Message-ID: <199604272325.TAA00521@irbs.irbs.com> In-Reply-To: <199604271545.LAA24735@irbs.irbs.com> from John Capo at "Apr 27, 96 11:45:48 am"
next in thread | previous in thread | raw e-mail | index | archive | help
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:
>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199604272325.TAA00521>
