} 
int xtLookup(struct inode *ip, s64 lstart,	     s64 llen, int *pflag, s64 * paddr, s32 * plen, int no_check){	int rc = 0;	struct btstack btstack;	int cmp;	s64 bn;	struct metapage *mp;	xtpage_t *p;	int index;	xad_t *xad;	s64 size, xoff, xend;	int xlen;	s64 xaddr;	*plen = 0;	if (!no_check) {		/* is lookup offset beyond eof ? */		size = ((u64) ip->i_size + (JFS_SBI(ip->i_sb)->bsize - 1)) >>		    JFS_SBI(ip->i_sb)->l2bsize;		if (lstart >= size) {			jfs_err("xtLookup: lstart (0x%lx) >= size (0x%lx)",				(ulong) lstart, (ulong) size);			return 0;		}	}	/*	 * search for the xad entry covering the logical extent	 *///search:	if ((rc = xtSearch(ip, lstart, &cmp, &btstack, 0))) {		jfs_err("xtLookup: xtSearch returned %d", rc);		return rc;	}	/*	 *      compute the physical extent covering logical extent	 *	 * N.B. search may have failed (e.g., hole in sparse file),	 * and returned the index of the next entry.	 */	/* retrieve search result */	XT_GETSEARCH(ip, btstack.top, bn, mp, p, index);	/* is xad found covering start of logical extent ?	 * lstart is a page start address,	 * i.e., lstart cannot start in a hole;	 */	if (cmp)		goto out;	/*	 * lxd covered by xad	 */	xad = &p->xad[index];	xoff = offsetXAD(xad);	xlen = lengthXAD(xad);	xend = xoff + xlen;	xaddr = addressXAD(xad);	/* initialize new pxd */	*pflag = xad->flag;	*paddr = xaddr + (lstart - xoff);	/* a page must be fully covered by an xad */	*plen = min(xend - lstart, llen);      out:	XT_PUTPAGE(mp);	return rc;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/6628465e33ca694bd8fd5c3cf4eb7ff9177bc694/jfs_xtree.c/buggy/fs/jfs/jfs_xtree.c