Index: fs/nfsclient/nfs_clbio.c =================================================================== --- fs/nfsclient/nfs_clbio.c (revision 250406) +++ fs/nfsclient/nfs_clbio.c (working copy) @@ -1154,6 +1154,7 @@ if (bp->b_dirtyoff >= bp->b_dirtyend) bp->b_dirtyoff = bp->b_dirtyend = 0; +#if 0 /* * If the new write will leave a contiguous dirty * area, just update the b_dirtyoff and b_dirtyend, @@ -1179,6 +1180,14 @@ } goto again; } +#else + /* + * Relax coherency a bit for the sake of performance and + * expand the current dirty region to contain the new + * write even if it means we mark some non-dirty data as + * dirty. This should probably be configurable. + */ +#endif local_resid = uio->uio_resid; error = vn_io_fault_uiomove((char *)bp->b_data + on, n, uio); Index: nfsclient/nfs_bio.c =================================================================== --- nfsclient/nfs_bio.c (revision 250406) +++ nfsclient/nfs_bio.c (working copy) @@ -1133,6 +1133,7 @@ if (bp->b_dirtyoff >= bp->b_dirtyend) bp->b_dirtyoff = bp->b_dirtyend = 0; +#if 0 /* * If the new write will leave a contiguous dirty * area, just update the b_dirtyoff and b_dirtyend, @@ -1158,6 +1159,14 @@ } goto again; } +#else + /* + * Relax coherency a bit for the sake of performance and + * expand the current dirty region to contain the new + * write even if it means we mark some non-dirty data as + * dirty. This should probably be configurable. + */ +#endif error = uiomove((char *)bp->b_data + on, n, uio);