From 244b2c5ca8b14627e4a17755e5922221e121c771 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 09 Oct 2024 06:15:07 +0000
Subject: [PATCH] change system file
---
kernel/mm/z3fold.c | 17 +++++++----------
1 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/kernel/mm/z3fold.c b/kernel/mm/z3fold.c
index f3d875f..912ac9a 100644
--- a/kernel/mm/z3fold.c
+++ b/kernel/mm/z3fold.c
@@ -623,16 +623,14 @@
{
if (zhdr->first_chunks == 0 || zhdr->last_chunks == 0 ||
zhdr->middle_chunks == 0) {
- struct list_head *unbuddied;
- int freechunks = num_free_chunks(zhdr);
+ struct list_head *unbuddied = get_cpu_ptr(pool->unbuddied);
- migrate_disable();
- unbuddied = this_cpu_ptr(pool->unbuddied);
+ int freechunks = num_free_chunks(zhdr);
spin_lock(&pool->lock);
list_add(&zhdr->buddy, &unbuddied[freechunks]);
spin_unlock(&pool->lock);
zhdr->cpu = smp_processor_id();
- migrate_enable();
+ put_cpu_ptr(pool->unbuddied);
}
}
@@ -882,9 +880,8 @@
int chunks = size_to_chunks(size), i;
lookup:
- migrate_disable();
/* First, try to find an unbuddied z3fold page. */
- unbuddied = this_cpu_ptr(pool->unbuddied);
+ unbuddied = get_cpu_ptr(pool->unbuddied);
for_each_unbuddied_list(i, chunks) {
struct list_head *l = &unbuddied[i];
@@ -902,7 +899,7 @@
!z3fold_page_trylock(zhdr)) {
spin_unlock(&pool->lock);
zhdr = NULL;
- migrate_enable();
+ put_cpu_ptr(pool->unbuddied);
if (can_sleep)
cond_resched();
goto lookup;
@@ -916,7 +913,7 @@
test_bit(PAGE_CLAIMED, &page->private)) {
z3fold_page_unlock(zhdr);
zhdr = NULL;
- migrate_enable();
+ put_cpu_ptr(pool->unbuddied);
if (can_sleep)
cond_resched();
goto lookup;
@@ -931,7 +928,7 @@
kref_get(&zhdr->refcount);
break;
}
- migrate_enable();
+ put_cpu_ptr(pool->unbuddied);
if (!zhdr) {
int cpu;
--
Gitblit v1.6.2