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