From: Joachim Henke <[email protected]>
Since 5.10, splice() or sendfile() to NILFS2 return EINVAL. This was
caused by commit 36e2c7421f02 ("fs: don't allow splice read/write
without explicit ops").
This patch initializes the splice_write field in file_operations, like
most file systems do, to restore the functionality.
Signed-off-by: Joachim Henke <[email protected]>
Signed-off-by: Ryusuke Konishi <[email protected]>
Tested-by: Ryusuke Konishi <[email protected]>
Cc: [email protected] # 5.10+
---
fs/nilfs2/file.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/fs/nilfs2/file.c b/fs/nilfs2/file.c
index 64bc81363c6c..e1bd592ce700 100644
--- a/fs/nilfs2/file.c
+++ b/fs/nilfs2/file.c
@@ -141,6 +141,7 @@ static int nilfs_file_mmap(struct file *file, struct vm_area_struct *vma)
/* .release = nilfs_release_file, */
.fsync = nilfs_sync_file,
.splice_read = generic_file_splice_read,
+ .splice_write = iter_file_splice_write,
};
const struct inode_operations nilfs_file_inode_operations = {
--
1.8.3.1
Hi Andrew,
Please send this to upstream. This fixes a regression of splice() on nilfs2.
Thanks,
Ryusuke Konishi
On Mon, Feb 8, 2021 at 8:35 PM Ryusuke Konishi
<[email protected]> wrote:
>
> From: Joachim Henke <[email protected]>
>
> Since 5.10, splice() or sendfile() to NILFS2 return EINVAL. This was
> caused by commit 36e2c7421f02 ("fs: don't allow splice read/write
> without explicit ops").
>
> This patch initializes the splice_write field in file_operations, like
> most file systems do, to restore the functionality.
>
> Signed-off-by: Joachim Henke <[email protected]>
> Signed-off-by: Ryusuke Konishi <[email protected]>
> Tested-by: Ryusuke Konishi <[email protected]>
> Cc: [email protected] # 5.10+
> ---
> fs/nilfs2/file.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/nilfs2/file.c b/fs/nilfs2/file.c
> index 64bc81363c6c..e1bd592ce700 100644
> --- a/fs/nilfs2/file.c
> +++ b/fs/nilfs2/file.c
> @@ -141,6 +141,7 @@ static int nilfs_file_mmap(struct file *file, struct vm_area_struct *vma)
> /* .release = nilfs_release_file, */
> .fsync = nilfs_sync_file,
> .splice_read = generic_file_splice_read,
> + .splice_write = iter_file_splice_write,
> };
>
> const struct inode_operations nilfs_file_inode_operations = {
> --
> 1.8.3.1
>