On 4/26/22 3:56 PM, Dave Chinner wrote: > On Tue, Apr 26, 2022 at 10:43:28AM -0700, Stefan Roesch wrote: >> This adds the async buffered write support to XFS. For async buffered >> write requests, the request will return -EAGAIN if the ilock cannot be >> obtained immediately. >> >> Signed-off-by: Stefan Roesch <shr@xxxxxx> >> --- >> fs/xfs/xfs_file.c | 10 ++++++---- >> 1 file changed, 6 insertions(+), 4 deletions(-) >> >> diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c >> index 6f9da1059e8b..49d54b939502 100644 >> --- a/fs/xfs/xfs_file.c >> +++ b/fs/xfs/xfs_file.c >> @@ -739,12 +739,14 @@ xfs_file_buffered_write( >> bool cleared_space = false; >> int iolock; >> >> - if (iocb->ki_flags & IOCB_NOWAIT) >> - return -EOPNOTSUPP; >> - >> write_retry: >> iolock = XFS_IOLOCK_EXCL; >> - xfs_ilock(ip, iolock); >> + if (iocb->ki_flags & IOCB_NOWAIT) { >> + if (!xfs_ilock_nowait(ip, iolock)) >> + return -EAGAIN; >> + } else { >> + xfs_ilock(ip, iolock); >> + } > > xfs_ilock_iocb(). > The helper xfs_ilock_iocb cannot be used as it hardcoded to use iocb->ki_filp to get a pointer to the xfs_inode. However here we need to use iocb->ki_filp->f_mapping->host. I'll split off new helper for this in the next version of the patch. > -Dave. >