CLR(bp->b_flags, B_NEEDCOMMIT);
bdwrite(bp)	struct buf *bp;{	int s;	/*	 * If the block hasn't been seen before:	 *	(1) Mark it as having been seen,	 *	(2) Charge for the write.	 *	(3) Make sure it's on its vnode's correct block list,	 *	(4) If a buffer is rewritten, move it to end of dirty list	 */	if (!ISSET(bp->b_flags, B_DELWRI)) {		SET(bp->b_flags, B_DELWRI);		s = splbio();		reassignbuf(bp);		splx(s);		curproc->p_stats->p_ru.ru_oublock++;	/* XXX */	}	/* If this is a tape block, write the block now. */	if (major(bp->b_dev) < nblkdev &&	    bdevsw[major(bp->b_dev)].d_type == D_TAPE) {		bawrite(bp);		return;	}	/* Otherwise, the "write" is done, so mark and release the buffer. */	SET(bp->b_flags, B_DONE);	brelse(bp);}