|
@@ -581,6 +581,16 @@ restart:
|
|
|
xfs_rw_iunlock(ip, *iolock);
|
|
|
*iolock = XFS_IOLOCK_EXCL;
|
|
|
xfs_rw_ilock(ip, *iolock);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * We now have an IO submission barrier in place, but
|
|
|
+ * AIO can do EOF updates during IO completion and hence
|
|
|
+ * we now need to wait for all of them to drain. Non-AIO
|
|
|
+ * DIO will have drained before we are given the
|
|
|
+ * XFS_IOLOCK_EXCL, and so for most cases this wait is a
|
|
|
+ * no-op.
|
|
|
+ */
|
|
|
+ inode_dio_wait(inode);
|
|
|
goto restart;
|
|
|
}
|
|
|
error = xfs_zero_eof(ip, *pos, i_size_read(inode));
|