On Fri, Nov 06, 2015 at 05:03:12PM +0900, Naoya Horiguchi wrote: > Some mm-related BUG_ON()s could trigger from hwpoison code due to recent > changes in thp refcounting rule. This patch fixes them up. > > In the new refcounting, we no longer use tail->_mapcount to keep tail's > refcount, and thereby we can simplify get/put_hwpoison_page(). > > And another change is that tail's refcount is not transferred to the raw > page during thp split (more precisely, in new rule we don't take refcount > on tail page any more.) So when we need thp split, we have to transfer the > refcount properly to the 4kB soft-offlined page before migration. > > thp split code goes into core code only when precheck (total_mapcount(head) > == page_count(head) - 1) passes to avoid useless split, where we assume that > one refcount is held by the caller of thp split and the others are taken > via mapping. To meet this assumption, this patch moves thp split part in > soft_offline_page() after get_any_page(). > > Signed-off-by: Naoya Horiguchi <n-horigu...@ah.jp.nec.com> > --- > ChangeLog v1->v2: > - leave put_hwpoison_page() as a macro > > - based on mmotm-2015-10-21-14-41 + Kirill's "[PATCH 0/4] Bugfixes for THP > refcounting" series. > --- > include/linux/mm.h | 1 + > mm/memory-failure.c | 75 > +++++++++++++++------------------------------------ > 2 files changed, 23 insertions(+), 53 deletions(-) > > diff --git mmotm-2015-10-21-14-41/include/linux/mm.h > mmotm-2015-10-21-14-41_patched/include/linux/mm.h > index a36f9fa..51e3ffe 100644 > --- mmotm-2015-10-21-14-41/include/linux/mm.h > +++ mmotm-2015-10-21-14-41_patched/include/linux/mm.h > @@ -2173,6 +2173,7 @@ extern int memory_failure(unsigned long pfn, int > trapno, int flags); > extern void memory_failure_queue(unsigned long pfn, int trapno, int flags); > extern int unpoison_memory(unsigned long pfn); > extern int get_hwpoison_page(struct page *page); > +#define put_hwpoison_page(page) put_page(page) > extern void put_hwpoison_page(struct page *page);
This line should be removed. Otherwise looks good to me. Acked-by: Kirill A. Shutemov <kirill.shute...@linux.intel.com> -- Kirill A. Shutemov -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/