mm/compaction: remove rcu_read_lock during page compaction
isolate_migratepages_block() used rcu_read_lock() with the intention of safeguarding against the mem_cgroup being destroyed concurrently; but its TestClearPageLRU already protects against that. Delete the unnecessary rcu_read_lock() and _unlock(). Hugh Dickins helped on commit log polishing, Thanks! Link: https://lkml.kernel.org/r/1608614453-10739-3-git-send-email-alex.shi@linux.alibaba.com Signed-off-by: Alex Shi <alex.shi@linux.alibaba.com> Acked-by: Hugh Dickins <hughd@google.com> Cc: Hugh Dickins <hughd@google.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c457cd96f1
commit
d99fd5feb0
|
@ -995,7 +995,6 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn,
|
||||||
if (!TestClearPageLRU(page))
|
if (!TestClearPageLRU(page))
|
||||||
goto isolate_fail_put;
|
goto isolate_fail_put;
|
||||||
|
|
||||||
rcu_read_lock();
|
|
||||||
lruvec = mem_cgroup_page_lruvec(page, pgdat);
|
lruvec = mem_cgroup_page_lruvec(page, pgdat);
|
||||||
|
|
||||||
/* If we already hold the lock, we can skip some rechecking */
|
/* If we already hold the lock, we can skip some rechecking */
|
||||||
|
@ -1005,7 +1004,6 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn,
|
||||||
|
|
||||||
compact_lock_irqsave(&lruvec->lru_lock, &flags, cc);
|
compact_lock_irqsave(&lruvec->lru_lock, &flags, cc);
|
||||||
locked = lruvec;
|
locked = lruvec;
|
||||||
rcu_read_unlock();
|
|
||||||
|
|
||||||
lruvec_memcg_debug(lruvec, page);
|
lruvec_memcg_debug(lruvec, page);
|
||||||
|
|
||||||
|
@ -1026,8 +1024,7 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn,
|
||||||
SetPageLRU(page);
|
SetPageLRU(page);
|
||||||
goto isolate_fail_put;
|
goto isolate_fail_put;
|
||||||
}
|
}
|
||||||
} else
|
}
|
||||||
rcu_read_unlock();
|
|
||||||
|
|
||||||
/* The whole page is taken off the LRU; skip the tail pages. */
|
/* The whole page is taken off the LRU; skip the tail pages. */
|
||||||
if (PageCompound(page))
|
if (PageCompound(page))
|
||||||
|
|
Loading…
Reference in New Issue