[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170301154058.GD30631@infradead.org>
Date: Wed, 1 Mar 2017 07:40:58 -0800
From: Christoph Hellwig <hch@...radead.org>
To: Goldwyn Rodrigues <rgoldwyn@...e.de>
Cc: jack@...e.com, hch@...radead.org, linux-fsdevel@...r.kernel.org,
linux-block@...r.kernel.org, linux-btrfs@...r.kernel.org,
linux-ext4@...r.kernel.org, linux-xfs@...r.kernel.org,
Goldwyn Rodrigues <rgoldwyn@...e.com>
Subject: Re: [PATCH 7/8] nowait aio: xfs
> @@ -528,12 +528,17 @@ xfs_file_dio_aio_write(
> ((iocb->ki_pos + count) & mp->m_blockmask)) {
> unaligned_io = 1;
> iolock = XFS_IOLOCK_EXCL;
> + if (iocb->ki_flags & IOCB_NOWAIT)
> + return -EAGAIN;
So all unaligned I/O will return -EAGAIN? Why? Also please explain
that reason in a comment right here.
> diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
> index 1aa3abd..84f981a 100644
> --- a/fs/xfs/xfs_iomap.c
> +++ b/fs/xfs/xfs_iomap.c
> @@ -1020,6 +1020,11 @@ xfs_file_iomap_begin(
> if ((flags & IOMAP_REPORT) ||
> (xfs_is_reflink_inode(ip) &&
> (flags & IOMAP_WRITE) && (flags & IOMAP_DIRECT))) {
> + /* Allocations due to reflinks */
> + if ((flags & IOMAP_NOWAIT) && !(flags & IOMAP_REPORT)) {
> + error = -EAGAIN;
> + goto out_unlock;
> + }
FYI, this code looks very different in current Linus' tree - I think
you're on some old kernel base.
Powered by blists - more mailing lists