Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161139AbbKFKes (ORCPT ); Fri, 6 Nov 2015 05:34:48 -0500 Received: from mail-wm0-f47.google.com ([74.125.82.47]:33252 "EHLO mail-wm0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1033094AbbKFKer (ORCPT ); Fri, 6 Nov 2015 05:34:47 -0500 Date: Fri, 6 Nov 2015 12:34:43 +0200 From: "Kirill A. Shutemov" To: Naoya Horiguchi Cc: Andrew Morton , "Kirill A. Shutemov" , Wanpeng Li , Andi Kleen , Andrea Arcangeli , Hugh Dickins , Sasha Levin , Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Naoya Horiguchi Subject: Re: [PATCH v2] mm: hwpoison: adjust for new thp refcounting Message-ID: <20151106103442.GB6463@node.shutemov.name> References: <20151106064743.GA30023@hori1.linux.bs1.fc.nec.co.jp> <1446796992-15798-1-git-send-email-n-horiguchi@ah.jp.nec.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1446796992-15798-1-git-send-email-n-horiguchi@ah.jp.nec.com> User-Agent: Mutt/1.5.23.1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2420 Lines: 54 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 > --- > 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 A. Shutemov -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/