Skip site navigation (1)Skip section navigation (2)
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>