@@ -1197,8 +1197,8 @@ static ssize_t fuse_send_write_pages(struct fuse_io_args *ia,
11971197 bool short_write ;
11981198 int err ;
11991199
1200- for (i = 0 ; i < ap -> num_pages ; i ++ )
1201- fuse_wait_on_page_writeback (inode , ap -> pages [i ]-> index );
1200+ for (i = 0 ; i < ap -> num_folios ; i ++ )
1201+ fuse_wait_on_folio_writeback (inode , ap -> folios [i ]);
12021202
12031203 fuse_write_args_fill (ia , ff , pos , count );
12041204 ia -> write .in .flags = fuse_write_flags (iocb );
@@ -1210,10 +1210,10 @@ static ssize_t fuse_send_write_pages(struct fuse_io_args *ia,
12101210 err = - EIO ;
12111211
12121212 short_write = ia -> write .out .size < count ;
1213- offset = ap -> descs [0 ].offset ;
1213+ offset = ap -> folio_descs [0 ].offset ;
12141214 count = ia -> write .out .size ;
1215- for (i = 0 ; i < ap -> num_pages ; i ++ ) {
1216- struct folio * folio = page_folio ( ap -> pages [i ]) ;
1215+ for (i = 0 ; i < ap -> num_folios ; i ++ ) {
1216+ struct folio * folio = ap -> folios [i ];
12171217
12181218 if (err ) {
12191219 folio_clear_uptodate (folio );
@@ -1227,7 +1227,7 @@ static ssize_t fuse_send_write_pages(struct fuse_io_args *ia,
12271227 }
12281228 offset = 0 ;
12291229 }
1230- if (ia -> write .page_locked && (i == ap -> num_pages - 1 ))
1230+ if (ia -> write .folio_locked && (i == ap -> num_folios - 1 ))
12311231 folio_unlock (folio );
12321232 folio_put (folio );
12331233 }
@@ -1243,11 +1243,12 @@ static ssize_t fuse_fill_write_pages(struct fuse_io_args *ia,
12431243 struct fuse_args_pages * ap = & ia -> ap ;
12441244 struct fuse_conn * fc = get_fuse_conn (mapping -> host );
12451245 unsigned offset = pos & (PAGE_SIZE - 1 );
1246+ unsigned int nr_pages = 0 ;
12461247 size_t count = 0 ;
12471248 int err ;
12481249
12491250 ap -> args .in_pages = true;
1250- ap -> descs [0 ].offset = offset ;
1251+ ap -> folio_descs [0 ].offset = offset ;
12511252
12521253 do {
12531254 size_t tmp ;
@@ -1283,9 +1284,10 @@ static ssize_t fuse_fill_write_pages(struct fuse_io_args *ia,
12831284 }
12841285
12851286 err = 0 ;
1286- ap -> pages [ap -> num_pages ] = & folio -> page ;
1287- ap -> descs [ap -> num_pages ].length = tmp ;
1288- ap -> num_pages ++ ;
1287+ ap -> folios [ap -> num_folios ] = folio ;
1288+ ap -> folio_descs [ap -> num_folios ].length = tmp ;
1289+ ap -> num_folios ++ ;
1290+ nr_pages ++ ;
12891291
12901292 count += tmp ;
12911293 pos += tmp ;
@@ -1300,13 +1302,13 @@ static ssize_t fuse_fill_write_pages(struct fuse_io_args *ia,
13001302 if (folio_test_uptodate (folio )) {
13011303 folio_unlock (folio );
13021304 } else {
1303- ia -> write .page_locked = true;
1305+ ia -> write .folio_locked = true;
13041306 break ;
13051307 }
13061308 if (!fc -> big_writes )
13071309 break ;
13081310 } while (iov_iter_count (ii ) && count < fc -> max_write &&
1309- ap -> num_pages < max_pages && offset == 0 );
1311+ nr_pages < max_pages && offset == 0 );
13101312
13111313 return count > 0 ? count : err ;
13121314}
@@ -1340,8 +1342,9 @@ static ssize_t fuse_perform_write(struct kiocb *iocb, struct iov_iter *ii)
13401342 unsigned int nr_pages = fuse_wr_pages (pos , iov_iter_count (ii ),
13411343 fc -> max_pages );
13421344
1343- ap -> pages = fuse_pages_alloc (nr_pages , GFP_KERNEL , & ap -> descs );
1344- if (!ap -> pages ) {
1345+ ap -> uses_folios = true;
1346+ ap -> folios = fuse_folios_alloc (nr_pages , GFP_KERNEL , & ap -> folio_descs );
1347+ if (!ap -> folios ) {
13451348 err = - ENOMEM ;
13461349 break ;
13471350 }
@@ -1363,7 +1366,7 @@ static ssize_t fuse_perform_write(struct kiocb *iocb, struct iov_iter *ii)
13631366 err = - EIO ;
13641367 }
13651368 }
1366- kfree (ap -> pages );
1369+ kfree (ap -> folios );
13671370 } while (!err && iov_iter_count (ii ));
13681371
13691372 fuse_write_update_attr (inode , pos , res );
0 commit comments