* [PATCH v3] HWPOISON: soft offlining for non-lru movable page
@ 2017-01-23 14:50 ysxie
2017-01-24 2:34 ` Minchan Kim
2017-01-25 11:47 ` Michal Hocko
0 siblings, 2 replies; 4+ messages in thread
From: ysxie @ 2017-01-23 14:50 UTC (permalink / raw)
To: linux-mm, linux-kernel
Cc: n-horiguchi, mhocko, akpm, minchan, vbabka, guohanjun, qiuxishi
From: Yisheng Xie <xieyisheng1@huawei.com>
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 <xieyisheng1@huawei.com>
Suggested-by: Michal Hocko <mhocko@kernel.org>
Suggested-by: Minchan Kim <minchan@kernel.org>
Acked-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
---
v2:
delete function soft_offline_movable_page() and hanle non-lru movable
page in __soft_offline_page() as Michal Hocko suggested.
v3:
delete some unneed limitation and use !__PageMovable instead of PageLRU
after isolate page to avoid isolated count mismatch, as Minchan Kim's suggestion.
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..3f3cfd4 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
+ ret = !isolate_movable_page(page, ISOLATE_UNEVICTABLE);
/*
* 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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v3] HWPOISON: soft offlining for non-lru movable page
2017-01-23 14:50 [PATCH v3] HWPOISON: soft offlining for non-lru movable page ysxie
@ 2017-01-24 2:34 ` Minchan Kim
2017-01-25 11:47 ` Michal Hocko
1 sibling, 0 replies; 4+ messages in thread
From: Minchan Kim @ 2017-01-24 2:34 UTC (permalink / raw)
To: ysxie
Cc: linux-mm, linux-kernel, n-horiguchi, mhocko, akpm, vbabka,
guohanjun, qiuxishi
On Mon, Jan 23, 2017 at 10:50:10PM +0800, ysxie@foxmail.com wrote:
> From: Yisheng Xie <xieyisheng1@huawei.com>
>
> 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 <xieyisheng1@huawei.com>
> Suggested-by: Michal Hocko <mhocko@kernel.org>
> Suggested-by: Minchan Kim <minchan@kernel.org>
> Acked-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Reviewed-by: Minchan Kim <minchan@kernel.org>
Thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3] HWPOISON: soft offlining for non-lru movable page
2017-01-23 14:50 [PATCH v3] HWPOISON: soft offlining for non-lru movable page ysxie
2017-01-24 2:34 ` Minchan Kim
@ 2017-01-25 11:47 ` Michal Hocko
2017-01-25 11:52 ` Michal Hocko
1 sibling, 1 reply; 4+ messages in thread
From: Michal Hocko @ 2017-01-25 11:47 UTC (permalink / raw)
To: ysxie
Cc: linux-mm, linux-kernel, n-horiguchi, akpm, minchan, vbabka,
guohanjun, qiuxishi
On Mon 23-01-17 22:50:10, ysxie@foxmail.com wrote:
> From: Yisheng Xie <xieyisheng1@huawei.com>
>
> 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 <xieyisheng1@huawei.com>
> Suggested-by: Michal Hocko <mhocko@kernel.org>
> Suggested-by: Minchan Kim <minchan@kernel.org>
> Acked-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
This doesn't compile with CONFIG_MIGRATION=n
mm/memory-failure.c: In function '__soft_offline_page':
mm/memory-failure.c:1656:3: error: implicit declaration of function 'isolate_movable_page' [-Werror=implicit-function-declaration]
ret = !isolate_movable_page(page, ISOLATE_UNEVICTABLE);
^
cc1: some warnings being treated as errors
I guess the following should handle the problem
---
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index ae8d475a9385..1da7a1f99fc7 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -57,6 +57,11 @@ static inline int migrate_pages(struct list_head *l, new_page_t new,
int reason)
{ return -ENOSYS; }
+static inline bool isolate_movable_page(struct page *page, isolate_mode_t mode)
+{
+ return -EBUSY;
+}
+
static inline int migrate_prep(void) { return -ENOSYS; }
static inline int migrate_prep_local(void) { return -ENOSYS; }
At least it compiles fine now. I have to look at the patch yet.
--
Michal Hocko
SUSE Labs
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v3] HWPOISON: soft offlining for non-lru movable page
2017-01-25 11:47 ` Michal Hocko
@ 2017-01-25 11:52 ` Michal Hocko
0 siblings, 0 replies; 4+ messages in thread
From: Michal Hocko @ 2017-01-25 11:52 UTC (permalink / raw)
To: ysxie
Cc: linux-mm, linux-kernel, n-horiguchi, akpm, minchan, vbabka,
guohanjun, qiuxishi
On Wed 25-01-17 12:47:53, Michal Hocko wrote:
> On Mon 23-01-17 22:50:10, ysxie@foxmail.com wrote:
> > From: Yisheng Xie <xieyisheng1@huawei.com>
> >
> > 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 <xieyisheng1@huawei.com>
> > Suggested-by: Michal Hocko <mhocko@kernel.org>
> > Suggested-by: Minchan Kim <minchan@kernel.org>
> > Acked-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
>
> This doesn't compile with CONFIG_MIGRATION=n
>
> mm/memory-failure.c: In function '__soft_offline_page':
> mm/memory-failure.c:1656:3: error: implicit declaration of function 'isolate_movable_page' [-Werror=implicit-function-declaration]
> ret = !isolate_movable_page(page, ISOLATE_UNEVICTABLE);
> ^
> cc1: some warnings being treated as errors
OK, I have missed
http://lkml.kernel.org/r/1485340563-60785-1-git-send-email-xieyisheng1@huawei.com
so please scratch this one.
--
Michal Hocko
SUSE Labs
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-01-25 11:52 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-23 14:50 [PATCH v3] HWPOISON: soft offlining for non-lru movable page ysxie
2017-01-24 2:34 ` Minchan Kim
2017-01-25 11:47 ` Michal Hocko
2017-01-25 11:52 ` Michal Hocko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).