[PATCH v5 0/3] mm/swap: use swap_ops to register swap device's methods

From: Baoquan He

Date: Mon May 11 2026 - 03:39:25 EST


This can simplify the code logic and benefit any new type of swap device
added later.

And also do renaming in this patchset:
-------
file renaming:
---
mm/page_io.c to mm/swap_io.c

function renaming:
---
swap_writepage_* to swap_write_folio_* in file mm/swap_io.c

Changlog:
===
-v5:
* Change the return value of init_swap_ops() as -EINVAL as per Chris's
suggestion and adjust its invocation in swapon() accordingly.
* Add Chris and Usama's Ack tags.

-v4:
* Fix a typo opeations -> operations
* Fix a code bug inside init_swap_ops(). I was taking a change at the
time, thought the change is trivial, so I only compiled but didn't
run kernel to test in v3. Now fix it and test passed.
Thanaks to Usama for catching the above two issues.

-v3:
* Rename setup_swap_ops() to init_swap_ops() which reflect the function
behaviour a little better
* Check if sis->ops, sis->ops->read_folio and sis->ops->write_folio is
NULL in init_swap_ops(), but not spread them where they are called.
And once the checking failed, fail swapon immediately. This is
suggested by Chris.
* Call init_swap_ops() before setup_swap_extents() invocation. This
doesn't harm anything and can benefit later adding sis->ops->swap_activate
method.

-v2:
* lots of cleanup for patch 2/3: renaming, moving data
structures, and using const properly
* collected tags from Kairui, Nhat and Barry

-v1:
https://lore.kernel.org/linux-mm/20260302104016.163542-1-bhe@xxxxxxxxxx/

Baoquan He (3):
mm/swap: rename mm/page_io.c to mm/swap_io.c
mm/swap: use swap_ops to register swap device's methods
mm/swap_io.c: rename swap_writepage_* to swap_write_folio_*

MAINTAINERS | 2 +-
include/linux/swap.h | 2 +
mm/Makefile | 2 +-
mm/swap.h | 12 ++++-
mm/{page_io.c => swap_io.c} | 104 ++++++++++++++++++++----------------
mm/swapfile.c | 4 ++
mm/zswap.c | 2 +-
7 files changed, 78 insertions(+), 50 deletions(-)
rename mm/{page_io.c => swap_io.c} (90%)

--
2.52.0