xfs: abort unaligned nowait directio early
authorDarrick J. Wong <darrick.wong@oracle.com>
Wed, 17 Apr 2019 15:49:36 +0000 (08:49 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Tue, 23 Apr 2019 15:36:23 +0000 (08:36 -0700)
commit1fdeaea4d92c69fb9f871a787af6ad00f32eeea7
treee98d1575435dd511b7dc778b1010f867ea6a5ea5
parent362f5e745ae2ee2be9cf181b3a22917d619b81a1
xfs: abort unaligned nowait directio early

Dave Chinner noticed that xfs_file_dio_aio_write returns EAGAIN without
dropping the IOLOCK when its deciding not to wait, which means that we
leak the IOLOCK there.  Since we now make unaligned directio always
wait, we have the opportunity to bail out before trying to take the
lock, which should reduce the overhead of this never-gonna-work case
considerably while also solving the dropped lock problem.

Reported-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/xfs_file.c