} else { KASSERT(size >= bp->b_bcount); bp->b_resid += size - bp->b_bcount; bp->b_bcount = size;
softdep_setup_pagecache(ip, lbn, size)	struct inode *ip;	ufs_lbn_t lbn;	long size;{	struct vnode *vp = ITOV(ip);	struct buf *bp;	int s;	/*	 * Enter pagecache dependency buf in hash.	 */	bp = softdep_lookup_pcbp(vp, lbn);	if (bp == NULL) {		s = splbio();		bp = pool_get(&sdpcpool, PR_WAITOK);		splx(s);		bp->b_vp = vp;		bp->b_lblkno = lbn;		bp->b_bcount = bp->b_resid = size;		LIST_INIT(&bp->b_dep);		LIST_INSERT_HEAD(&pcbphashhead[PCBPHASH(vp, lbn)], bp, b_hash);		LIST_INSERT_HEAD(&ip->i_pcbufhd, bp, b_vnbufs);	} else {		KASSERT(size >= bp->b_bcount);		bp->b_resid += size - bp->b_bcount;		bp->b_bcount = size;	}	return bp;}