mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 04:42:12 +00:00
mm/hotplug: optimize clear_hwpoisoned_pages()
In hot remove, we try to clear poisoned pages, but a small optimization to check if num_poisoned_pages is 0 helps remove the iteration through nr_pages. [akpm@linux-foundation.org: tweak comment text] Link: http://lkml.kernel.org/r/20181102120001.4526-1-bsingharora@gmail.com Signed-off-by: Balbir Singh <bsingharora@gmail.com> Acked-by: Michal Hocko <mhocko@suse.com> Acked-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c8f61cfc87
commit
5eb570a8d9
@ -740,6 +740,15 @@ static void clear_hwpoisoned_pages(struct page *memmap, int nr_pages)
|
||||
if (!memmap)
|
||||
return;
|
||||
|
||||
/*
|
||||
* A further optimization is to have per section refcounted
|
||||
* num_poisoned_pages. But that would need more space per memmap, so
|
||||
* for now just do a quick global check to speed up this routine in the
|
||||
* absence of bad pages.
|
||||
*/
|
||||
if (atomic_long_read(&num_poisoned_pages) == 0)
|
||||
return;
|
||||
|
||||
for (i = 0; i < nr_pages; i++) {
|
||||
if (PageHWPoison(&memmap[i])) {
|
||||
atomic_long_sub(1, &num_poisoned_pages);
|
||||
|
Loading…
Reference in New Issue
Block a user