* First run of @dst that needs to be moved out of the way to make * space for the runs to be copied from @src, i.e. the first run of the * tail of @dst. 
* Offset of the tail of @dst.  This needs to be moved out of the way * to make space for the runs to be copied from @src, i.e. the first * run of the tail of @dst. * Nominally, @tail equals @loc + 1, i.e. location, skipping the * replaced run.  However, if @right, then one of @dst's runs is * already merged into @src. 
static inline runlist_element *ntfs_rl_replace(runlist_element *dst,		int dsize, runlist_element *src, int ssize, int loc){	BOOL left = FALSE;	/* Left end of @src needs merging. */	BOOL right;		/* Right end of @src needs merging. */	int tail;		/* Start of tail of @dst. */	int marker;		/* End of the inserted runs. */	BUG_ON(!dst);	BUG_ON(!src);	/* First, merge the left and right ends, if necessary. */	right = ntfs_are_rl_mergeable(src + ssize - 1, dst + loc + 1);	if (loc > 0)		left = ntfs_are_rl_mergeable(dst + loc - 1, src);	/*	 * Allocate some space.  We will need less if the left, right, or both	 * ends were merged.	 */	dst = ntfs_rl_realloc(dst, dsize, dsize + ssize - left - right);	if (IS_ERR(dst))		return dst;	/*	 * We are guaranteed to succeed from here so can start modifying the	 * original runlists.	 */	if (right)		__ntfs_rl_merge(src + ssize - 1, dst + loc + 1);	if (left)		__ntfs_rl_merge(dst + loc - 1, src);	/*	 * First run of @dst that needs to be moved out of the way to make	 * space for the runs to be copied from @src, i.e. the first run of the	 * tail of @dst.	 */	tail = loc + right + 1;	/*	 * First run after the @src runs that have been inserted, i.e. where	 * the tail of @dst needs to be moved to.	 * Nominally, marker equals @loc + @ssize, i.e. location + number of	 * runs in @src).  However, if @left, then the first run in @src has	 * been merged with one in @dst.	 */	marker = loc + ssize - left;	/* Move the tail of @dst out of the way, then copy in @src. */	ntfs_rl_mm(dst, marker, tail, dsize - tail);	ntfs_rl_mc(dst, loc, src, left, ssize - left);	/* We may have changed the length of the file, so fix the end marker. */	if (dsize - tail > 0 && dst[marker].lcn == LCN_ENOENT)		dst[marker].vcn = dst[marker - 1].vcn + dst[marker - 1].length;	return dst;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/eed8b2dee7cff46dd4bf5b82dc53465d229162ba/runlist.c/buggy/fs/ntfs/runlist.c