mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-28 07:54:36 -05:00
mm, swap: fix false warning for large allocation with !THP_SWAP
The !CONFIG_THP_SWAP check existed before just fine because slot cache
would reject high order allocation and let the caller split all folios and
try again.
But slot cache is gone, so large allocation will directly go to the
allocator, and the allocator should just fail silently to inform caller to
do the folio split, this is totally fine and expected.
Remove this meaningless warning.
Link: https://lkml.kernel.org/r/20250429094803.85518-1-ryncsn@gmail.com
Fixes: 0ff67f990b ("mm, swap: remove swap slot cache")
Signed-off-by: Kairui Song <kasong@tencent.com>
Reported-by: Heiko Carstens <hca@linux.ibm.com>
Closes: https://lore.kernel.org/linux-mm/20250428135252.25453B17-hca@linux.ibm.com/
Tested-by: Heiko Carstens <hca@linux.ibm.com>
Cc: Baoquan He <bhe@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
8cf6ecb18b
commit
9a9794a81a
@@ -1272,13 +1272,22 @@ int folio_alloc_swap(struct folio *folio, gfp_t gfp)
|
||||
VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio);
|
||||
VM_BUG_ON_FOLIO(!folio_test_uptodate(folio), folio);
|
||||
|
||||
/*
|
||||
* Should not even be attempting large allocations when huge
|
||||
* page swap is disabled. Warn and fail the allocation.
|
||||
*/
|
||||
if (order && (!IS_ENABLED(CONFIG_THP_SWAP) || size > SWAPFILE_CLUSTER)) {
|
||||
VM_WARN_ON_ONCE(1);
|
||||
return -EINVAL;
|
||||
if (order) {
|
||||
/*
|
||||
* Reject large allocation when THP_SWAP is disabled,
|
||||
* the caller should split the folio and try again.
|
||||
*/
|
||||
if (!IS_ENABLED(CONFIG_THP_SWAP))
|
||||
return -EAGAIN;
|
||||
|
||||
/*
|
||||
* Allocation size should never exceed cluster size
|
||||
* (HPAGE_PMD_SIZE).
|
||||
*/
|
||||
if (size > SWAPFILE_CLUSTER) {
|
||||
VM_WARN_ON_ONCE(1);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
local_lock(&percpu_swap_cluster.lock);
|
||||
|
||||
Reference in New Issue
Block a user