summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient/nfs_bio.c
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>1997-04-18 14:12:17 +0000
committerdfr <dfr@FreeBSD.org>1997-04-18 14:12:17 +0000
commit16ac81a5c5a3fec0f0cb4ff7456a1833d5cb437d (patch)
tree2f12ed0ddcb4e09044c615474f2ba55c8e8d89dc /sys/nfsclient/nfs_bio.c
parent150f99d8a9ca8fedd21b7b730a5ca940efa0a5ca (diff)
downloadFreeBSD-src-16ac81a5c5a3fec0f0cb4ff7456a1833d5cb437d.zip
FreeBSD-src-16ac81a5c5a3fec0f0cb4ff7456a1833d5cb437d.tar.gz
Don't allow partial buffers to be cluster-comitted.
Zero the b_dirty{off,end} after cluster-comitting a group of buffers. With these fixes, I was able to complete a 'make world' with remote src and obj directories.
Diffstat (limited to 'sys/nfsclient/nfs_bio.c')
-rw-r--r--sys/nfsclient/nfs_bio.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/nfsclient/nfs_bio.c b/sys/nfsclient/nfs_bio.c
index b5912b5..a63fd78 100644
--- a/sys/nfsclient/nfs_bio.c
+++ b/sys/nfsclient/nfs_bio.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_bio.c 8.9 (Berkeley) 3/30/95
- * $Id: nfs_bio.c,v 1.33 1997/03/09 10:21:26 bde Exp $
+ * $Id: nfs_bio.c,v 1.34 1997/04/03 07:52:00 dfr Exp $
*/
@@ -962,9 +962,12 @@ nfs_doio(bp, cr, p)
iomode = NFSV3WRITE_FILESYNC;
bp->b_flags |= B_WRITEINPROG;
error = nfs_writerpc(vp, uiop, cr, &iomode, &must_commit);
- if (!error && iomode == NFSV3WRITE_UNSTABLE)
- bp->b_flags |= B_NEEDCOMMIT | B_CLUSTEROK;
- else
+ if (!error && iomode == NFSV3WRITE_UNSTABLE) {
+ bp->b_flags |= B_NEEDCOMMIT;
+ if (bp->b_dirtyoff == 0
+ && bp->b_dirtyend == bp->b_bufsize)
+ bp->b_flags |= B_CLUSTEROK;
+ } else
bp->b_flags &= ~B_NEEDCOMMIT;
bp->b_flags &= ~B_WRITEINPROG;
OpenPOWER on IntegriCloud