| Message ID | 20260512053625.2950900-11-hch@lst.de |
|---|---|
| State | Not Applicable |
| Headers | show |
| Series | [01/12] swap: remove the maxpages variable in sys_swapon | expand |
On 5/12/26 14:35, 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 <hch@lst.de> Looks OK to me. Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
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 <hch@lst.de> Looks good to me, Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> --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 > >
On Mon, May 11, 2026 at 10:37 PM Christoph Hellwig <hch@lst.de> 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 <hch@lst.de> Acked-by: Chris Li <chrisl@kernel.org> Chris
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
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 <hch@lst.de> --- 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(-)