diff options
author | NeilBrown <neilb@suse.de> | 2022-05-09 18:20:47 -0700 |
---|---|---|
committer | akpm <akpm@linux-foundation.org> | 2022-05-09 18:20:47 -0700 |
commit | 4c4a763406ef903b78334bd2ccea168d2f7a741a (patch) | |
tree | 9dff8e975ae6375ccbc82d72b028d523eadefffa /mm/page_io.c | |
parent | 014bb1de4fc17d54907d54418126a9a9736f4aff (diff) | |
download | linux-4c4a763406ef903b78334bd2ccea168d2f7a741a.tar.gz |
mm: drop swap_dirty_folio
folios that are written to swap are owned by the MM subsystem - not any
filesystem.
When such a folio is passed to a filesystem to be written out to a
swap-file, the filesystem handles the data, but the folio itself does not
belong to the filesystem. So calling the filesystem's ->dirty_folio()
address_space operation makes no sense. This is for folios in the given
address space, and a folio to be written to swap does not exist in the
given address space.
So drop swap_dirty_folio() which calls the address-space's
->dirty_folio(), and always use noop_dirty_folio(), which is appropriate
for folios being swapped out.
Link: https://lkml.kernel.org/r/164859778123.29473.6900942583784889976.stgit@noble.brown
Signed-off-by: NeilBrown <neilb@suse.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Tested-by: David Howells <dhowells@redhat.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Hugh Dickins <hughd@google.com>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: Trond Myklebust <trond.myklebust@hammerspace.com>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm/page_io.c')
-rw-r--r-- | mm/page_io.c | 17 |
1 files changed, 0 insertions, 17 deletions
diff --git a/mm/page_io.c b/mm/page_io.c index 4b359e59bfdc..77fa0fb263f4 100644 --- a/mm/page_io.c +++ b/mm/page_io.c @@ -385,20 +385,3 @@ out: delayacct_swapin_end(); return ret; } - -bool swap_dirty_folio(struct address_space *mapping, struct folio *folio) -{ - struct swap_info_struct *sis = swp_swap_info(folio_swap_entry(folio)); - - if (data_race(sis->flags & SWP_FS_OPS)) { - const struct address_space_operations *aops; - - mapping = sis->swap_file->f_mapping; - aops = mapping->a_ops; - - VM_BUG_ON_FOLIO(!folio_test_swapcache(folio), folio); - return aops->dirty_folio(mapping, folio); - } else { - return noop_dirty_folio(mapping, folio); - } -} |