| From: Kairui Song <kasong@tencent.com> |
| Subject: mm: swap: clean up initialization helper |
| Date: Tue, 30 Jul 2024 23:49:16 -0700 |
| |
| At this point, alloc_cluster is never called already, and |
| inc_cluster_info_page is called by initialization only, a lot of dead code |
| can be dropped. |
| |
| Link: https://lkml.kernel.org/r/20240730-swap-allocator-v5-4-cb9c148b9297@kernel.org |
| Signed-off-by: Kairui Song <kasong@tencent.com> |
| Reported-by: Barry Song <21cnbao@gmail.com> |
| Cc: Chris Li <chrisl@kernel.org> |
| Cc: "Huang, Ying" <ying.huang@intel.com> |
| Cc: Hugh Dickins <hughd@google.com> |
| Cc: Kalesh Singh <kaleshsingh@google.com> |
| Cc: Ryan Roberts <ryan.roberts@arm.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/swapfile.c | 44 ++++++++++---------------------------------- |
| 1 file changed, 10 insertions(+), 34 deletions(-) |
| |
| --- a/mm/swapfile.c~mm-swap-clean-up-initialization-helper |
| +++ a/mm/swapfile.c |
| @@ -438,20 +438,6 @@ static void swap_users_ref_free(struct p |
| complete(&si->comp); |
| } |
| |
| -static struct swap_cluster_info *alloc_cluster(struct swap_info_struct *si, unsigned long idx) |
| -{ |
| - struct swap_cluster_info *ci = list_first_entry(&si->free_clusters, |
| - struct swap_cluster_info, list); |
| - |
| - lockdep_assert_held(&si->lock); |
| - lockdep_assert_held(&ci->lock); |
| - VM_BUG_ON(cluster_index(si, ci) != idx); |
| - VM_BUG_ON(ci->count); |
| - list_del(&ci->list); |
| - ci->flags = 0; |
| - return ci; |
| -} |
| - |
| static void free_cluster(struct swap_info_struct *si, struct swap_cluster_info *ci) |
| { |
| VM_BUG_ON(ci->count != 0); |
| @@ -472,34 +458,24 @@ static void free_cluster(struct swap_inf |
| } |
| |
| /* |
| - * The cluster corresponding to page_nr will be used. The cluster will be |
| - * removed from free cluster list and its usage counter will be increased by |
| - * count. |
| + * The cluster corresponding to page_nr will be used. The cluster will not be |
| + * added to free cluster list and its usage counter will be increased by 1. |
| + * Only used for initialization. |
| */ |
| -static void add_cluster_info_page(struct swap_info_struct *p, |
| - struct swap_cluster_info *cluster_info, unsigned long page_nr, |
| - unsigned long count) |
| +static void inc_cluster_info_page(struct swap_info_struct *p, |
| + struct swap_cluster_info *cluster_info, unsigned long page_nr) |
| { |
| unsigned long idx = page_nr / SWAPFILE_CLUSTER; |
| - struct swap_cluster_info *ci = cluster_info + idx; |
| + struct swap_cluster_info *ci; |
| |
| if (!cluster_info) |
| return; |
| - if (cluster_is_free(ci)) |
| - alloc_cluster(p, idx); |
| |
| - VM_BUG_ON(ci->count + count > SWAPFILE_CLUSTER); |
| - ci->count += count; |
| -} |
| + ci = cluster_info + idx; |
| + ci->count++; |
| |
| -/* |
| - * The cluster corresponding to page_nr will be used. The cluster will be |
| - * removed from free cluster list and its usage counter will be increased by 1. |
| - */ |
| -static void inc_cluster_info_page(struct swap_info_struct *p, |
| - struct swap_cluster_info *cluster_info, unsigned long page_nr) |
| -{ |
| - add_cluster_info_page(p, cluster_info, page_nr, 1); |
| + VM_BUG_ON(ci->count > SWAPFILE_CLUSTER); |
| + VM_BUG_ON(ci->flags); |
| } |
| |
| /* |
| _ |