Skip to content

Commit 4f8cf60

Browse files
Matthew Wilcox (Oracle)jankara
authored andcommitted
reiserfs: Convert to writepages
Use buffer_migrate_folio to handle folio migration instead of writing out dirty pages and reading them back in again. Use writepages to write out folios more efficiently. We now only do that wait_on_write_block check once per call to writepages instead of once per page. It would be possible to do one transaction per writeback run, but that's a bit of a big change to do to this old filesystem, so leave it as one transaction per folio (and leave reiserfs supporting only one page per folio). Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Reviewed-by: Jan Kara <[email protected]> Signed-off-by: Jan Kara <[email protected]> Message-Id: <[email protected]>
1 parent 3b84adf commit 4f8cf60

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

fs/reiserfs/inode.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2503,8 +2503,8 @@ static int map_block_for_writepage(struct inode *inode,
25032503
* start/recovery path as __block_write_full_folio, along with special
25042504
* code to handle reiserfs tails.
25052505
*/
2506-
static int reiserfs_write_full_folio(struct folio *folio,
2507-
struct writeback_control *wbc)
2506+
static int reiserfs_write_folio(struct folio *folio,
2507+
struct writeback_control *wbc, void *data)
25082508
{
25092509
struct inode *inode = folio->mapping->host;
25102510
unsigned long end_index = inode->i_size >> PAGE_SHIFT;
@@ -2721,12 +2721,11 @@ static int reiserfs_read_folio(struct file *f, struct folio *folio)
27212721
return block_read_full_folio(folio, reiserfs_get_block);
27222722
}
27232723

2724-
static int reiserfs_writepage(struct page *page, struct writeback_control *wbc)
2724+
static int reiserfs_writepages(struct address_space *mapping,
2725+
struct writeback_control *wbc)
27252726
{
2726-
struct folio *folio = page_folio(page);
2727-
struct inode *inode = folio->mapping->host;
2728-
reiserfs_wait_on_write_block(inode->i_sb);
2729-
return reiserfs_write_full_folio(folio, wbc);
2727+
reiserfs_wait_on_write_block(mapping->host->i_sb);
2728+
return write_cache_pages(mapping, wbc, reiserfs_write_folio, NULL);
27302729
}
27312730

27322731
static void reiserfs_truncate_failed_write(struct inode *inode)
@@ -3405,7 +3404,7 @@ int reiserfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
34053404
}
34063405

34073406
const struct address_space_operations reiserfs_address_space_operations = {
3408-
.writepage = reiserfs_writepage,
3407+
.writepages = reiserfs_writepages,
34093408
.read_folio = reiserfs_read_folio,
34103409
.readahead = reiserfs_readahead,
34113410
.release_folio = reiserfs_release_folio,
@@ -3415,4 +3414,5 @@ const struct address_space_operations reiserfs_address_space_operations = {
34153414
.bmap = reiserfs_aop_bmap,
34163415
.direct_IO = reiserfs_direct_IO,
34173416
.dirty_folio = reiserfs_dirty_folio,
3417+
.migrate_folio = buffer_migrate_folio,
34183418
};

0 commit comments

Comments
 (0)