xfs: reorder zeroing and flushing sequence in truncate
authorChristoph Hellwig <hch@lst.de>
Mon, 20 Jun 2016 23:52:47 +0000 (09:52 +1000)
committerDave Chinner <david@fromorbit.com>
Mon, 20 Jun 2016 23:52:47 +0000 (09:52 +1000)
commitf0c6bcba74ac51cb77aadb33ad35cb2dc1ad1506
treec4674d611e81f13021becc33e08ebd2a411d47c4
parent3b3dce05279b97525741b7949208017307e05621
xfs: reorder zeroing and flushing sequence in truncate

Currently zeroing out blocks and waiting for writeout is a bit of a mess in
truncate.  This patch gives it a clear order in preparation for the iomap
path:

 (1) we first wait for any direct I/O to complete to prevent any races
     for it
 (2) we then perform the actual zeroing, and only use the truncate_page
     helpers for truncating down.  The truncate up case already is
     handled by the separate call to xfs_zero_eof.
 (3) only then we write back dirty data, as zeroing block may cause
     dirty pages when using either xfs_zero_eof or the new iomap
     infrastructure.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/xfs_iops.c