]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/swapfile.c: open code cluster_alloc_swap()
authorBaoquan He <bhe@redhat.com>
Wed, 5 Feb 2025 09:27:21 +0000 (17:27 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 17 Mar 2025 05:06:07 +0000 (22:06 -0700)
It's only called in scan_swap_map_slots().

And also remove the stale code comment in scan_swap_map_slots() because
it's not fit for the current cluster allocation mechanism.

Link: https://lkml.kernel.org/r/20250205092721.9395-13-bhe@redhat.com
Signed-off-by: Baoquan He <bhe@redhat.com>
Cc: Chris Li <chrisl@kernel.org>
Cc: Kairui Song <ryncsn@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/swapfile.c

index c73e258bb58841d7fb9f3deee0043ae9a54862b7..cab68e57f4ccb67c6e31cc677a9271f6219a49f1 100644 (file)
@@ -1163,39 +1163,13 @@ static void swap_range_free(struct swap_info_struct *si, unsigned long offset,
        swap_usage_sub(si, nr_entries);
 }
 
-static int cluster_alloc_swap(struct swap_info_struct *si,
-                            unsigned char usage, int nr,
-                            swp_entry_t slots[], int order)
-{
-       int n_ret = 0;
-
-       while (n_ret < nr) {
-               unsigned long offset = cluster_alloc_swap_entry(si, order, usage);
-
-               if (!offset)
-                       break;
-               slots[n_ret++] = swp_entry(si->type, offset);
-       }
-
-       return n_ret;
-}
-
 static int scan_swap_map_slots(struct swap_info_struct *si,
                               unsigned char usage, int nr,
                               swp_entry_t slots[], int order)
 {
        unsigned int nr_pages = 1 << order;
+       int n_ret = 0;
 
-       /*
-        * We try to cluster swap pages by allocating them sequentially
-        * in swap.  Once we've allocated SWAPFILE_CLUSTER pages this
-        * way, however, we resort to first-free allocation, starting
-        * a new cluster.  This prevents us from scattering swap pages
-        * all over the entire swap partition, so that we reduce
-        * overall disk seek times between swap pages.  -- sct
-        * But we do now try to find an empty cluster.  -Andrea
-        * And we let swap pages go all over an SSD partition.  Hugh
-        */
        if (order > 0) {
                /*
                 * Should not even be attempting large allocations when huge
@@ -1215,7 +1189,15 @@ static int scan_swap_map_slots(struct swap_info_struct *si,
                        return 0;
        }
 
-       return cluster_alloc_swap(si, usage, nr, slots, order);
+       while (n_ret < nr) {
+               unsigned long offset = cluster_alloc_swap_entry(si, order, usage);
+
+               if (!offset)
+                       break;
+               slots[n_ret++] = swp_entry(si->type, offset);
+       }
+
+       return n_ret;
 }
 
 static bool get_swap_device_info(struct swap_info_struct *si)