if (TAILQ_EMPTY(&vp->v_uobj.memq) && (vp->v_bioflag & VBIOONSYNCLIST) &&
if ((vp->v_bioflag & VBIOONSYNCLIST) &&
reassignbuf(bp)	struct buf *bp;{	struct buflists *listheadp;	int delay;	struct vnode *vp = bp->b_vp;	/*	 * Delete from old vnode list, if on one.	 */	if (bp->b_vnbufs.le_next != NOLIST)		bufremvn(bp);	/*	 * If dirty, put on list of dirty buffers;	 * otherwise insert onto list of clean buffers.	 */	if ((bp->b_flags & B_DELWRI) == 0) {		listheadp = &vp->v_cleanblkhd;		if (TAILQ_EMPTY(&vp->v_uobj.memq) &&		    (vp->v_bioflag & VBIOONSYNCLIST) &&		    LIST_FIRST(&vp->v_dirtyblkhd) == NULL) {			vp->v_bioflag &= ~VBIOONSYNCLIST;			LIST_REMOVE(vp, v_synclist);		}	} else {		listheadp = &vp->v_dirtyblkhd;		if ((vp->v_bioflag & VBIOONSYNCLIST) == 0) {			switch (vp->v_type) {			case VDIR:				delay = syncdelay / 2;				break;			case VBLK:				if (vp->v_specmountpoint != NULL) {					delay = syncdelay / 3;					break;				}				/* fall through */			default:				delay = syncdelay;			}			vn_syncer_add_to_worklist(vp, delay);		}	}	bufinsvn(bp, listheadp);}