mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 15:03:52 +08:00
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:
committed by
Miklos Szeredi
parent
c91440c89f
commit
ff7c3ee484
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user