diff --git a/sys/kern/vfs_cluster.c b/sys/kern/vfs_cluster.c index 9c8b143429b4..3a26e170c8c7 100644 --- a/sys/kern/vfs_cluster.c +++ b/sys/kern/vfs_cluster.c @@ -33,7 +33,7 @@ * SUCH DAMAGE. * * @(#)vfs_cluster.c 8.7 (Berkeley) 2/13/94 - * $Id: vfs_cluster.c,v 1.43 1997/03/07 14:40:54 dyson Exp $ + * $Id: vfs_cluster.c,v 1.44 1997/04/01 11:48:30 bde Exp $ */ #include @@ -468,6 +468,7 @@ cluster_callback(bp) tbp->b_flags |= B_ERROR; tbp->b_error = error; } + tbp->b_dirtyoff = tbp->b_dirtyend = 0; biodone(tbp); } relpbuf(bp); diff --git a/sys/nfs/nfs_bio.c b/sys/nfs/nfs_bio.c index b5912b585724..a63fd78390e6 100644 --- a/sys/nfs/nfs_bio.c +++ b/sys/nfs/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; diff --git a/sys/nfsclient/nfs_bio.c b/sys/nfsclient/nfs_bio.c index b5912b585724..a63fd78390e6 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;