On Tue, May 12, 2026 at 07:35:26AM +0200, Christoph Hellwig wrote: > Add a helper abstracting away the low-level details of enabling > fs_ops-based swapping. This prepares for taking swap_info_struct > private. > > Signed-off-by: Christoph Hellwig <[email protected]>
Looks good to me, Reviewed-by: "Darrick J. Wong" <[email protected]> --D > --- > fs/nfs/file.c | 4 +--- > fs/smb/client/file.c | 3 +-- > include/linux/swap.h | 5 +++++ > mm/swapfile.c | 7 +++++++ > 4 files changed, 14 insertions(+), 5 deletions(-) > > diff --git a/fs/nfs/file.c b/fs/nfs/file.c > index 10ab2a923835..ce4d860c4e7a 100644 > --- a/fs/nfs/file.c > +++ b/fs/nfs/file.c > @@ -588,7 +588,7 @@ int nfs_swap_activate(struct file *file, struct > swap_info_struct *sis) > ret = rpc_clnt_swap_activate(clnt); > if (ret) > return ret; > - ret = add_swap_extent(sis, sis->max, NULL, 0); > + ret = swap_activate_fs_ops(sis); > if (ret < 0) { > rpc_clnt_swap_deactivate(clnt); > return ret; > @@ -596,8 +596,6 @@ int nfs_swap_activate(struct file *file, struct > swap_info_struct *sis) > > if (cl->rpc_ops->enable_swap) > cl->rpc_ops->enable_swap(inode); > - > - sis->flags |= SWP_FS_OPS; > return 0; > } > EXPORT_SYMBOL_GPL(nfs_swap_activate); > diff --git a/fs/smb/client/file.c b/fs/smb/client/file.c > index e1bbc65ce7f3..e11065be1e64 100644 > --- a/fs/smb/client/file.c > +++ b/fs/smb/client/file.c > @@ -3326,8 +3326,7 @@ int cifs_swap_activate(struct file *swap_file, struct > swap_info_struct *sis) > * from reading or writing the file > */ > > - sis->flags |= SWP_FS_OPS; > - return add_swap_extent(sis, sis->max, NULL, 0); > + return swap_activate_fs_ops(sis); > } > > void cifs_swap_deactivate(struct file *file) > diff --git a/include/linux/swap.h b/include/linux/swap.h > index b1cbb67ddd8e..916889738f08 100644 > --- a/include/linux/swap.h > +++ b/include/linux/swap.h > @@ -406,6 +406,7 @@ extern void __meminit kswapd_stop(int nid); > int add_swap_extent(struct swap_info_struct *sis, unsigned long nr_pages, > struct block_device *bdev, sector_t start_block); > int generic_swap_activate(struct file *swap_file, struct swap_info_struct > *sis); > +int swap_activate_fs_ops(struct swap_info_struct *sis); > > static inline unsigned long total_swapcache_pages(void) > { > @@ -532,6 +533,10 @@ static inline int add_swap_extent(struct > swap_info_struct *sis, > { > return -EINVAL; > } > +static inline int swap_activate_fs_ops(struct swap_info_struct *sis) > +{ > + return -EINVAL; > +} > #endif /* CONFIG_SWAP */ > #ifdef CONFIG_MEMCG > static inline int mem_cgroup_swappiness(struct mem_cgroup *memcg) > diff --git a/mm/swapfile.c b/mm/swapfile.c > index 2c9d2af736c4..26852c2ad36e 100644 > --- a/mm/swapfile.c > +++ b/mm/swapfile.c > @@ -2757,6 +2757,13 @@ add_swap_extent(struct swap_info_struct *sis, unsigned > long nr_pages, > } > EXPORT_SYMBOL_GPL(add_swap_extent); > > +int swap_activate_fs_ops(struct swap_info_struct *sis) > +{ > + sis->flags |= SWP_FS_OPS; > + return add_swap_extent(sis, sis->max, NULL, 0); > +} > +EXPORT_SYMBOL_GPL(swap_activate_fs_ops); > + > /* > * A `swap extent' is a simple thing which maps a contiguous range of pages > * onto a contiguous range of disk blocks. A rbtree of swap extents is > -- > 2.53.0 > > _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
