2020-02-01 04:01:09

by chenqiwu

[permalink] [raw]
Subject: [PATCH] ext4: remove trivial nowait check for buffered write

From: chenqiwu <[email protected]>

Remove trivial nowait check for ext4_buffered_write_iter(),
since buffered writes will return -EINVAL if IOCB_NOWAIT
passed in the follow-up function ext4_write_checks()->
ext4_generic_write_checks()->generic_write_checks().

Signed-off-by: chenqiwu <[email protected]>
---
fs/ext4/file.c | 3 ---
1 file changed, 3 deletions(-)

diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 5f22588..18ae435 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -258,9 +258,6 @@ static ssize_t ext4_buffered_write_iter(struct kiocb *iocb,
ssize_t ret;
struct inode *inode = file_inode(iocb->ki_filp);

- if (iocb->ki_flags & IOCB_NOWAIT)
- return -EOPNOTSUPP;
-
inode_lock(inode);
ret = ext4_write_checks(iocb, from);
if (ret <= 0)
--
1.9.1


2020-02-01 22:52:07

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH] ext4: remove trivial nowait check for buffered write

On Sat, Feb 01, 2020 at 12:00:39PM +0800, [email protected] wrote:
> From: chenqiwu <[email protected]>
>
> Remove trivial nowait check for ext4_buffered_write_iter(),
> since buffered writes will return -EINVAL if IOCB_NOWAIT
> passed in the follow-up function ext4_write_checks()->
> ext4_generic_write_checks()->generic_write_checks().
>
> Signed-off-by: chenqiwu <[email protected]>

The reason why we do this check here is so that we return immediately
and not potentially block when we call inode_lock(). Otherwise, an
AIO request with IOCB_NOWAIT could block, and that's not allowed.

- Ted