much more correct way of dealing with nfs pending reads/writes
authorbeck <beck@openbsd.org>
Fri, 25 Jul 2008 14:56:47 +0000 (14:56 +0000)
committerbeck <beck@openbsd.org>
Fri, 25 Jul 2008 14:56:47 +0000 (14:56 +0000)
ok thib@

sys/nfs/nfs_bio.c
sys/nfs/nfs_vnops.c

index 70e6e3f..5abe441 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: nfs_bio.c,v 1.52 2008/07/23 16:24:43 beck Exp $       */
+/*     $OpenBSD: nfs_bio.c,v 1.53 2008/07/25 14:56:47 beck Exp $       */
 /*     $NetBSD: nfs_bio.c,v 1.25.4.2 1996/07/08 20:47:04 jtc Exp $     */
 
 /*
@@ -607,13 +607,15 @@ nfs_doio(bp, p)
            if (bp->b_flags & B_READ) {
                uiop->uio_rw = UIO_READ;
                nfsstats.read_physios++;
-               bcstats.pendingreads++; /* XXX */
+               bcstats.pendingreads++;
+               bcstats.numreads++;
                error = nfs_readrpc(vp, uiop);
            } else {
                iomode = NFSV3WRITE_DATASYNC;
                uiop->uio_rw = UIO_WRITE;
                nfsstats.write_physios++;
-               bcstats.pendingwrites++; /* XXX */
+               bcstats.pendingwrites++;
+               bcstats.numwrites++; 
                error = nfs_writerpc(vp, uiop, &iomode, &must_commit);
            }
            if (error) {
@@ -629,6 +631,7 @@ nfs_doio(bp, p)
                uiop->uio_offset = ((off_t)bp->b_blkno) << DEV_BSHIFT;
                nfsstats.read_bios++;
                bcstats.pendingreads++;
+               bcstats.numreads++;
                error = nfs_readrpc(vp, uiop);
                if (!error) {
                    bp->b_validoff = 0;
@@ -660,7 +663,8 @@ nfs_doio(bp, p)
            case VLNK:
                uiop->uio_offset = (off_t)0;
                nfsstats.readlink_bios++;
-               bcstats.pendingreads++; /* XXX */
+               bcstats.pendingreads++;
+               bcstats.numreads++;
                error = nfs_readlinkrpc(vp, uiop, curproc->p_ucred);
                break;
            default:
@@ -679,7 +683,8 @@ nfs_doio(bp, p)
            io.iov_base = (char *)bp->b_data + bp->b_dirtyoff;
            uiop->uio_rw = UIO_WRITE;
            nfsstats.write_bios++;
-           bcstats.pendingwrites++; /* XXX */
+           bcstats.pendingwrites++;
+           bcstats.numwrites++;
            if ((bp->b_flags & (B_ASYNC | B_NEEDCOMMIT | B_NOCACHE)) == B_ASYNC)
                iomode = NFSV3WRITE_UNSTABLE;
            else
index 3227b11..bd8471b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: nfs_vnops.c,v 1.97 2008/07/23 17:40:29 deraadt Exp $  */
+/*     $OpenBSD: nfs_vnops.c,v 1.98 2008/07/25 14:56:47 beck Exp $     */
 /*     $NetBSD: nfs_vnops.c,v 1.62.4.1 1996/07/08 20:26:52 jtc Exp $   */
 
 /*
@@ -2991,8 +2991,6 @@ nfs_writebp(bp, force)
        if (retv) {
                if (force)
                        bp->b_flags |= B_WRITEINPROG;
-               bcstats.pendingwrites++;
-               bcstats.numwrites++;
                VOP_STRATEGY(bp);
        }