Thread (4 messages) 4 messages, 3 authors, 2012-08-21

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

From: Dave Chinner <david@fromorbit.com>
Date: 2012-08-20 23:16:10

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 <redacted>
One minor addition, otherwise

Reviewed-by: Dave Chinner <redacted>

....
+
+		/*
+		 * 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@fromorbit.com

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help