fuse: support large folios for queued writes

Add support for folios larger than one page size for queued writes.

Signed-off-by: Joanne Koong <joannelkoong@gmail.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Bernd Schubert <bschubert@ddn.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
Joanne Koong
2025-05-12 15:58:37 -07:00
committed by Miklos Szeredi
parent c91440c89f
commit ff7c3ee484

View File

@@ -1789,11 +1789,14 @@ __releases(fi->lock)
__acquires(fi->lock)
{
struct fuse_inode *fi = get_fuse_inode(wpa->inode);
struct fuse_args_pages *ap = &wpa->ia.ap;
struct fuse_write_in *inarg = &wpa->ia.write.in;
struct fuse_args *args = &wpa->ia.ap.args;
/* Currently, all folios in FUSE are one page */
__u64 data_size = wpa->ia.ap.num_folios * PAGE_SIZE;
int err;
struct fuse_args *args = &ap->args;
__u64 data_size = 0;
int err, i;
for (i = 0; i < ap->num_folios; i++)
data_size += ap->descs[i].length;
fi->writectr++;
if (inarg->offset + data_size <= size) {