Re: [PATCH 2/6] mm: differentiate unmap for vmscan from other unmap.

2014-06-30 Thread Jerome Glisse
On Sun, Jun 29, 2014 at 08:58:17PM -0700, John Hubbard wrote:
> On Fri, 27 Jun 2014, Jérôme Glisse wrote:
> 
> > From: Jérôme Glisse 
> > 
> > New code will need to be able to differentiate between a regular unmap and
> > an unmap trigger by vmscan in which case we want to be as quick as possible.
> > 
> > Signed-off-by: Jérôme Glisse 
> > ---
> >  include/linux/rmap.h | 15 ---
> >  mm/memory-failure.c  |  2 +-
> >  mm/vmscan.c  |  4 ++--
> >  3 files changed, 11 insertions(+), 10 deletions(-)
> > 
> > diff --git a/include/linux/rmap.h b/include/linux/rmap.h
> > index be57450..eddbc07 100644
> > --- a/include/linux/rmap.h
> > +++ b/include/linux/rmap.h
> > @@ -72,13 +72,14 @@ struct anon_vma_chain {
> >  };
> >  
> >  enum ttu_flags {
> > -   TTU_UNMAP = 1,  /* unmap mode */
> > -   TTU_MIGRATION = 2,  /* migration mode */
> > -   TTU_MUNLOCK = 4,/* munlock mode */
> > -
> > -   TTU_IGNORE_MLOCK = (1 << 8),/* ignore mlock */
> > -   TTU_IGNORE_ACCESS = (1 << 9),   /* don't age */
> > -   TTU_IGNORE_HWPOISON = (1 << 10),/* corrupted page is recoverable */
> > +   TTU_VMSCAN = 1, /* unmap for vmscan */
> > +   TTU_POISON = 2, /* unmap for poison */
> > +   TTU_MIGRATION = 4,  /* migration mode */
> > +   TTU_MUNLOCK = 8,/* munlock mode */
> > +
> > +   TTU_IGNORE_MLOCK = (1 << 9),/* ignore mlock */
> > +   TTU_IGNORE_ACCESS = (1 << 10),  /* don't age */
> > +   TTU_IGNORE_HWPOISON = (1 << 11),/* corrupted page is recoverable */
> 
> Unless there is a deeper purpose that I am overlooking, I think it would 
> be better to leave the _MLOCK, _ACCESS, and _HWPOISON at their original 
> values. I just can't quite see why they would need to start at bit 9 
> instead of bit 8...

This code change to have various TTU_* be bitflag instead of value. I am
not sure what was the win in that, would need to dig up that patch that
did that. But in all the case i preserve that change here hence starting
at 9.
> 
> >  };
> >  
> >  #ifdef CONFIG_MMU
> > diff --git a/mm/memory-failure.c b/mm/memory-failure.c
> > index a7a89eb..ba176c4 100644
> > --- a/mm/memory-failure.c
> > +++ b/mm/memory-failure.c
> > @@ -887,7 +887,7 @@ static int page_action(struct page_state *ps, struct 
> > page *p,
> >  static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
> >   int trapno, int flags, struct page **hpagep)
> >  {
> > -   enum ttu_flags ttu = TTU_UNMAP | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
> > +   enum ttu_flags ttu = TTU_POISON | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
> > struct address_space *mapping;
> > LIST_HEAD(tokill);
> > int ret;
> > diff --git a/mm/vmscan.c b/mm/vmscan.c
> > index 6d24fd6..5a7d286 100644
> > --- a/mm/vmscan.c
> > +++ b/mm/vmscan.c
> > @@ -1163,7 +1163,7 @@ unsigned long reclaim_clean_pages_from_list(struct 
> > zone *zone,
> > }
> >  
> > ret = shrink_page_list(_pages, zone, ,
> > -   TTU_UNMAP|TTU_IGNORE_ACCESS,
> > +   TTU_VMSCAN|TTU_IGNORE_ACCESS,
> > , , , , , true);
> > list_splice(_pages, page_list);
> > mod_zone_page_state(zone, NR_ISOLATED_FILE, -ret);
> > @@ -1518,7 +1518,7 @@ shrink_inactive_list(unsigned long nr_to_scan, struct 
> > lruvec *lruvec,
> > if (nr_taken == 0)
> > return 0;
> >  
> > -   nr_reclaimed = shrink_page_list(_list, zone, sc, TTU_UNMAP,
> > +   nr_reclaimed = shrink_page_list(_list, zone, sc, TTU_VMSCAN,
> > _dirty, _unqueued_dirty, _congested,
> > _writeback, _immediate,
> > false);
> > -- 
> > 1.9.0
> > 
> > --
> > To unsubscribe, send a message with 'unsubscribe linux-mm' in
> > the body to majord...@kvack.org.  For more info on Linux MM,
> > see: http://www.linux-mm.org/ .
> > Don't email: mailto:"d...@kvack.org;> em...@kvack.org 
> > 
> 
> Other than that, looks good.
> 
> Reviewed-by: John Hubbard 
> 
> thanks,
> John H.

--
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/


Re: [PATCH 2/6] mm: differentiate unmap for vmscan from other unmap.

2014-06-30 Thread Jerome Glisse
On Sun, Jun 29, 2014 at 08:58:17PM -0700, John Hubbard wrote:
 On Fri, 27 Jun 2014, Jérôme Glisse wrote:
 
  From: Jérôme Glisse jgli...@redhat.com
  
  New code will need to be able to differentiate between a regular unmap and
  an unmap trigger by vmscan in which case we want to be as quick as possible.
  
  Signed-off-by: Jérôme Glisse jgli...@redhat.com
  ---
   include/linux/rmap.h | 15 ---
   mm/memory-failure.c  |  2 +-
   mm/vmscan.c  |  4 ++--
   3 files changed, 11 insertions(+), 10 deletions(-)
  
  diff --git a/include/linux/rmap.h b/include/linux/rmap.h
  index be57450..eddbc07 100644
  --- a/include/linux/rmap.h
  +++ b/include/linux/rmap.h
  @@ -72,13 +72,14 @@ struct anon_vma_chain {
   };
   
   enum ttu_flags {
  -   TTU_UNMAP = 1,  /* unmap mode */
  -   TTU_MIGRATION = 2,  /* migration mode */
  -   TTU_MUNLOCK = 4,/* munlock mode */
  -
  -   TTU_IGNORE_MLOCK = (1  8),/* ignore mlock */
  -   TTU_IGNORE_ACCESS = (1  9),   /* don't age */
  -   TTU_IGNORE_HWPOISON = (1  10),/* corrupted page is recoverable */
  +   TTU_VMSCAN = 1, /* unmap for vmscan */
  +   TTU_POISON = 2, /* unmap for poison */
  +   TTU_MIGRATION = 4,  /* migration mode */
  +   TTU_MUNLOCK = 8,/* munlock mode */
  +
  +   TTU_IGNORE_MLOCK = (1  9),/* ignore mlock */
  +   TTU_IGNORE_ACCESS = (1  10),  /* don't age */
  +   TTU_IGNORE_HWPOISON = (1  11),/* corrupted page is recoverable */
 
 Unless there is a deeper purpose that I am overlooking, I think it would 
 be better to leave the _MLOCK, _ACCESS, and _HWPOISON at their original 
 values. I just can't quite see why they would need to start at bit 9 
 instead of bit 8...

This code change to have various TTU_* be bitflag instead of value. I am
not sure what was the win in that, would need to dig up that patch that
did that. But in all the case i preserve that change here hence starting
at 9.
 
   };
   
   #ifdef CONFIG_MMU
  diff --git a/mm/memory-failure.c b/mm/memory-failure.c
  index a7a89eb..ba176c4 100644
  --- a/mm/memory-failure.c
  +++ b/mm/memory-failure.c
  @@ -887,7 +887,7 @@ static int page_action(struct page_state *ps, struct 
  page *p,
   static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
int trapno, int flags, struct page **hpagep)
   {
  -   enum ttu_flags ttu = TTU_UNMAP | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
  +   enum ttu_flags ttu = TTU_POISON | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
  struct address_space *mapping;
  LIST_HEAD(tokill);
  int ret;
  diff --git a/mm/vmscan.c b/mm/vmscan.c
  index 6d24fd6..5a7d286 100644
  --- a/mm/vmscan.c
  +++ b/mm/vmscan.c
  @@ -1163,7 +1163,7 @@ unsigned long reclaim_clean_pages_from_list(struct 
  zone *zone,
  }
   
  ret = shrink_page_list(clean_pages, zone, sc,
  -   TTU_UNMAP|TTU_IGNORE_ACCESS,
  +   TTU_VMSCAN|TTU_IGNORE_ACCESS,
  dummy1, dummy2, dummy3, dummy4, dummy5, true);
  list_splice(clean_pages, page_list);
  mod_zone_page_state(zone, NR_ISOLATED_FILE, -ret);
  @@ -1518,7 +1518,7 @@ shrink_inactive_list(unsigned long nr_to_scan, struct 
  lruvec *lruvec,
  if (nr_taken == 0)
  return 0;
   
  -   nr_reclaimed = shrink_page_list(page_list, zone, sc, TTU_UNMAP,
  +   nr_reclaimed = shrink_page_list(page_list, zone, sc, TTU_VMSCAN,
  nr_dirty, nr_unqueued_dirty, nr_congested,
  nr_writeback, nr_immediate,
  false);
  -- 
  1.9.0
  
  --
  To unsubscribe, send a message with 'unsubscribe linux-mm' in
  the body to majord...@kvack.org.  For more info on Linux MM,
  see: http://www.linux-mm.org/ .
  Don't email: a href=mailto:d...@kvack.org; em...@kvack.org /a
  
 
 Other than that, looks good.
 
 Reviewed-by: John Hubbard jhubb...@nvidia.com
 
 thanks,
 John H.

--
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/


Re: [PATCH 2/6] mm: differentiate unmap for vmscan from other unmap.

2014-06-29 Thread John Hubbard
On Fri, 27 Jun 2014, Jérôme Glisse wrote:

> From: Jérôme Glisse 
> 
> New code will need to be able to differentiate between a regular unmap and
> an unmap trigger by vmscan in which case we want to be as quick as possible.
> 
> Signed-off-by: Jérôme Glisse 
> ---
>  include/linux/rmap.h | 15 ---
>  mm/memory-failure.c  |  2 +-
>  mm/vmscan.c  |  4 ++--
>  3 files changed, 11 insertions(+), 10 deletions(-)
> 
> diff --git a/include/linux/rmap.h b/include/linux/rmap.h
> index be57450..eddbc07 100644
> --- a/include/linux/rmap.h
> +++ b/include/linux/rmap.h
> @@ -72,13 +72,14 @@ struct anon_vma_chain {
>  };
>  
>  enum ttu_flags {
> - TTU_UNMAP = 1,  /* unmap mode */
> - TTU_MIGRATION = 2,  /* migration mode */
> - TTU_MUNLOCK = 4,/* munlock mode */
> -
> - TTU_IGNORE_MLOCK = (1 << 8),/* ignore mlock */
> - TTU_IGNORE_ACCESS = (1 << 9),   /* don't age */
> - TTU_IGNORE_HWPOISON = (1 << 10),/* corrupted page is recoverable */
> + TTU_VMSCAN = 1, /* unmap for vmscan */
> + TTU_POISON = 2, /* unmap for poison */
> + TTU_MIGRATION = 4,  /* migration mode */
> + TTU_MUNLOCK = 8,/* munlock mode */
> +
> + TTU_IGNORE_MLOCK = (1 << 9),/* ignore mlock */
> + TTU_IGNORE_ACCESS = (1 << 10),  /* don't age */
> + TTU_IGNORE_HWPOISON = (1 << 11),/* corrupted page is recoverable */

Unless there is a deeper purpose that I am overlooking, I think it would 
be better to leave the _MLOCK, _ACCESS, and _HWPOISON at their original 
values. I just can't quite see why they would need to start at bit 9 
instead of bit 8...

>  };
>  
>  #ifdef CONFIG_MMU
> diff --git a/mm/memory-failure.c b/mm/memory-failure.c
> index a7a89eb..ba176c4 100644
> --- a/mm/memory-failure.c
> +++ b/mm/memory-failure.c
> @@ -887,7 +887,7 @@ static int page_action(struct page_state *ps, struct page 
> *p,
>  static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
> int trapno, int flags, struct page **hpagep)
>  {
> - enum ttu_flags ttu = TTU_UNMAP | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
> + enum ttu_flags ttu = TTU_POISON | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
>   struct address_space *mapping;
>   LIST_HEAD(tokill);
>   int ret;
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 6d24fd6..5a7d286 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -1163,7 +1163,7 @@ unsigned long reclaim_clean_pages_from_list(struct zone 
> *zone,
>   }
>  
>   ret = shrink_page_list(_pages, zone, ,
> - TTU_UNMAP|TTU_IGNORE_ACCESS,
> + TTU_VMSCAN|TTU_IGNORE_ACCESS,
>   , , , , , true);
>   list_splice(_pages, page_list);
>   mod_zone_page_state(zone, NR_ISOLATED_FILE, -ret);
> @@ -1518,7 +1518,7 @@ shrink_inactive_list(unsigned long nr_to_scan, struct 
> lruvec *lruvec,
>   if (nr_taken == 0)
>   return 0;
>  
> - nr_reclaimed = shrink_page_list(_list, zone, sc, TTU_UNMAP,
> + nr_reclaimed = shrink_page_list(_list, zone, sc, TTU_VMSCAN,
>   _dirty, _unqueued_dirty, _congested,
>   _writeback, _immediate,
>   false);
> -- 
> 1.9.0
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majord...@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: mailto:"d...@kvack.org;> em...@kvack.org 
> 

Other than that, looks good.

Reviewed-by: John Hubbard 

thanks,
John H.

Re: [PATCH 2/6] mm: differentiate unmap for vmscan from other unmap.

2014-06-29 Thread John Hubbard
On Fri, 27 Jun 2014, Jérôme Glisse wrote:

 From: Jérôme Glisse jgli...@redhat.com
 
 New code will need to be able to differentiate between a regular unmap and
 an unmap trigger by vmscan in which case we want to be as quick as possible.
 
 Signed-off-by: Jérôme Glisse jgli...@redhat.com
 ---
  include/linux/rmap.h | 15 ---
  mm/memory-failure.c  |  2 +-
  mm/vmscan.c  |  4 ++--
  3 files changed, 11 insertions(+), 10 deletions(-)
 
 diff --git a/include/linux/rmap.h b/include/linux/rmap.h
 index be57450..eddbc07 100644
 --- a/include/linux/rmap.h
 +++ b/include/linux/rmap.h
 @@ -72,13 +72,14 @@ struct anon_vma_chain {
  };
  
  enum ttu_flags {
 - TTU_UNMAP = 1,  /* unmap mode */
 - TTU_MIGRATION = 2,  /* migration mode */
 - TTU_MUNLOCK = 4,/* munlock mode */
 -
 - TTU_IGNORE_MLOCK = (1  8),/* ignore mlock */
 - TTU_IGNORE_ACCESS = (1  9),   /* don't age */
 - TTU_IGNORE_HWPOISON = (1  10),/* corrupted page is recoverable */
 + TTU_VMSCAN = 1, /* unmap for vmscan */
 + TTU_POISON = 2, /* unmap for poison */
 + TTU_MIGRATION = 4,  /* migration mode */
 + TTU_MUNLOCK = 8,/* munlock mode */
 +
 + TTU_IGNORE_MLOCK = (1  9),/* ignore mlock */
 + TTU_IGNORE_ACCESS = (1  10),  /* don't age */
 + TTU_IGNORE_HWPOISON = (1  11),/* corrupted page is recoverable */

Unless there is a deeper purpose that I am overlooking, I think it would 
be better to leave the _MLOCK, _ACCESS, and _HWPOISON at their original 
values. I just can't quite see why they would need to start at bit 9 
instead of bit 8...

  };
  
  #ifdef CONFIG_MMU
 diff --git a/mm/memory-failure.c b/mm/memory-failure.c
 index a7a89eb..ba176c4 100644
 --- a/mm/memory-failure.c
 +++ b/mm/memory-failure.c
 @@ -887,7 +887,7 @@ static int page_action(struct page_state *ps, struct page 
 *p,
  static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
 int trapno, int flags, struct page **hpagep)
  {
 - enum ttu_flags ttu = TTU_UNMAP | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
 + enum ttu_flags ttu = TTU_POISON | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
   struct address_space *mapping;
   LIST_HEAD(tokill);
   int ret;
 diff --git a/mm/vmscan.c b/mm/vmscan.c
 index 6d24fd6..5a7d286 100644
 --- a/mm/vmscan.c
 +++ b/mm/vmscan.c
 @@ -1163,7 +1163,7 @@ unsigned long reclaim_clean_pages_from_list(struct zone 
 *zone,
   }
  
   ret = shrink_page_list(clean_pages, zone, sc,
 - TTU_UNMAP|TTU_IGNORE_ACCESS,
 + TTU_VMSCAN|TTU_IGNORE_ACCESS,
   dummy1, dummy2, dummy3, dummy4, dummy5, true);
   list_splice(clean_pages, page_list);
   mod_zone_page_state(zone, NR_ISOLATED_FILE, -ret);
 @@ -1518,7 +1518,7 @@ shrink_inactive_list(unsigned long nr_to_scan, struct 
 lruvec *lruvec,
   if (nr_taken == 0)
   return 0;
  
 - nr_reclaimed = shrink_page_list(page_list, zone, sc, TTU_UNMAP,
 + nr_reclaimed = shrink_page_list(page_list, zone, sc, TTU_VMSCAN,
   nr_dirty, nr_unqueued_dirty, nr_congested,
   nr_writeback, nr_immediate,
   false);
 -- 
 1.9.0
 
 --
 To unsubscribe, send a message with 'unsubscribe linux-mm' in
 the body to majord...@kvack.org.  For more info on Linux MM,
 see: http://www.linux-mm.org/ .
 Don't email: a href=mailto:d...@kvack.org; em...@kvack.org /a
 

Other than that, looks good.

Reviewed-by: John Hubbard jhubb...@nvidia.com

thanks,
John H.

[PATCH 2/6] mm: differentiate unmap for vmscan from other unmap.

2014-06-27 Thread Jérôme Glisse
From: Jérôme Glisse 

New code will need to be able to differentiate between a regular unmap and
an unmap trigger by vmscan in which case we want to be as quick as possible.

Signed-off-by: Jérôme Glisse 
---
 include/linux/rmap.h | 15 ---
 mm/memory-failure.c  |  2 +-
 mm/vmscan.c  |  4 ++--
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/include/linux/rmap.h b/include/linux/rmap.h
index be57450..eddbc07 100644
--- a/include/linux/rmap.h
+++ b/include/linux/rmap.h
@@ -72,13 +72,14 @@ struct anon_vma_chain {
 };
 
 enum ttu_flags {
-   TTU_UNMAP = 1,  /* unmap mode */
-   TTU_MIGRATION = 2,  /* migration mode */
-   TTU_MUNLOCK = 4,/* munlock mode */
-
-   TTU_IGNORE_MLOCK = (1 << 8),/* ignore mlock */
-   TTU_IGNORE_ACCESS = (1 << 9),   /* don't age */
-   TTU_IGNORE_HWPOISON = (1 << 10),/* corrupted page is recoverable */
+   TTU_VMSCAN = 1, /* unmap for vmscan */
+   TTU_POISON = 2, /* unmap for poison */
+   TTU_MIGRATION = 4,  /* migration mode */
+   TTU_MUNLOCK = 8,/* munlock mode */
+
+   TTU_IGNORE_MLOCK = (1 << 9),/* ignore mlock */
+   TTU_IGNORE_ACCESS = (1 << 10),  /* don't age */
+   TTU_IGNORE_HWPOISON = (1 << 11),/* corrupted page is recoverable */
 };
 
 #ifdef CONFIG_MMU
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index a7a89eb..ba176c4 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -887,7 +887,7 @@ static int page_action(struct page_state *ps, struct page 
*p,
 static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
  int trapno, int flags, struct page **hpagep)
 {
-   enum ttu_flags ttu = TTU_UNMAP | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
+   enum ttu_flags ttu = TTU_POISON | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
struct address_space *mapping;
LIST_HEAD(tokill);
int ret;
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 6d24fd6..5a7d286 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1163,7 +1163,7 @@ unsigned long reclaim_clean_pages_from_list(struct zone 
*zone,
}
 
ret = shrink_page_list(_pages, zone, ,
-   TTU_UNMAP|TTU_IGNORE_ACCESS,
+   TTU_VMSCAN|TTU_IGNORE_ACCESS,
, , , , , true);
list_splice(_pages, page_list);
mod_zone_page_state(zone, NR_ISOLATED_FILE, -ret);
@@ -1518,7 +1518,7 @@ shrink_inactive_list(unsigned long nr_to_scan, struct 
lruvec *lruvec,
if (nr_taken == 0)
return 0;
 
-   nr_reclaimed = shrink_page_list(_list, zone, sc, TTU_UNMAP,
+   nr_reclaimed = shrink_page_list(_list, zone, sc, TTU_VMSCAN,
_dirty, _unqueued_dirty, _congested,
_writeback, _immediate,
false);
-- 
1.9.0

--
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/


[PATCH 2/6] mm: differentiate unmap for vmscan from other unmap.

2014-06-27 Thread Jérôme Glisse
From: Jérôme Glisse jgli...@redhat.com

New code will need to be able to differentiate between a regular unmap and
an unmap trigger by vmscan in which case we want to be as quick as possible.

Signed-off-by: Jérôme Glisse jgli...@redhat.com
---
 include/linux/rmap.h | 15 ---
 mm/memory-failure.c  |  2 +-
 mm/vmscan.c  |  4 ++--
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/include/linux/rmap.h b/include/linux/rmap.h
index be57450..eddbc07 100644
--- a/include/linux/rmap.h
+++ b/include/linux/rmap.h
@@ -72,13 +72,14 @@ struct anon_vma_chain {
 };
 
 enum ttu_flags {
-   TTU_UNMAP = 1,  /* unmap mode */
-   TTU_MIGRATION = 2,  /* migration mode */
-   TTU_MUNLOCK = 4,/* munlock mode */
-
-   TTU_IGNORE_MLOCK = (1  8),/* ignore mlock */
-   TTU_IGNORE_ACCESS = (1  9),   /* don't age */
-   TTU_IGNORE_HWPOISON = (1  10),/* corrupted page is recoverable */
+   TTU_VMSCAN = 1, /* unmap for vmscan */
+   TTU_POISON = 2, /* unmap for poison */
+   TTU_MIGRATION = 4,  /* migration mode */
+   TTU_MUNLOCK = 8,/* munlock mode */
+
+   TTU_IGNORE_MLOCK = (1  9),/* ignore mlock */
+   TTU_IGNORE_ACCESS = (1  10),  /* don't age */
+   TTU_IGNORE_HWPOISON = (1  11),/* corrupted page is recoverable */
 };
 
 #ifdef CONFIG_MMU
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index a7a89eb..ba176c4 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -887,7 +887,7 @@ static int page_action(struct page_state *ps, struct page 
*p,
 static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
  int trapno, int flags, struct page **hpagep)
 {
-   enum ttu_flags ttu = TTU_UNMAP | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
+   enum ttu_flags ttu = TTU_POISON | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
struct address_space *mapping;
LIST_HEAD(tokill);
int ret;
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 6d24fd6..5a7d286 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1163,7 +1163,7 @@ unsigned long reclaim_clean_pages_from_list(struct zone 
*zone,
}
 
ret = shrink_page_list(clean_pages, zone, sc,
-   TTU_UNMAP|TTU_IGNORE_ACCESS,
+   TTU_VMSCAN|TTU_IGNORE_ACCESS,
dummy1, dummy2, dummy3, dummy4, dummy5, true);
list_splice(clean_pages, page_list);
mod_zone_page_state(zone, NR_ISOLATED_FILE, -ret);
@@ -1518,7 +1518,7 @@ shrink_inactive_list(unsigned long nr_to_scan, struct 
lruvec *lruvec,
if (nr_taken == 0)
return 0;
 
-   nr_reclaimed = shrink_page_list(page_list, zone, sc, TTU_UNMAP,
+   nr_reclaimed = shrink_page_list(page_list, zone, sc, TTU_VMSCAN,
nr_dirty, nr_unqueued_dirty, nr_congested,
nr_writeback, nr_immediate,
false);
-- 
1.9.0

--
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/