Index: sys/ufs/ffs/ffs_vnops.c =================================================================== --- sys/ufs/ffs/ffs_vnops.c +++ sys/ufs/ffs/ffs_vnops.c @@ -1001,7 +1001,9 @@ uio->uio_resid = resid; } } else if (resid > uio->uio_resid && (ioflag & IO_SYNC)) { - error = ffs_update(vp, 1); + if (!(ioflag & IO_DATASYNC) || + (ip->i_flags & (IN_SIZEMOD | IN_IBLKDATA))) + error = ffs_update(vp, 1); if (ffs_fsfail_cleanup(VFSTOUFS(vp->v_mount), error)) error = ENXIO; }