Re: [PATCH v7 3/4] xfs: xfs_seek_data() refinement with unwritten extents check up from page cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Aug 13, 2012 at 09:08:09PM +0800, Jeff Liu wrote:
> Improve xfs_seek_data() to search data offset from page cache for unwritten extents.
> 
> Signed-off-by: Jie Liu <jeff.liu@xxxxxxxxxx>

One minor addition, otherwise

Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

....
> +
> +		/*
> +		 * map[0] is hole or its an unwritten extent but
> +		 * without data in page cache.  Probably means that
> +		 * we are reading after EOF if nothing in map[1].
> +		 */
>  		if (nmap == 1) {
>  			error = ENXIO;
>  			goto out_unlock;
>  		}
>  
> -		offset = max_t(loff_t, start,
> -			       XFS_FSB_TO_B(mp, map[1].br_startoff));
> +		/*
> +		 * Nothing was found, proceed to the next round of search
> +		 * if reading offset not beyond or hit EOF.
> +		 */

		ASSERT(i > 1);

> +		fsbno = map[i - 1].br_startoff + map[i - 1].br_blockcount;
> +		start = XFS_FSB_TO_B(mp, fsbno);
> +		if (start >= isize) {
> +			error = ENXIO;
> +			goto out_unlock;
> +		}
>  	}
>  
> +out:
>  	if (offset != file->f_pos)
>  		file->f_pos = offset;

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux