From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi0-f69.google.com (mail-oi0-f69.google.com [209.85.218.69]) by kanga.kvack.org (Postfix) with ESMTP id 5066A6B0033 for ; Wed, 25 Jan 2017 10:05:50 -0500 (EST) Received: by mail-oi0-f69.google.com with SMTP id v85so247809972oia.4 for ; Wed, 25 Jan 2017 07:05:50 -0800 (PST) Received: from smtpbg202.qq.com (smtpbg202.qq.com. [184.105.206.29]) by mx.google.com with ESMTPS id u129si9056537oia.40.2017.01.25.07.05.48 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 25 Jan 2017 07:05:49 -0800 (PST) From: ysxie@foxmail.com Subject: [PATCH v4 0/2] HWPOISON: soft offlining for non-lru movable page Date: Wed, 25 Jan 2017 23:05:36 +0800 Message-Id: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> Sender: owner-linux-mm@kvack.org List-ID: To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: n-horiguchi@ah.jp.nec.com, mhocko@suse.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com From: Yisheng Xie Hi Andrew, Could you please help to abandon the v3 of this patch for it will compile error with CONFIG_MIGRATION=n, and it also has error path handling problem. Hi Michal, Minchan and all, Could you please help to review it? Any suggestion is more than welcome. The aim of this patchset is to support soft offlining of movable no-lru pages, which already support migration after Minchan's commit bda807d44454 ("mm: migrate: support non-lru movable page migration"). That means this patch heavily depend on non-lru movable page migration. So when memory corrected errors occur on a non-lru movable page, we can stop to use it by migrating data onto another page and disable the original (maybe half-broken) one. -------- v4: * make isolate_movable_page always defined to avoid compile error with CONFIG_MIGRATION = n * return -EBUSY when isolate_movable_page return false which means failed to isolate movable page. v3: * delete some unneed limitation and use !__PageMovable instead of PageLRU after isolate page to avoid isolated count mismatch, as Minchan Kim's suggestion. v2: * delete function soft_offline_movable_page() and hanle non-lru movable page in __soft_offline_page() as Michal Hocko suggested. Yisheng Xie (2): mm/migration: make isolate_movable_page always defined HWPOISON: soft offlining for non-lru movable page include/linux/migrate.h | 2 ++ mm/memory-failure.c | 26 ++++++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) -- 1.9.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f72.google.com (mail-pg0-f72.google.com [74.125.83.72]) by kanga.kvack.org (Postfix) with ESMTP id B45116B0038 for ; Wed, 25 Jan 2017 10:05:50 -0500 (EST) Received: by mail-pg0-f72.google.com with SMTP id 3so21316141pgj.6 for ; Wed, 25 Jan 2017 07:05:50 -0800 (PST) Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com. [54.254.200.128]) by mx.google.com with ESMTPS id 3si11992151pgi.256.2017.01.25.07.05.48 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 25 Jan 2017 07:05:49 -0800 (PST) From: ysxie@foxmail.com Subject: [PATCH v4 1/2] mm/migration: make isolate_movable_page always defined Date: Wed, 25 Jan 2017 23:05:37 +0800 Message-Id: <1485356738-4831-2-git-send-email-ysxie@foxmail.com> In-Reply-To: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> Sender: owner-linux-mm@kvack.org List-ID: To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: n-horiguchi@ah.jp.nec.com, mhocko@suse.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com From: Yisheng Xie Define isolate_movable_page as a static inline function when CONFIG_MIGRATION is not enable. It should return false here which means failed to isolate movable pages. This patch do not have any functional change but prepare for later patch. Signed-off-by: Yisheng Xie Cc: Michal Hocko Cc: Minchan Kim Cc: Naoya Horiguchi CC: Vlastimil Babka --- include/linux/migrate.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/migrate.h b/include/linux/migrate.h index ae8d475..631a8c8 100644 --- a/include/linux/migrate.h +++ b/include/linux/migrate.h @@ -56,6 +56,8 @@ static inline int migrate_pages(struct list_head *l, new_page_t new, free_page_t free, unsigned long private, enum migrate_mode mode, int reason) { return -ENOSYS; } +static inline bool isolate_movable_page(struct page *page, isolate_mode_t mode) + { return false; } static inline int migrate_prep(void) { return -ENOSYS; } static inline int migrate_prep_local(void) { return -ENOSYS; } -- 1.9.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ot0-f200.google.com (mail-ot0-f200.google.com [74.125.82.200]) by kanga.kvack.org (Postfix) with ESMTP id 5DEB16B0069 for ; Wed, 25 Jan 2017 10:05:53 -0500 (EST) Received: by mail-ot0-f200.google.com with SMTP id w107so157951833ota.6 for ; Wed, 25 Jan 2017 07:05:53 -0800 (PST) Received: from smtpbgau2.qq.com (smtpbgau2.qq.com. [54.206.34.216]) by mx.google.com with ESMTPS id e48si9042685ote.335.2017.01.25.07.05.51 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 25 Jan 2017 07:05:52 -0800 (PST) From: ysxie@foxmail.com Subject: [PATCH v4 2/2] HWPOISON: soft offlining for non-lru movable page Date: Wed, 25 Jan 2017 23:05:38 +0800 Message-Id: <1485356738-4831-3-git-send-email-ysxie@foxmail.com> In-Reply-To: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> Sender: owner-linux-mm@kvack.org List-ID: To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: n-horiguchi@ah.jp.nec.com, mhocko@suse.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com From: Yisheng Xie This patch is to extends soft offlining framework to support non-lru page, which already support migration after commit bda807d44454 ("mm: migrate: support non-lru movable page migration") When memory corrected errors occur on a non-lru movable page, we can choose to stop using it by migrating data onto another page and disable the original (maybe half-broken) one. Signed-off-by: Yisheng Xie Suggested-by: Michal Hocko Suggested-by: Minchan Kim Reviewed-by: Minchan Kim Acked-by: Naoya Horiguchi CC: Vlastimil Babka --- mm/memory-failure.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index f283c7e..56e39f8 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1527,7 +1527,8 @@ static int get_any_page(struct page *page, unsigned long pfn, int flags) { int ret = __get_any_page(page, pfn, flags); - if (ret == 1 && !PageHuge(page) && !PageLRU(page)) { + if (ret == 1 && !PageHuge(page) && + !PageLRU(page) && !__PageMovable(page)) { /* * Try to free it. */ @@ -1649,7 +1650,10 @@ static int __soft_offline_page(struct page *page, int flags) * Try to migrate to a new page instead. migrate.c * handles a large number of cases for us. */ - ret = isolate_lru_page(page); + if (PageLRU(page)) + ret = isolate_lru_page(page); + else if (!isolate_movable_page(page, ISOLATE_UNEVICTABLE)) + ret = -EBUSY; /* * Drop page reference which is came from get_any_page() * successful isolate_lru_page() already took another one. @@ -1657,18 +1661,20 @@ static int __soft_offline_page(struct page *page, int flags) put_hwpoison_page(page); if (!ret) { LIST_HEAD(pagelist); - inc_node_page_state(page, NR_ISOLATED_ANON + - page_is_file_cache(page)); + /* + * After isolated lru page, the PageLRU will be cleared, + * so use !__PageMovable instead for LRU page's mapping + * cannot have PAGE_MAPPING_MOVABLE. + */ + if (!__PageMovable(page)) + inc_node_page_state(page, NR_ISOLATED_ANON + + page_is_file_cache(page)); list_add(&page->lru, &pagelist); ret = migrate_pages(&pagelist, new_page, NULL, MPOL_MF_MOVE_ALL, MIGRATE_SYNC, MR_MEMORY_FAILURE); if (ret) { - if (!list_empty(&pagelist)) { - list_del(&page->lru); - dec_node_page_state(page, NR_ISOLATED_ANON + - page_is_file_cache(page)); - putback_lru_page(page); - } + if (!list_empty(&pagelist)) + putback_movable_pages(&pagelist); pr_info("soft offline: %#lx: migration failed %d, type %lx\n", pfn, ret, page->flags); -- 1.9.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f72.google.com (mail-wm0-f72.google.com [74.125.82.72]) by kanga.kvack.org (Postfix) with ESMTP id 22EA96B0253 for ; Thu, 26 Jan 2017 04:18:38 -0500 (EST) Received: by mail-wm0-f72.google.com with SMTP id c206so43782303wme.3 for ; Thu, 26 Jan 2017 01:18:38 -0800 (PST) Received: from mx2.suse.de (mx2.suse.de. [195.135.220.15]) by mx.google.com with ESMTPS id k189si25808656wme.5.2017.01.26.01.18.36 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 26 Jan 2017 01:18:36 -0800 (PST) Date: Thu, 26 Jan 2017 10:18:34 +0100 From: Michal Hocko Subject: Re: [PATCH v4 1/2] mm/migration: make isolate_movable_page always defined Message-ID: <20170126091833.GC6590@dhcp22.suse.cz> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-2-git-send-email-ysxie@foxmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1485356738-4831-2-git-send-email-ysxie@foxmail.com> Sender: owner-linux-mm@kvack.org List-ID: To: ysxie@foxmail.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com On Wed 25-01-17 23:05:37, ysxie@foxmail.com wrote: > From: Yisheng Xie > > Define isolate_movable_page as a static inline function when > CONFIG_MIGRATION is not enable. It should return false > here which means failed to isolate movable pages. > > This patch do not have any functional change but prepare for > later patch. I think it would make more sense to make isolate_movable_page return int and have the same semantic as __isolate_lru_page. This would be a better preparatory patch for the later work. > Signed-off-by: Yisheng Xie > Cc: Michal Hocko > Cc: Minchan Kim > Cc: Naoya Horiguchi > CC: Vlastimil Babka > --- > include/linux/migrate.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/include/linux/migrate.h b/include/linux/migrate.h > index ae8d475..631a8c8 100644 > --- a/include/linux/migrate.h > +++ b/include/linux/migrate.h > @@ -56,6 +56,8 @@ static inline int migrate_pages(struct list_head *l, new_page_t new, > free_page_t free, unsigned long private, enum migrate_mode mode, > int reason) > { return -ENOSYS; } > +static inline bool isolate_movable_page(struct page *page, isolate_mode_t mode) > + { return false; } > > static inline int migrate_prep(void) { return -ENOSYS; } > static inline int migrate_prep_local(void) { return -ENOSYS; } > -- > 1.9.1 > > > -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f71.google.com (mail-wm0-f71.google.com [74.125.82.71]) by kanga.kvack.org (Postfix) with ESMTP id 22E986B0033 for ; Thu, 26 Jan 2017 04:27:28 -0500 (EST) Received: by mail-wm0-f71.google.com with SMTP id d140so43911032wmd.4 for ; Thu, 26 Jan 2017 01:27:28 -0800 (PST) Received: from mx2.suse.de (mx2.suse.de. [195.135.220.15]) by mx.google.com with ESMTPS id z38si1249543wrc.101.2017.01.26.01.27.26 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 26 Jan 2017 01:27:26 -0800 (PST) Date: Thu, 26 Jan 2017 10:27:25 +0100 From: Michal Hocko Subject: Re: [PATCH v4 2/2] HWPOISON: soft offlining for non-lru movable page Message-ID: <20170126092725.GD6590@dhcp22.suse.cz> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-3-git-send-email-ysxie@foxmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1485356738-4831-3-git-send-email-ysxie@foxmail.com> Sender: owner-linux-mm@kvack.org List-ID: To: ysxie@foxmail.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com On Wed 25-01-17 23:05:38, ysxie@foxmail.com wrote: > From: Yisheng Xie > > This patch is to extends soft offlining framework to support > non-lru page, which already support migration after > commit bda807d44454 ("mm: migrate: support non-lru movable page > migration") > > When memory corrected errors occur on a non-lru movable page, > we can choose to stop using it by migrating data onto another > page and disable the original (maybe half-broken) one. > > Signed-off-by: Yisheng Xie > Suggested-by: Michal Hocko > Suggested-by: Minchan Kim > Reviewed-by: Minchan Kim > Acked-by: Naoya Horiguchi > CC: Vlastimil Babka > --- > mm/memory-failure.c | 26 ++++++++++++++++---------- > 1 file changed, 16 insertions(+), 10 deletions(-) > > diff --git a/mm/memory-failure.c b/mm/memory-failure.c > index f283c7e..56e39f8 100644 > --- a/mm/memory-failure.c > +++ b/mm/memory-failure.c > @@ -1527,7 +1527,8 @@ static int get_any_page(struct page *page, unsigned long pfn, int flags) > { > int ret = __get_any_page(page, pfn, flags); > > - if (ret == 1 && !PageHuge(page) && !PageLRU(page)) { > + if (ret == 1 && !PageHuge(page) && > + !PageLRU(page) && !__PageMovable(page)) { > /* > * Try to free it. > */ Is this sufficient? Not that I am familiar with get_any_page() but __get_any_page doesn't seem to be aware of movable pages and neither shake_page is. > @@ -1649,7 +1650,10 @@ static int __soft_offline_page(struct page *page, int flags) > * Try to migrate to a new page instead. migrate.c > * handles a large number of cases for us. > */ > - ret = isolate_lru_page(page); > + if (PageLRU(page)) > + ret = isolate_lru_page(page); > + else if (!isolate_movable_page(page, ISOLATE_UNEVICTABLE)) > + ret = -EBUSY; As pointed out in the previous response isolate_movable_page should really have the same return value contract as [__]isolate_lru_page > /* > * Drop page reference which is came from get_any_page() > * successful isolate_lru_page() already took another one. -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-f69.google.com (mail-it0-f69.google.com [209.85.214.69]) by kanga.kvack.org (Postfix) with ESMTP id 1B6126B0253 for ; Mon, 30 Jan 2017 10:00:03 -0500 (EST) Received: by mail-it0-f69.google.com with SMTP id y196so153481550ity.1 for ; Mon, 30 Jan 2017 07:00:03 -0800 (PST) Received: from smtpbgau1.qq.com (smtpbgau1.qq.com. [54.206.16.166]) by mx.google.com with ESMTPS id k185si8250140itb.12.2017.01.30.07.00.01 for (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 30 Jan 2017 07:00:02 -0800 (PST) Subject: Re: [PATCH v4 1/2] mm/migration: make isolate_movable_page always defined References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-2-git-send-email-ysxie@foxmail.com> <20170126091833.GC6590@dhcp22.suse.cz> From: Yisheng Xie Message-ID: <588F54E8.5040303@foxmail.com> Date: Mon, 30 Jan 2017 22:59:52 +0800 MIME-Version: 1.0 In-Reply-To: <20170126091833.GC6590@dhcp22.suse.cz> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: owner-linux-mm@kvack.org List-ID: To: Michal Hocko Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com Hii 1/4 ? Michali 1/4 ? Sorry for late reply. On 01/26/2017 05:18 PM, Michal Hocko wrote: > On Wed 25-01-17 23:05:37, ysxie@foxmail.com wrote: >> From: Yisheng Xie >> >> Define isolate_movable_page as a static inline function when >> CONFIG_MIGRATION is not enable. It should return false >> here which means failed to isolate movable pages. >> >> This patch do not have any functional change but prepare for >> later patch. > I think it would make more sense to make isolate_movable_page return int > and have the same semantic as __isolate_lru_page. This would be a better > preparatory patch for the later work. Yes, I think you are right, it is better to make isolate_movable_page return int just as what isolate_lru_page do, to make a better code style. It seems Andrew had already merged the fixed patch from Arnd Bergmann, Maybe I can rewrite it in a later patch if it is suitable :) -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk0-f197.google.com (mail-qk0-f197.google.com [209.85.220.197]) by kanga.kvack.org (Postfix) with ESMTP id 65F336B0260 for ; Mon, 30 Jan 2017 10:04:23 -0500 (EST) Received: by mail-qk0-f197.google.com with SMTP id l126so54186562qkc.1 for ; Mon, 30 Jan 2017 07:04:23 -0800 (PST) Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com. [54.207.22.56]) by mx.google.com with ESMTPS id g8si9703970qtc.212.2017.01.30.07.04.21 for (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 30 Jan 2017 07:04:22 -0800 (PST) Subject: Re: [PATCH v4 2/2] HWPOISON: soft offlining for non-lru movable page References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-3-git-send-email-ysxie@foxmail.com> <20170126092725.GD6590@dhcp22.suse.cz> From: Yisheng Xie Message-ID: <588F55ED.3010509@foxmail.com> Date: Mon, 30 Jan 2017 23:04:13 +0800 MIME-Version: 1.0 In-Reply-To: <20170126092725.GD6590@dhcp22.suse.cz> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Michal Hocko Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com Hi, Michal, Sorry for late reply. On 01/26/2017 05:27 PM, Michal Hocko wrote: > On Wed 25-01-17 23:05:38, ysxie@foxmail.com wrote: >> From: Yisheng Xie >> >> This patch is to extends soft offlining framework to support >> non-lru page, which already support migration after >> commit bda807d44454 ("mm: migrate: support non-lru movable page >> migration") >> >> When memory corrected errors occur on a non-lru movable page, >> we can choose to stop using it by migrating data onto another >> page and disable the original (maybe half-broken) one. >> >> Signed-off-by: Yisheng Xie >> Suggested-by: Michal Hocko >> Suggested-by: Minchan Kim >> Reviewed-by: Minchan Kim >> Acked-by: Naoya Horiguchi >> CC: Vlastimil Babka >> --- >> mm/memory-failure.c | 26 ++++++++++++++++---------- >> 1 file changed, 16 insertions(+), 10 deletions(-) >> >> diff --git a/mm/memory-failure.c b/mm/memory-failure.c >> index f283c7e..56e39f8 100644 >> --- a/mm/memory-failure.c >> +++ b/mm/memory-failure.c >> @@ -1527,7 +1527,8 @@ static int get_any_page(struct page *page, unsigned long pfn, int flags) >> { >> int ret = __get_any_page(page, pfn, flags); >> >> - if (ret == 1 && !PageHuge(page) && !PageLRU(page)) { >> + if (ret == 1 && !PageHuge(page) && >> + !PageLRU(page) && !__PageMovable(page)) { >> /* >> * Try to free it. >> */ > Is this sufficient? Not that I am familiar with get_any_page() but > __get_any_page doesn't seem to be aware of movable pages and neither > shake_page is. Sorry,maybe I do not quite get what you mean. If the page can be migrated, it can skip "shake_page and __get_any_page once more" here, though it is not a free page. right ? Please let me know if I miss anything. >> @@ -1649,7 +1650,10 @@ static int __soft_offline_page(struct page *page, int flags) >> * Try to migrate to a new page instead. migrate.c >> * handles a large number of cases for us. >> */ >> - ret = isolate_lru_page(page); >> + if (PageLRU(page)) >> + ret = isolate_lru_page(page); >> + else if (!isolate_movable_page(page, ISOLATE_UNEVICTABLE)) >> + ret = -EBUSY; > As pointed out in the previous response isolate_movable_page should > really have the same return value contract as [__]isolate_lru_page Yes, I agree with your suggestion. I will rewrite it in later patch if it is suitable. as I mention before. Thanks again for your reviewing. Yisheng Xie >> /* >> * Drop page reference which is came from get_any_page() >> * successful isolate_lru_page() already took another one. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f69.google.com (mail-wm0-f69.google.com [74.125.82.69]) by kanga.kvack.org (Postfix) with ESMTP id EC0B56B0033 for ; Mon, 30 Jan 2017 10:13:35 -0500 (EST) Received: by mail-wm0-f69.google.com with SMTP id x4so8349487wme.3 for ; Mon, 30 Jan 2017 07:13:35 -0800 (PST) Received: from mx2.suse.de (mx2.suse.de. [195.135.220.15]) by mx.google.com with ESMTPS id h6si16826652wrb.227.2017.01.30.07.13.34 for (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 30 Jan 2017 07:13:34 -0800 (PST) Date: Mon, 30 Jan 2017 16:13:32 +0100 From: Michal Hocko Subject: Re: [PATCH v4 1/2] mm/migration: make isolate_movable_page always defined Message-ID: <20170130151331.GA5311@dhcp22.suse.cz> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-2-git-send-email-ysxie@foxmail.com> <20170126091833.GC6590@dhcp22.suse.cz> <588F54E8.5040303@foxmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <588F54E8.5040303@foxmail.com> Sender: owner-linux-mm@kvack.org List-ID: To: Yisheng Xie , akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com On Mon 30-01-17 22:59:52, Yisheng Xie wrote: > Hii 1/4 ? Michali 1/4 ? > Sorry for late reply. > > On 01/26/2017 05:18 PM, Michal Hocko wrote: > > On Wed 25-01-17 23:05:37, ysxie@foxmail.com wrote: > >> From: Yisheng Xie > >> > >> Define isolate_movable_page as a static inline function when > >> CONFIG_MIGRATION is not enable. It should return false > >> here which means failed to isolate movable pages. > >> > >> This patch do not have any functional change but prepare for > >> later patch. > > I think it would make more sense to make isolate_movable_page return int > > and have the same semantic as __isolate_lru_page. This would be a better > > preparatory patch for the later work. > Yes, I think you are right, it is better to make isolate_movable_page return int > just as what isolate_lru_page do, to make a better code style. > > It seems Andrew had already merged the fixed patch from Arnd Bergmann, > Maybe I can rewrite it in a later patch if it is suitable :) I guess Andrew can just drop the current series with the folow up fixes and wait for your newer version. -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f69.google.com (mail-wm0-f69.google.com [74.125.82.69]) by kanga.kvack.org (Postfix) with ESMTP id 02C496B0278 for ; Mon, 30 Jan 2017 11:38:51 -0500 (EST) Received: by mail-wm0-f69.google.com with SMTP id v77so69509528wmv.5 for ; Mon, 30 Jan 2017 08:38:50 -0800 (PST) Received: from mx2.suse.de (mx2.suse.de. [195.135.220.15]) by mx.google.com with ESMTPS id w48si17152879wrc.70.2017.01.30.08.38.49 for (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 30 Jan 2017 08:38:49 -0800 (PST) Date: Mon, 30 Jan 2017 17:38:47 +0100 From: Michal Hocko Subject: Re: [PATCH v4 2/2] HWPOISON: soft offlining for non-lru movable page Message-ID: <20170130163846.GD4664@dhcp22.suse.cz> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-3-git-send-email-ysxie@foxmail.com> <20170126092725.GD6590@dhcp22.suse.cz> <588F55ED.3010509@foxmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <588F55ED.3010509@foxmail.com> Sender: owner-linux-mm@kvack.org List-ID: To: Yisheng Xie Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com On Mon 30-01-17 23:04:13, Yisheng Xie wrote: > Hi, Michal, > Sorry for late reply. > > On 01/26/2017 05:27 PM, Michal Hocko wrote: > > On Wed 25-01-17 23:05:38, ysxie@foxmail.com wrote: > >> From: Yisheng Xie > >> > >> This patch is to extends soft offlining framework to support > >> non-lru page, which already support migration after > >> commit bda807d44454 ("mm: migrate: support non-lru movable page > >> migration") > >> > >> When memory corrected errors occur on a non-lru movable page, > >> we can choose to stop using it by migrating data onto another > >> page and disable the original (maybe half-broken) one. > >> > >> Signed-off-by: Yisheng Xie > >> Suggested-by: Michal Hocko > >> Suggested-by: Minchan Kim > >> Reviewed-by: Minchan Kim > >> Acked-by: Naoya Horiguchi > >> CC: Vlastimil Babka > >> --- > >> mm/memory-failure.c | 26 ++++++++++++++++---------- > >> 1 file changed, 16 insertions(+), 10 deletions(-) > >> > >> diff --git a/mm/memory-failure.c b/mm/memory-failure.c > >> index f283c7e..56e39f8 100644 > >> --- a/mm/memory-failure.c > >> +++ b/mm/memory-failure.c > >> @@ -1527,7 +1527,8 @@ static int get_any_page(struct page *page, unsigned long pfn, int flags) > >> { > >> int ret = __get_any_page(page, pfn, flags); > >> > >> - if (ret == 1 && !PageHuge(page) && !PageLRU(page)) { > >> + if (ret == 1 && !PageHuge(page) && > >> + !PageLRU(page) && !__PageMovable(page)) { > >> /* > >> * Try to free it. > >> */ > > Is this sufficient? Not that I am familiar with get_any_page() but > > __get_any_page doesn't seem to be aware of movable pages and neither > > shake_page is. > Sorry,maybe I do not quite get what you mean. > If the page can be migrated, it can skip "shake_page and __get_any_page once more" here, > though it is not a free page. right ? > Please let me know if I miss anything. No, you are right, it is me who read the code incorrectly. Sorry about the confusion. -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751242AbdAYPFs (ORCPT ); Wed, 25 Jan 2017 10:05:48 -0500 Received: from smtpbg65.qq.com ([103.7.28.233]:3830 "EHLO smtpbg65.qq.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750722AbdAYPFq (ORCPT ); Wed, 25 Jan 2017 10:05:46 -0500 X-QQ-mid: esmtp32t1485356740tmgy73ljj X-QQ-SSF: 01000000000000604G100000000000V X-QQ-FEAT: JibMalLukFasLMEuXhblPLauFZ0b/OkqUUdfyoDSmeNTI8S44qD8XkMr7PVl6 pq9DPZ5f/G+ijDjLqWzU0/UnKBgce2ib3LNdxJqsPH72oG4EIRDl8Z++JPAFmDl6LgpD757 738tqcP8OyZ9yz5C1uyXfLZqu8P2lNRzsoxcPYvedp6QA7jImDJ34zz10vFwQGgVGLrhEuH Gbn1pFukfgUAyLRwx+4cjtvnatMoTeICWIs44pKt17mnm25RvEaWFOAgFzYjWz+k= X-QQ-GoodBg: 0 From: ysxie@foxmail.com To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: n-horiguchi@ah.jp.nec.com, mhocko@suse.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com Subject: [PATCH v4 0/2] HWPOISON: soft offlining for non-lru movable page Date: Wed, 25 Jan 2017 23:05:36 +0800 Message-Id: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> X-Mailer: git-send-email 1.9.1 X-QQ-SENDSIZE: 520 Feedback-ID: esmtp:foxmail.com:bgforeign:bgforeign1 X-QQ-Bgrelay: 1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yisheng Xie Hi Andrew, Could you please help to abandon the v3 of this patch for it will compile error with CONFIG_MIGRATION=n, and it also has error path handling problem. Hi Michal, Minchan and all, Could you please help to review it? Any suggestion is more than welcome. The aim of this patchset is to support soft offlining of movable no-lru pages, which already support migration after Minchan's commit bda807d44454 ("mm: migrate: support non-lru movable page migration"). That means this patch heavily depend on non-lru movable page migration. So when memory corrected errors occur on a non-lru movable page, we can stop to use it by migrating data onto another page and disable the original (maybe half-broken) one. -------- v4: * make isolate_movable_page always defined to avoid compile error with CONFIG_MIGRATION = n * return -EBUSY when isolate_movable_page return false which means failed to isolate movable page. v3: * delete some unneed limitation and use !__PageMovable instead of PageLRU after isolate page to avoid isolated count mismatch, as Minchan Kim's suggestion. v2: * delete function soft_offline_movable_page() and hanle non-lru movable page in __soft_offline_page() as Michal Hocko suggested. Yisheng Xie (2): mm/migration: make isolate_movable_page always defined HWPOISON: soft offlining for non-lru movable page include/linux/migrate.h | 2 ++ mm/memory-failure.c | 26 ++++++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) -- 1.9.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751476AbdAYPFw (ORCPT ); Wed, 25 Jan 2017 10:05:52 -0500 Received: from smtpbg202.qq.com ([184.105.206.29]:54562 "EHLO smtpbg202.qq.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750722AbdAYPFt (ORCPT ); Wed, 25 Jan 2017 10:05:49 -0500 X-QQ-mid: esmtp32t1485356742tsoxol8ae X-QQ-SSF: 01000000000000604G100000000000V X-QQ-FEAT: AJSgOHJFKsrHNtsYk/3+owfv05yrBpiXoqlfhNf6bqXbGeVUg/qTZohD/1m3g ZfpGgjvX2UuZGj94o5+XUClBe2n9ATp04qWHCMU5//oSVOeb5MUTMRGMZ7xFPVUsWqC4O+t trHGCzbLwGckP33ATPAFGiPNcfZpizUhplpymiYbSFqz9oNw7EldhYADdb2P41NjEZ76W3a HqfFT0nJpSdtbAhyysHnfyNy1PO18B36lBxl8bCchMwn7O12OWUiHx5zQjEplkBT9wAvLII eApw== X-QQ-GoodBg: 0 From: ysxie@foxmail.com To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: n-horiguchi@ah.jp.nec.com, mhocko@suse.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com Subject: [PATCH v4 1/2] mm/migration: make isolate_movable_page always defined Date: Wed, 25 Jan 2017 23:05:37 +0800 Message-Id: <1485356738-4831-2-git-send-email-ysxie@foxmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> X-QQ-SENDSIZE: 520 Feedback-ID: esmtp:foxmail.com:bgforeign:bgforeign1 X-QQ-Bgrelay: 1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yisheng Xie Define isolate_movable_page as a static inline function when CONFIG_MIGRATION is not enable. It should return false here which means failed to isolate movable pages. This patch do not have any functional change but prepare for later patch. Signed-off-by: Yisheng Xie Cc: Michal Hocko Cc: Minchan Kim Cc: Naoya Horiguchi CC: Vlastimil Babka --- include/linux/migrate.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/migrate.h b/include/linux/migrate.h index ae8d475..631a8c8 100644 --- a/include/linux/migrate.h +++ b/include/linux/migrate.h @@ -56,6 +56,8 @@ static inline int migrate_pages(struct list_head *l, new_page_t new, free_page_t free, unsigned long private, enum migrate_mode mode, int reason) { return -ENOSYS; } +static inline bool isolate_movable_page(struct page *page, isolate_mode_t mode) + { return false; } static inline int migrate_prep(void) { return -ENOSYS; } static inline int migrate_prep_local(void) { return -ENOSYS; } -- 1.9.1 . From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751507AbdAYPFy (ORCPT ); Wed, 25 Jan 2017 10:05:54 -0500 Received: from smtpbgsg2.qq.com ([54.254.200.128]:48902 "EHLO smtpbgsg2.qq.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751404AbdAYPFw (ORCPT ); Wed, 25 Jan 2017 10:05:52 -0500 X-QQ-mid: esmtp32t1485356745tvsdkdnsm X-QQ-SSF: 01000000000000604G100000000000V X-QQ-FEAT: JibMalLukFb/Xh2VPs/C5Mif2DSPJEVHsWJNSWzRuXh4pDRctoqNhnkAT3qru 2hwdDhIfCpLEbzdEuGwpVT0N4GwQ/cf/OAMtdIVm653Zvek3dXmxOhOK1jpIj5Jaaq7RxAR OOaPgwT9NhkbkZ4b2MKkHciLFVTc7b8ZmCff6pfyhdgVDtxFHTNlJzF3FjUsvk1VlptMEhy TzEjA2qkl4B4yCvl2I+hwAGbSVAyLjki0Dme45r8VSObvOHA9ZqgQQqKFoLWxXRU= X-QQ-GoodBg: 0 From: ysxie@foxmail.com To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: n-horiguchi@ah.jp.nec.com, mhocko@suse.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com Subject: [PATCH v4 2/2] HWPOISON: soft offlining for non-lru movable page Date: Wed, 25 Jan 2017 23:05:38 +0800 Message-Id: <1485356738-4831-3-git-send-email-ysxie@foxmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> X-QQ-SENDSIZE: 520 Feedback-ID: esmtp:foxmail.com:bgforeign:bgforeign3 X-QQ-Bgrelay: 1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yisheng Xie This patch is to extends soft offlining framework to support non-lru page, which already support migration after commit bda807d44454 ("mm: migrate: support non-lru movable page migration") When memory corrected errors occur on a non-lru movable page, we can choose to stop using it by migrating data onto another page and disable the original (maybe half-broken) one. Signed-off-by: Yisheng Xie Suggested-by: Michal Hocko Suggested-by: Minchan Kim Reviewed-by: Minchan Kim Acked-by: Naoya Horiguchi CC: Vlastimil Babka --- mm/memory-failure.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index f283c7e..56e39f8 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1527,7 +1527,8 @@ static int get_any_page(struct page *page, unsigned long pfn, int flags) { int ret = __get_any_page(page, pfn, flags); - if (ret == 1 && !PageHuge(page) && !PageLRU(page)) { + if (ret == 1 && !PageHuge(page) && + !PageLRU(page) && !__PageMovable(page)) { /* * Try to free it. */ @@ -1649,7 +1650,10 @@ static int __soft_offline_page(struct page *page, int flags) * Try to migrate to a new page instead. migrate.c * handles a large number of cases for us. */ - ret = isolate_lru_page(page); + if (PageLRU(page)) + ret = isolate_lru_page(page); + else if (!isolate_movable_page(page, ISOLATE_UNEVICTABLE)) + ret = -EBUSY; /* * Drop page reference which is came from get_any_page() * successful isolate_lru_page() already took another one. @@ -1657,18 +1661,20 @@ static int __soft_offline_page(struct page *page, int flags) put_hwpoison_page(page); if (!ret) { LIST_HEAD(pagelist); - inc_node_page_state(page, NR_ISOLATED_ANON + - page_is_file_cache(page)); + /* + * After isolated lru page, the PageLRU will be cleared, + * so use !__PageMovable instead for LRU page's mapping + * cannot have PAGE_MAPPING_MOVABLE. + */ + if (!__PageMovable(page)) + inc_node_page_state(page, NR_ISOLATED_ANON + + page_is_file_cache(page)); list_add(&page->lru, &pagelist); ret = migrate_pages(&pagelist, new_page, NULL, MPOL_MF_MOVE_ALL, MIGRATE_SYNC, MR_MEMORY_FAILURE); if (ret) { - if (!list_empty(&pagelist)) { - list_del(&page->lru); - dec_node_page_state(page, NR_ISOLATED_ANON + - page_is_file_cache(page)); - putback_lru_page(page); - } + if (!list_empty(&pagelist)) + putback_movable_pages(&pagelist); pr_info("soft offline: %#lx: migration failed %d, type %lx\n", pfn, ret, page->flags); -- 1.9.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753193AbdAZJSn (ORCPT ); Thu, 26 Jan 2017 04:18:43 -0500 Received: from mx2.suse.de ([195.135.220.15]:38356 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753129AbdAZJSh (ORCPT ); Thu, 26 Jan 2017 04:18:37 -0500 Date: Thu, 26 Jan 2017 10:18:34 +0100 From: Michal Hocko To: ysxie@foxmail.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com Subject: Re: [PATCH v4 1/2] mm/migration: make isolate_movable_page always defined Message-ID: <20170126091833.GC6590@dhcp22.suse.cz> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-2-git-send-email-ysxie@foxmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1485356738-4831-2-git-send-email-ysxie@foxmail.com> User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed 25-01-17 23:05:37, ysxie@foxmail.com wrote: > From: Yisheng Xie > > Define isolate_movable_page as a static inline function when > CONFIG_MIGRATION is not enable. It should return false > here which means failed to isolate movable pages. > > This patch do not have any functional change but prepare for > later patch. I think it would make more sense to make isolate_movable_page return int and have the same semantic as __isolate_lru_page. This would be a better preparatory patch for the later work. > Signed-off-by: Yisheng Xie > Cc: Michal Hocko > Cc: Minchan Kim > Cc: Naoya Horiguchi > CC: Vlastimil Babka > --- > include/linux/migrate.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/include/linux/migrate.h b/include/linux/migrate.h > index ae8d475..631a8c8 100644 > --- a/include/linux/migrate.h > +++ b/include/linux/migrate.h > @@ -56,6 +56,8 @@ static inline int migrate_pages(struct list_head *l, new_page_t new, > free_page_t free, unsigned long private, enum migrate_mode mode, > int reason) > { return -ENOSYS; } > +static inline bool isolate_movable_page(struct page *page, isolate_mode_t mode) > + { return false; } > > static inline int migrate_prep(void) { return -ENOSYS; } > static inline int migrate_prep_local(void) { return -ENOSYS; } > -- > 1.9.1 > > > -- Michal Hocko SUSE Labs From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753273AbdAZJ13 (ORCPT ); Thu, 26 Jan 2017 04:27:29 -0500 Received: from mx2.suse.de ([195.135.220.15]:38946 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753088AbdAZJ12 (ORCPT ); Thu, 26 Jan 2017 04:27:28 -0500 Date: Thu, 26 Jan 2017 10:27:25 +0100 From: Michal Hocko To: ysxie@foxmail.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com Subject: Re: [PATCH v4 2/2] HWPOISON: soft offlining for non-lru movable page Message-ID: <20170126092725.GD6590@dhcp22.suse.cz> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-3-git-send-email-ysxie@foxmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1485356738-4831-3-git-send-email-ysxie@foxmail.com> User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed 25-01-17 23:05:38, ysxie@foxmail.com wrote: > From: Yisheng Xie > > This patch is to extends soft offlining framework to support > non-lru page, which already support migration after > commit bda807d44454 ("mm: migrate: support non-lru movable page > migration") > > When memory corrected errors occur on a non-lru movable page, > we can choose to stop using it by migrating data onto another > page and disable the original (maybe half-broken) one. > > Signed-off-by: Yisheng Xie > Suggested-by: Michal Hocko > Suggested-by: Minchan Kim > Reviewed-by: Minchan Kim > Acked-by: Naoya Horiguchi > CC: Vlastimil Babka > --- > mm/memory-failure.c | 26 ++++++++++++++++---------- > 1 file changed, 16 insertions(+), 10 deletions(-) > > diff --git a/mm/memory-failure.c b/mm/memory-failure.c > index f283c7e..56e39f8 100644 > --- a/mm/memory-failure.c > +++ b/mm/memory-failure.c > @@ -1527,7 +1527,8 @@ static int get_any_page(struct page *page, unsigned long pfn, int flags) > { > int ret = __get_any_page(page, pfn, flags); > > - if (ret == 1 && !PageHuge(page) && !PageLRU(page)) { > + if (ret == 1 && !PageHuge(page) && > + !PageLRU(page) && !__PageMovable(page)) { > /* > * Try to free it. > */ Is this sufficient? Not that I am familiar with get_any_page() but __get_any_page doesn't seem to be aware of movable pages and neither shake_page is. > @@ -1649,7 +1650,10 @@ static int __soft_offline_page(struct page *page, int flags) > * Try to migrate to a new page instead. migrate.c > * handles a large number of cases for us. > */ > - ret = isolate_lru_page(page); > + if (PageLRU(page)) > + ret = isolate_lru_page(page); > + else if (!isolate_movable_page(page, ISOLATE_UNEVICTABLE)) > + ret = -EBUSY; As pointed out in the previous response isolate_movable_page should really have the same return value contract as [__]isolate_lru_page > /* > * Drop page reference which is came from get_any_page() > * successful isolate_lru_page() already took another one. -- Michal Hocko SUSE Labs From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932359AbdA3PAh (ORCPT ); Mon, 30 Jan 2017 10:00:37 -0500 Received: from smtpbgbr2.qq.com ([54.207.22.56]:41839 "EHLO smtpbgbr2.qq.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932337AbdA3PAO (ORCPT ); Mon, 30 Jan 2017 10:00:14 -0500 X-QQ-mid: esmtp32t1485788394tzmyy2lln X-QQ-SSF: 00000000000000606G110300000000V X-QQ-FEAT: r4zXc+C+CK6Es4TniM6fKmE8SRjAfRsj34y9PkVXqLrsIWzKFxio+oMgUS6+c y+YDcMXtUfrBl5mpdnKoBVQWqTGxwTtU7uHzGP/9KZxHBkFlOr0kDYaGuM8X95FrrGyMcBo zfTm9TzZBzwhn2Z4era4do5KEsio6ZxwBKIRWUlx3SmoAr0aKNfBG1+K6Bp8OYmfKBPW70m f2y4tgbh5WkLHo1VXRoYyhNsRDhITHUxJSksir4hKLNWGPuyaFOyKNxzlT1Jvf40kj7L/jd FDkg== X-QQ-GoodBg: 0 Subject: Re: [PATCH v4 1/2] mm/migration: make isolate_movable_page always defined To: Michal Hocko References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-2-git-send-email-ysxie@foxmail.com> <20170126091833.GC6590@dhcp22.suse.cz> Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com From: Yisheng Xie Message-ID: <588F54E8.5040303@foxmail.com> Date: Mon, 30 Jan 2017 22:59:52 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <20170126091833.GC6590@dhcp22.suse.cz> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: esmtp:foxmail.com:bgforeign:bgforeign1 X-QQ-Bgrelay: 1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Michal, Sorry for late reply. On 01/26/2017 05:18 PM, Michal Hocko wrote: > On Wed 25-01-17 23:05:37, ysxie@foxmail.com wrote: >> From: Yisheng Xie >> >> Define isolate_movable_page as a static inline function when >> CONFIG_MIGRATION is not enable. It should return false >> here which means failed to isolate movable pages. >> >> This patch do not have any functional change but prepare for >> later patch. > I think it would make more sense to make isolate_movable_page return int > and have the same semantic as __isolate_lru_page. This would be a better > preparatory patch for the later work. Yes, I think you are right, it is better to make isolate_movable_page return int just as what isolate_lru_page do, to make a better code style. It seems Andrew had already merged the fixed patch from Arnd Bergmann, Maybe I can rewrite it in a later patch if it is suitable :) From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932261AbdA3PRq (ORCPT ); Mon, 30 Jan 2017 10:17:46 -0500 Received: from SMTPBG15.QQ.COM ([183.60.61.204]:57250 "EHLO smtpbg15.qq.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932215AbdA3PQ3 (ORCPT ); Mon, 30 Jan 2017 10:16:29 -0500 X-Greylist: delayed 377 seconds by postgrey-1.27 at vger.kernel.org; Mon, 30 Jan 2017 10:16:29 EST X-QQ-mid: esmtp20t1485788655tlx822yh7 X-QQ-SSF: 01000000000000606G110300000000V X-QQ-FEAT: nETcBmVCK8aByHlPGMgMlqSeREpB5O/U9BszgPe7dsitqWmB8CIDWCG1Uvjm+ rphyvSGb+dqwcSuidUTGTQckFF8GOPQmcJAbrbYLnKuGWse5OZCSqty1uM+GVgdtEtkrM7K QyqtBZBP0ArS7AVljCTZ3t2eOj5vrSiZTTMn5CEdYt53qbsH/bRYRJho4J/pKzkfe5wpeoY s6PVTbgqos0YxDqVEea5NrE0UMBIz5obwWvvo8uBoJr6z3ke81MaFkjwGm0hDbeUayjniYx X9+T3Ywks9Gj5L X-QQ-GoodBg: 0 Subject: Re: [PATCH v4 2/2] HWPOISON: soft offlining for non-lru movable page To: Michal Hocko References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-3-git-send-email-ysxie@foxmail.com> <20170126092725.GD6590@dhcp22.suse.cz> Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com From: Yisheng Xie Message-ID: <588F55ED.3010509@foxmail.com> Date: Mon, 30 Jan 2017 23:04:13 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <20170126092725.GD6590@dhcp22.suse.cz> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-QQ-SENDSIZE: 520 Feedback-ID: esmtp:foxmail.com:bgforeign:bgforeign1 X-QQ-Bgrelay: 1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Michal, Sorry for late reply. On 01/26/2017 05:27 PM, Michal Hocko wrote: > On Wed 25-01-17 23:05:38, ysxie@foxmail.com wrote: >> From: Yisheng Xie >> >> This patch is to extends soft offlining framework to support >> non-lru page, which already support migration after >> commit bda807d44454 ("mm: migrate: support non-lru movable page >> migration") >> >> When memory corrected errors occur on a non-lru movable page, >> we can choose to stop using it by migrating data onto another >> page and disable the original (maybe half-broken) one. >> >> Signed-off-by: Yisheng Xie >> Suggested-by: Michal Hocko >> Suggested-by: Minchan Kim >> Reviewed-by: Minchan Kim >> Acked-by: Naoya Horiguchi >> CC: Vlastimil Babka >> --- >> mm/memory-failure.c | 26 ++++++++++++++++---------- >> 1 file changed, 16 insertions(+), 10 deletions(-) >> >> diff --git a/mm/memory-failure.c b/mm/memory-failure.c >> index f283c7e..56e39f8 100644 >> --- a/mm/memory-failure.c >> +++ b/mm/memory-failure.c >> @@ -1527,7 +1527,8 @@ static int get_any_page(struct page *page, unsigned long pfn, int flags) >> { >> int ret = __get_any_page(page, pfn, flags); >> >> - if (ret == 1 && !PageHuge(page) && !PageLRU(page)) { >> + if (ret == 1 && !PageHuge(page) && >> + !PageLRU(page) && !__PageMovable(page)) { >> /* >> * Try to free it. >> */ > Is this sufficient? Not that I am familiar with get_any_page() but > __get_any_page doesn't seem to be aware of movable pages and neither > shake_page is. Sorry,maybe I do not quite get what you mean. If the page can be migrated, it can skip "shake_page and __get_any_page once more" here, though it is not a free page. right ? Please let me know if I miss anything. >> @@ -1649,7 +1650,10 @@ static int __soft_offline_page(struct page *page, int flags) >> * Try to migrate to a new page instead. migrate.c >> * handles a large number of cases for us. >> */ >> - ret = isolate_lru_page(page); >> + if (PageLRU(page)) >> + ret = isolate_lru_page(page); >> + else if (!isolate_movable_page(page, ISOLATE_UNEVICTABLE)) >> + ret = -EBUSY; > As pointed out in the previous response isolate_movable_page should > really have the same return value contract as [__]isolate_lru_page Yes, I agree with your suggestion. I will rewrite it in later patch if it is suitable. as I mention before. Thanks again for your reviewing. Yisheng Xie >> /* >> * Drop page reference which is came from get_any_page() >> * successful isolate_lru_page() already took another one. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932455AbdA3Pxi (ORCPT ); Mon, 30 Jan 2017 10:53:38 -0500 Received: from mx2.suse.de ([195.135.220.15]:40577 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751467AbdA3PO0 (ORCPT ); Mon, 30 Jan 2017 10:14:26 -0500 Date: Mon, 30 Jan 2017 16:13:32 +0100 From: Michal Hocko To: Yisheng Xie , akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com Subject: Re: [PATCH v4 1/2] mm/migration: make isolate_movable_page always defined Message-ID: <20170130151331.GA5311@dhcp22.suse.cz> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-2-git-send-email-ysxie@foxmail.com> <20170126091833.GC6590@dhcp22.suse.cz> <588F54E8.5040303@foxmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <588F54E8.5040303@foxmail.com> User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon 30-01-17 22:59:52, Yisheng Xie wrote: > Hi, Michal, > Sorry for late reply. > > On 01/26/2017 05:18 PM, Michal Hocko wrote: > > On Wed 25-01-17 23:05:37, ysxie@foxmail.com wrote: > >> From: Yisheng Xie > >> > >> Define isolate_movable_page as a static inline function when > >> CONFIG_MIGRATION is not enable. It should return false > >> here which means failed to isolate movable pages. > >> > >> This patch do not have any functional change but prepare for > >> later patch. > > I think it would make more sense to make isolate_movable_page return int > > and have the same semantic as __isolate_lru_page. This would be a better > > preparatory patch for the later work. > Yes, I think you are right, it is better to make isolate_movable_page return int > just as what isolate_lru_page do, to make a better code style. > > It seems Andrew had already merged the fixed patch from Arnd Bergmann, > Maybe I can rewrite it in a later patch if it is suitable :) I guess Andrew can just drop the current series with the folow up fixes and wait for your newer version. -- Michal Hocko SUSE Labs From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932458AbdA3Qi7 (ORCPT ); Mon, 30 Jan 2017 11:38:59 -0500 Received: from mx2.suse.de ([195.135.220.15]:46722 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750807AbdA3Qiv (ORCPT ); Mon, 30 Jan 2017 11:38:51 -0500 Date: Mon, 30 Jan 2017 17:38:47 +0100 From: Michal Hocko To: Yisheng Xie Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, n-horiguchi@ah.jp.nec.com, akpm@linux-foundation.org, minchan@kernel.org, vbabka@suse.cz, guohanjun@huawei.com, qiuxishi@huawei.com Subject: Re: [PATCH v4 2/2] HWPOISON: soft offlining for non-lru movable page Message-ID: <20170130163846.GD4664@dhcp22.suse.cz> References: <1485356738-4831-1-git-send-email-ysxie@foxmail.com> <1485356738-4831-3-git-send-email-ysxie@foxmail.com> <20170126092725.GD6590@dhcp22.suse.cz> <588F55ED.3010509@foxmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <588F55ED.3010509@foxmail.com> User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon 30-01-17 23:04:13, Yisheng Xie wrote: > Hi, Michal, > Sorry for late reply. > > On 01/26/2017 05:27 PM, Michal Hocko wrote: > > On Wed 25-01-17 23:05:38, ysxie@foxmail.com wrote: > >> From: Yisheng Xie > >> > >> This patch is to extends soft offlining framework to support > >> non-lru page, which already support migration after > >> commit bda807d44454 ("mm: migrate: support non-lru movable page > >> migration") > >> > >> When memory corrected errors occur on a non-lru movable page, > >> we can choose to stop using it by migrating data onto another > >> page and disable the original (maybe half-broken) one. > >> > >> Signed-off-by: Yisheng Xie > >> Suggested-by: Michal Hocko > >> Suggested-by: Minchan Kim > >> Reviewed-by: Minchan Kim > >> Acked-by: Naoya Horiguchi > >> CC: Vlastimil Babka > >> --- > >> mm/memory-failure.c | 26 ++++++++++++++++---------- > >> 1 file changed, 16 insertions(+), 10 deletions(-) > >> > >> diff --git a/mm/memory-failure.c b/mm/memory-failure.c > >> index f283c7e..56e39f8 100644 > >> --- a/mm/memory-failure.c > >> +++ b/mm/memory-failure.c > >> @@ -1527,7 +1527,8 @@ static int get_any_page(struct page *page, unsigned long pfn, int flags) > >> { > >> int ret = __get_any_page(page, pfn, flags); > >> > >> - if (ret == 1 && !PageHuge(page) && !PageLRU(page)) { > >> + if (ret == 1 && !PageHuge(page) && > >> + !PageLRU(page) && !__PageMovable(page)) { > >> /* > >> * Try to free it. > >> */ > > Is this sufficient? Not that I am familiar with get_any_page() but > > __get_any_page doesn't seem to be aware of movable pages and neither > > shake_page is. > Sorry,maybe I do not quite get what you mean. > If the page can be migrated, it can skip "shake_page and __get_any_page once more" here, > though it is not a free page. right ? > Please let me know if I miss anything. No, you are right, it is me who read the code incorrectly. Sorry about the confusion. -- Michal Hocko SUSE Labs