Skip to content

Commit 013a070

Browse files
Matthew Wilcox (Oracle)akpm00
authored andcommitted
nilfs2: convert metadata aops from writepage to writepages
By implementing ->writepages instead of ->writepage, we remove a layer of indirect function calls from the writeback path and the last use of struct page in nilfs2. [[email protected]: fixed panic by using buffer_migrate_folio_norefs] Link: https://lkml.kernel.org/r/[email protected] Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Signed-off-by: Ryusuke Konishi <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent b18d78d commit 013a070

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

fs/nilfs2/mdt.c

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -399,10 +399,9 @@ int nilfs_mdt_fetch_dirty(struct inode *inode)
399399
return test_bit(NILFS_I_DIRTY, &ii->i_state);
400400
}
401401

402-
static int
403-
nilfs_mdt_write_page(struct page *page, struct writeback_control *wbc)
402+
static int nilfs_mdt_write_folio(struct folio *folio,
403+
struct writeback_control *wbc)
404404
{
405-
struct folio *folio = page_folio(page);
406405
struct inode *inode = folio->mapping->host;
407406
struct super_block *sb;
408407
int err = 0;
@@ -435,11 +434,23 @@ nilfs_mdt_write_page(struct page *page, struct writeback_control *wbc)
435434
return err;
436435
}
437436

437+
static int nilfs_mdt_writeback(struct address_space *mapping,
438+
struct writeback_control *wbc)
439+
{
440+
struct folio *folio = NULL;
441+
int error;
442+
443+
while ((folio = writeback_iter(mapping, wbc, folio, &error)))
444+
error = nilfs_mdt_write_folio(folio, wbc);
445+
446+
return error;
447+
}
438448

439449
static const struct address_space_operations def_mdt_aops = {
440450
.dirty_folio = block_dirty_folio,
441451
.invalidate_folio = block_invalidate_folio,
442-
.writepage = nilfs_mdt_write_page,
452+
.writepages = nilfs_mdt_writeback,
453+
.migrate_folio = buffer_migrate_folio_norefs,
443454
};
444455

445456
static const struct inode_operations def_mdt_iops;

0 commit comments

Comments
 (0)