[XFS] Block on unwritten extent conversion during synchronous direct I/O.
authorDavid Chinner <dgc@sgi.com>
Tue, 5 Jun 2007 06:24:36 +0000 (16:24 +1000)
committerTim Shimmin <tes@chook.melbourne.sgi.com>
Sat, 14 Jul 2007 05:30:52 +0000 (15:30 +1000)
commite927af90aaa7d75543edbbd9c2810e6963d0443f
tree56da842111210cd39bd45365a42f52f3c50eaf14
parentf4a9f28a909debe97cd3f6ca30e82e5811125bff
[XFS] Block on unwritten extent conversion during synchronous direct I/O.

Currently we do not wait on extent conversion to occur, and hence we can
return to userspace from a synchronous direct I/O write without having
completed all the actions in the write. Hence a read after the write may
see zeroes (unwritten extent) rather than the data that was written.

Block the I/O completion by triggering a synchronous workqueue flush to
ensure that the conversion has occurred before we return to userspace.

SGI-PV: 964092
SGI-Modid: xfs-linux-melb:xfs-kern:28775a

Signed-off-by: David Chinner <dgc@sgi.com>
Signed-off-by: Tim Shimmin <tes@sgi.com>
fs/xfs/linux-2.6/xfs_aops.c