Skip to content

Commit ff7c3ee

Browse files
joannekoongMiklos Szeredi
authored andcommitted
fuse: support large folios for queued writes
Add support for folios larger than one page size for queued writes. Signed-off-by: Joanne Koong <[email protected]> Reviewed-by: Josef Bacik <[email protected]> Reviewed-by: Jeff Layton <[email protected]> Reviewed-by: Bernd Schubert <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
1 parent c91440c commit ff7c3ee

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

fs/fuse/file.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1789,11 +1789,14 @@ __releases(fi->lock)
17891789
__acquires(fi->lock)
17901790
{
17911791
struct fuse_inode *fi = get_fuse_inode(wpa->inode);
1792+
struct fuse_args_pages *ap = &wpa->ia.ap;
17921793
struct fuse_write_in *inarg = &wpa->ia.write.in;
1793-
struct fuse_args *args = &wpa->ia.ap.args;
1794-
/* Currently, all folios in FUSE are one page */
1795-
__u64 data_size = wpa->ia.ap.num_folios * PAGE_SIZE;
1796-
int err;
1794+
struct fuse_args *args = &ap->args;
1795+
__u64 data_size = 0;
1796+
int err, i;
1797+
1798+
for (i = 0; i < ap->num_folios; i++)
1799+
data_size += ap->descs[i].length;
17971800

17981801
fi->writectr++;
17991802
if (inarg->offset + data_size <= size) {

0 commit comments

Comments
 (0)