mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-04 08:04:24 -04:00
mm/swapfile.c: open code cluster_alloc_swap()
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>
This commit is contained in:
committed by
Andrew Morton
parent
4ccd4154fa
commit
1d212293ff
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user