2023-11-22 09:02:55

by Ritesh Harjani

[permalink] [raw]
Subject: [PATCHv2] ext2: Fix ki_pos update for DIO buffered-io fallback case

Commit "filemap: update ki_pos in generic_perform_write", made updating
of ki_pos into common code in generic_perform_write() function.
This also causes generic/091 to fail.
This happened due to an in-flight collision with:
fb5de4358e1a ("ext2: Move direct-io to use iomap"). I have chosen fixes tag
based on which commit got landed later to upstream kernel.

Fixes: 182c25e9c157 ("filemap: update ki_pos in generic_perform_write")
Cc: [email protected]
Reviewed-by: Christoph Hellwig <[email protected]>
Signed-off-by: Ritesh Harjani (IBM) <[email protected]>
---
fs/ext2/file.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/fs/ext2/file.c b/fs/ext2/file.c
index 1039e5bf90af..4ddc36f4dbd4 100644
--- a/fs/ext2/file.c
+++ b/fs/ext2/file.c
@@ -258,7 +258,6 @@ static ssize_t ext2_dio_write_iter(struct kiocb *iocb, struct iov_iter *from)
goto out_unlock;
}

- iocb->ki_pos += status;
ret += status;
endbyte = pos + status - 1;
ret2 = filemap_write_and_wait_range(inode->i_mapping, pos,
--
2.41.0



2023-11-22 09:18:30

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCHv2] ext2: Fix ki_pos update for DIO buffered-io fallback case

On Wed 22-11-23 14:32:15, Ritesh Harjani (IBM) wrote:
> Commit "filemap: update ki_pos in generic_perform_write", made updating
> of ki_pos into common code in generic_perform_write() function.
> This also causes generic/091 to fail.
> This happened due to an in-flight collision with:
> fb5de4358e1a ("ext2: Move direct-io to use iomap"). I have chosen fixes tag
> based on which commit got landed later to upstream kernel.
>
> Fixes: 182c25e9c157 ("filemap: update ki_pos in generic_perform_write")
> Cc: [email protected]
> Reviewed-by: Christoph Hellwig <[email protected]>
> Signed-off-by: Ritesh Harjani (IBM) <[email protected]>

Thanks! I've applied the patch to my tree and will push it to Linus soon.

Honza

> ---
> fs/ext2/file.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/fs/ext2/file.c b/fs/ext2/file.c
> index 1039e5bf90af..4ddc36f4dbd4 100644
> --- a/fs/ext2/file.c
> +++ b/fs/ext2/file.c
> @@ -258,7 +258,6 @@ static ssize_t ext2_dio_write_iter(struct kiocb *iocb, struct iov_iter *from)
> goto out_unlock;
> }
>
> - iocb->ki_pos += status;
> ret += status;
> endbyte = pos + status - 1;
> ret2 = filemap_write_and_wait_range(inode->i_mapping, pos,
> --
> 2.41.0
>
--
Jan Kara <[email protected]>
SUSE Labs, CR