CLR(bp->b_flags, B_WRITEINPROG);
biodone(bp)	struct buf *bp;{	if (ISSET(bp->b_flags, B_DONE))		panic("biodone already");	SET(bp->b_flags, B_DONE);		/* note that it's done */	if (LIST_FIRST(&bp->b_dep) != NULL)		buf_complete(bp);	if (!ISSET(bp->b_flags, B_READ)) {		vwakeup(bp->b_vp);	}	if (ISSET(bp->b_flags, B_CALL)) {	/* if necessary, call out */		CLR(bp->b_flags, B_CALL);	/* but note callout done */		(*bp->b_iodone)(bp);	} else {		if (ISSET(bp->b_flags, B_ASYNC)) {/* if async, release it */			brelse(bp);		} else {			/* or just wakeup the buffer */			CLR(bp->b_flags, B_WANTED);			wakeup(bp);		}	}}