OSDN Git Service

mm: Convert swap_set_page_dirty() to swap_dirty_folio()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 9 Feb 2022 20:22:10 +0000 (20:22 +0000)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 15 Mar 2022 12:34:38 +0000 (08:34 -0400)
Straightforward conversion.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Acked-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Tested-by: Mike Marshall <hubcap@omnibond.com> # orangefs
Tested-by: David Howells <dhowells@redhat.com> # afs
include/linux/swap.h
mm/page_io.c
mm/swap_state.c

index 1d38d94..65a37e5 100644 (file)
@@ -427,7 +427,7 @@ extern int swap_writepage(struct page *page, struct writeback_control *wbc);
 extern void end_swap_bio_write(struct bio *bio);
 extern int __swap_writepage(struct page *page, struct writeback_control *wbc,
        bio_end_io_t end_write_func);
-extern int swap_set_page_dirty(struct page *page);
+bool swap_dirty_folio(struct address_space *mapping, struct folio *folio);
 
 int add_swap_extent(struct swap_info_struct *sis, unsigned long start_page,
                unsigned long nr_pages, sector_t start_block);
index 24c975f..8f20f4d 100644 (file)
@@ -438,19 +438,21 @@ out:
        return ret;
 }
 
-int swap_set_page_dirty(struct page *page)
+bool swap_dirty_folio(struct address_space *mapping, struct folio *folio)
 {
-       struct swap_info_struct *sis = page_swap_info(page);
+       struct swap_info_struct *sis = swp_swap_info(folio_swap_entry(folio));
 
        if (data_race(sis->flags & SWP_FS_OPS)) {
-               struct address_space *mapping = sis->swap_file->f_mapping;
-               const struct address_space_operations *aops = mapping->a_ops;
+               const struct address_space_operations *aops;
+
+               mapping = sis->swap_file->f_mapping;
+               aops = mapping->a_ops;
 
-               VM_BUG_ON_PAGE(!PageSwapCache(page), page);
+               VM_BUG_ON_FOLIO(!folio_test_swapcache(folio), folio);
                if (aops->dirty_folio)
-                       return aops->dirty_folio(mapping, page_folio(page));
-               return aops->set_page_dirty(page);
+                       return aops->dirty_folio(mapping, folio);
+               return aops->set_page_dirty(&folio->page);
        } else {
-               return __set_page_dirty_no_writeback(page);
+               return __set_page_dirty_no_writeback(&folio->page);
        }
 }
index 8d41042..4772afd 100644 (file)
@@ -30,7 +30,7 @@
  */
 static const struct address_space_operations swap_aops = {
        .writepage      = swap_writepage,
-       .set_page_dirty = swap_set_page_dirty,
+       .dirty_folio    = swap_dirty_folio,
 #ifdef CONFIG_MIGRATION
        .migratepage    = migrate_page,
 #endif