[XFS] Fix inode size update before data write in xfs_setattr
authorDavid Chinner <dgc@sgi.com>
Thu, 19 Jul 2007 06:28:58 +0000 (16:28 +1000)
committerTim Shimmin <tes@chook.melbourne.sgi.com>
Thu, 19 Jul 2007 09:52:05 +0000 (19:52 +1000)
commitc32676eea19ce29cb74dba0f97b085e83f6b8915
tree5eddf206e10b0b1857c899fd9939c517aa758359
parent91ebecc74eeeeea0a2aa50bf1964ec2214a229c9
[XFS] Fix inode size update before data write in xfs_setattr

When changing the file size by a truncate() call, we log the change in the
inode size. However, we do not flush any outstanding data that might not
have been written to disk, thereby violating the data/inode size update
order. This can leave files full of NULLs on crash.

Hence if we are truncating the file, flush any unwritten data that may lie
between the curret on disk inode size and the new inode size that is being
logged to ensure that ordering is preserved.

SGI-PV: 966308
SGI-Modid: xfs-linux-melb:xfs-kern:29174a

Signed-off-by: David Chinner <dgc@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Tim Shimmin <tes@sgi.com>
fs/xfs/xfs_vnodeops.c