]> git.karo-electronics.de Git - linux-beck.git/commitdiff
[XFS] Flush and invalidate dirty pages at the start of a direct read also,
authorNathan Scott <nathans@sgi.com>
Fri, 17 Mar 2006 06:26:41 +0000 (17:26 +1100)
committerNathan Scott <nathans@sgi.com>
Fri, 17 Mar 2006 06:26:41 +0000 (17:26 +1100)
else we can hit a delalloc-extents-via-direct-io BUG.

SGI-PV: 949916
SGI-Modid: xfs-linux-melb:xfs-kern:25483a

Signed-off-by: Nathan Scott <nathans@sgi.com>
fs/xfs/linux-2.6/xfs_lrw.c

index ba07b83f988d4b4a08308fa0cc494d6574cea161..2a936bd38ce7591780e7e426e0438fe86ec1a006 100644 (file)
@@ -270,6 +270,10 @@ xfs_read(
                }
        }
 
+       if (unlikely((ioflags & IO_ISDIRECT) && VN_CACHED(vp)))
+               VOP_FLUSHINVAL_PAGES(vp, ctooff(offtoct(*offset)),
+                                               -1, FI_REMAPF_LOCKED);
+
        xfs_rw_enter_trace(XFS_READ_ENTER, &ip->i_iocore,
                                (void *)iovp, segs, *offset, ioflags);
        ret = __generic_file_aio_read(iocb, iovp, segs, offset);