(xtLookup(ip, lblock64, max_blocks, &xflag, &xaddr, &xlen, 0) == 0) && xlen) { 
(!xtLookup(ip, lblock64, max_blocks, &xflag, &xaddr, &xlen, 0)) && xlen) { 
jfs_get_blocks(struct inode *ip, sector_t lblock, unsigned long max_blocks,			struct buffer_head *bh_result, int create){	s64 lblock64 = lblock;	int rc = 0;	int take_locks;	xad_t xad;	s64 xaddr;	int xflag;	s32 xlen;	/*	 * If this is a special inode (imap, dmap)	 * the lock should already be taken	 */	take_locks = (JFS_IP(ip)->fileset != AGGREGATE_I);	/*	 * Take appropriate lock on inode	 */	if (take_locks) {		if (create)			IWRITE_LOCK(ip);		else			IREAD_LOCK(ip);	}	if (((lblock64 << ip->i_sb->s_blocksize_bits) < ip->i_size) &&	    (xtLookup(ip, lblock64, max_blocks, &xflag, &xaddr, &xlen, 0)	     == 0) && xlen) {		if (xflag & XAD_NOTRECORDED) {			if (!create)				/*				 * Allocated but not recorded, read treats				 * this as a hole				 */				goto unlock;#ifdef _JFS_4K			XADoffset(&xad, lblock64);			XADlength(&xad, xlen);			XADaddress(&xad, xaddr);#else				/* _JFS_4K */			/*			 * As long as block size = 4K, this isn't a problem.			 * We should mark the whole page not ABNR, but how			 * will we know to mark the other blocks BH_New?			 */			BUG();#endif				/* _JFS_4K */			rc = extRecord(ip, &xad);			if (rc)				goto unlock;			set_buffer_new(bh_result);		}		map_bh(bh_result, ip->i_sb, xaddr);		bh_result->b_size = xlen << ip->i_blkbits;		goto unlock;	}	if (!create)		goto unlock;	/*	 * Allocate a new block	 */#ifdef _JFS_4K	if ((rc = extHint(ip, lblock64 << ip->i_sb->s_blocksize_bits, &xad)))		goto unlock;	rc = extAlloc(ip, max_blocks, lblock64, &xad, FALSE);	if (rc)		goto unlock;	set_buffer_new(bh_result);	map_bh(bh_result, ip->i_sb, addressXAD(&xad));	bh_result->b_size = lengthXAD(&xad) << ip->i_blkbits;#else				/* _JFS_4K */	/*	 * We need to do whatever it takes to keep all but the last buffers	 * in 4K pages - see jfs_write.c	 */	BUG();#endif				/* _JFS_4K */      unlock:	/*	 * Release lock on inode	 */	if (take_locks) {		if (create)			IWRITE_UNLOCK(ip);		else			IREAD_UNLOCK(ip);	}	return rc;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/7fab479bebb96b1b4888bdae9b42e1fa9c5d3f38/inode.c/buggy/fs/jfs/inode.c