SCCS-vsn: sys/kern/vfs_bio.c 8.8
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)vfs_bio.c 8.7 (Berkeley) %G%
+ * @(#)vfs_bio.c 8.8 (Berkeley) %G%
*/
#include <sys/param.h>
*/
#include <sys/param.h>
register int flag;
int s, error = 0;
register int flag;
int s, error = 0;
- if (bp->b_vp && (bp->b_vp->v_mount->mnt_flag & MNT_ASYNC))
- bp->b_flags |= B_ASYNC;
+ if ((bp->b_flags & B_ASYNC) == 0 &&
+ bp->b_vp && (bp->b_vp->v_mount->mnt_flag & MNT_ASYNC)) {
+ bdwrite(bp);
+ return (0);
+ }
flag = bp->b_flags;
bp->b_flags &= ~(B_READ | B_DONE | B_ERROR | B_DELWRI);
if (flag & B_ASYNC) {
flag = bp->b_flags;
bp->b_flags &= ~(B_READ | B_DONE | B_ERROR | B_DELWRI);
if (flag & B_ASYNC) {