if (!ni->runlist.rl) { read_lock_irqsave(&ni->size_lock, flags); if (!ni->allocated_size) { read_unlock_irqrestore(&ni->size_lock, flags); return ERR_PTR(-ENOENT); } read_unlock_irqrestore(&ni->size_lock, flags); } 
runlist_element *ntfs_attr_find_vcn_nolock(ntfs_inode *ni, const VCN vcn,		const BOOL write_locked){	runlist_element *rl;	int err = 0;	BOOL is_retry = FALSE;	ntfs_debug("Entering for i_ino 0x%lx, vcn 0x%llx, %s_locked.",			ni->mft_no, (unsigned long long)vcn,			write_locked ? "write" : "read");	BUG_ON(!ni);	BUG_ON(!NInoNonResident(ni));	BUG_ON(vcn < 0);retry_remap:	rl = ni->runlist.rl;	if (likely(rl && vcn >= rl[0].vcn)) {		while (likely(rl->length)) {			if (unlikely(vcn < rl[1].vcn)) {				if (likely(rl->lcn >= LCN_HOLE)) {					ntfs_debug("Done.");					return rl;				}				break;			}			rl++;		}		if (likely(rl->lcn != LCN_RL_NOT_MAPPED)) {			if (likely(rl->lcn == LCN_ENOENT))				err = -ENOENT;			else				err = -EIO;		}	}	if (!err && !is_retry) {		/*		 * The @vcn is in an unmapped region, map the runlist and		 * retry.		 */		if (!write_locked) {			up_read(&ni->runlist.lock);			down_write(&ni->runlist.lock);			if (unlikely(ntfs_rl_vcn_to_lcn(ni->runlist.rl, vcn) !=					LCN_RL_NOT_MAPPED)) {				up_write(&ni->runlist.lock);				down_read(&ni->runlist.lock);				goto retry_remap;			}		}		err = ntfs_map_runlist_nolock(ni, vcn);		if (!write_locked) {			up_write(&ni->runlist.lock);			down_read(&ni->runlist.lock);		}		if (likely(!err)) {			is_retry = TRUE;			goto retry_remap;		}		/*		 * -EINVAL coming from a failed mapping attempt is equivalent		 * to i/o error for us as it should not happen in our code		 * paths.		 */		if (err == -EINVAL)			err = -EIO;	} else if (!err)		err = -EIO;	if (err != -ENOENT)		ntfs_error(ni->vol->sb, "Failed with error code %i.", err);	return ERR_PTR(err);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/2983d1bd1a596e88cdddc0c2d45b9e97728f3f41/attrib.c/clean/fs/ntfs/attrib.c