Message ID | 20190910103016.14290-5-osalvador@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Hwpoison soft-offline rework | expand |
On 10.09.19 12:30, Oscar Salvador wrote: > From: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> > > Now there's no user of MF_COUNT_INCREASED, so we can safely remove > it from all calling points. > > Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> > Signed-off-by: Oscar Salvador <osalvador@suse.de> > --- > include/linux/mm.h | 7 +++---- > mm/memory-failure.c | 16 +++------------- > 2 files changed, 6 insertions(+), 17 deletions(-) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index ad6766a08f9b..fb36a4165a4e 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -2814,10 +2814,9 @@ void register_page_bootmem_memmap(unsigned long section_nr, struct page *map, > unsigned long nr_pages); > > enum mf_flags { > - MF_COUNT_INCREASED = 1 << 0, > - MF_ACTION_REQUIRED = 1 << 1, > - MF_MUST_KILL = 1 << 2, > - MF_SOFT_OFFLINE = 1 << 3, > + MF_ACTION_REQUIRED = 1 << 0, > + MF_MUST_KILL = 1 << 1, > + MF_SOFT_OFFLINE = 1 << 2, > }; > extern int memory_failure(unsigned long pfn, int flags); > extern void memory_failure_queue(unsigned long pfn, int flags); > diff --git a/mm/memory-failure.c b/mm/memory-failure.c > index e43b61462fd5..1be785b25324 100644 > --- a/mm/memory-failure.c > +++ b/mm/memory-failure.c > @@ -1092,7 +1092,7 @@ static int memory_failure_hugetlb(unsigned long pfn, int flags) > > num_poisoned_pages_inc(); > > - if (!(flags & MF_COUNT_INCREASED) && !get_hwpoison_page(p)) { > + if (!get_hwpoison_page(p)) { > /* > * Check "filter hit" and "race with other subpage." > */ > @@ -1286,7 +1286,7 @@ int memory_failure(unsigned long pfn, int flags) > * In fact it's dangerous to directly bump up page count from 0, > * that may make page_ref_freeze()/page_ref_unfreeze() mismatch. > */ > - if (!(flags & MF_COUNT_INCREASED) && !get_hwpoison_page(p)) { > + if (!get_hwpoison_page(p)) { > if (is_free_buddy_page(p)) { > action_result(pfn, MF_MSG_BUDDY, MF_DELAYED); > return 0; > @@ -1327,10 +1327,7 @@ int memory_failure(unsigned long pfn, int flags) > shake_page(p, 0); > /* shake_page could have turned it free. */ > if (!PageLRU(p) && is_free_buddy_page(p)) { > - if (flags & MF_COUNT_INCREASED) > - action_result(pfn, MF_MSG_BUDDY, MF_DELAYED); > - else > - action_result(pfn, MF_MSG_BUDDY_2ND, MF_DELAYED); > + action_result(pfn, MF_MSG_BUDDY_2ND, MF_DELAYED); > return 0; > } > > @@ -1618,9 +1615,6 @@ static int __get_any_page(struct page *p, unsigned long pfn, int flags) > { > int ret; > > - if (flags & MF_COUNT_INCREASED) > - return 1; > - > /* > * When the target page is a free hugepage, just remove it > * from free hugepage list. > @@ -1890,15 +1884,11 @@ int soft_offline_page(struct page *page, int flags) > if (is_zone_device_page(page)) { > pr_debug_ratelimited("soft_offline: %#lx page is device page\n", > pfn); > - if (flags & MF_COUNT_INCREASED) > - put_page(page); > return -EIO; > } > > if (PageHWPoison(page)) { > pr_info("soft offline: %#lx page already poisoned\n", pfn); > - if (flags & MF_COUNT_INCREASED) > - put_hwpoison_page(page); > return -EBUSY; > } > > Acked-by: David Hildenbrand <david@redhat.com>
diff --git a/include/linux/mm.h b/include/linux/mm.h index ad6766a08f9b..fb36a4165a4e 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2814,10 +2814,9 @@ void register_page_bootmem_memmap(unsigned long section_nr, struct page *map, unsigned long nr_pages); enum mf_flags { - MF_COUNT_INCREASED = 1 << 0, - MF_ACTION_REQUIRED = 1 << 1, - MF_MUST_KILL = 1 << 2, - MF_SOFT_OFFLINE = 1 << 3, + MF_ACTION_REQUIRED = 1 << 0, + MF_MUST_KILL = 1 << 1, + MF_SOFT_OFFLINE = 1 << 2, }; extern int memory_failure(unsigned long pfn, int flags); extern void memory_failure_queue(unsigned long pfn, int flags); diff --git a/mm/memory-failure.c b/mm/memory-failure.c index e43b61462fd5..1be785b25324 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1092,7 +1092,7 @@ static int memory_failure_hugetlb(unsigned long pfn, int flags) num_poisoned_pages_inc(); - if (!(flags & MF_COUNT_INCREASED) && !get_hwpoison_page(p)) { + if (!get_hwpoison_page(p)) { /* * Check "filter hit" and "race with other subpage." */ @@ -1286,7 +1286,7 @@ int memory_failure(unsigned long pfn, int flags) * In fact it's dangerous to directly bump up page count from 0, * that may make page_ref_freeze()/page_ref_unfreeze() mismatch. */ - if (!(flags & MF_COUNT_INCREASED) && !get_hwpoison_page(p)) { + if (!get_hwpoison_page(p)) { if (is_free_buddy_page(p)) { action_result(pfn, MF_MSG_BUDDY, MF_DELAYED); return 0; @@ -1327,10 +1327,7 @@ int memory_failure(unsigned long pfn, int flags) shake_page(p, 0); /* shake_page could have turned it free. */ if (!PageLRU(p) && is_free_buddy_page(p)) { - if (flags & MF_COUNT_INCREASED) - action_result(pfn, MF_MSG_BUDDY, MF_DELAYED); - else - action_result(pfn, MF_MSG_BUDDY_2ND, MF_DELAYED); + action_result(pfn, MF_MSG_BUDDY_2ND, MF_DELAYED); return 0; } @@ -1618,9 +1615,6 @@ static int __get_any_page(struct page *p, unsigned long pfn, int flags) { int ret; - if (flags & MF_COUNT_INCREASED) - return 1; - /* * When the target page is a free hugepage, just remove it * from free hugepage list. @@ -1890,15 +1884,11 @@ int soft_offline_page(struct page *page, int flags) if (is_zone_device_page(page)) { pr_debug_ratelimited("soft_offline: %#lx page is device page\n", pfn); - if (flags & MF_COUNT_INCREASED) - put_page(page); return -EIO; } if (PageHWPoison(page)) { pr_info("soft offline: %#lx page already poisoned\n", pfn); - if (flags & MF_COUNT_INCREASED) - put_hwpoison_page(page); return -EBUSY; }