diff for duplicates of <20090517015806.GA6809@localhost> diff --git a/a/1.txt b/N1/1.txt index 32b0c05..3c97840 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -11,75 +11,75 @@ On Sun, May 17, 2009 at 09:36:44AM +0800, Minchan Kim wrote: > > CC: Peter Zijlstra <peterz@infradead.org> > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com> > > --- -> > include/linux/rmap.h | 5 +++-- -> > mm/rmap.c | 37 ++++++++++++++++++++++++++----------- -> > mm/vmscan.c | 7 +++++-- -> > 3 files changed, 34 insertions(+), 15 deletions(-) +> > A include/linux/rmap.h | A A 5 +++-- +> > A mm/rmap.c A A A A A A | A 37 ++++++++++++++++++++++++++----------- +> > A mm/vmscan.c A A A A A | A A 7 +++++-- +> > A 3 files changed, 34 insertions(+), 15 deletions(-) > > > > --- linux.orig/include/linux/rmap.h > > +++ linux/include/linux/rmap.h > > @@ -83,7 +83,8 @@ static inline void page_dup_rmap(struct -> > /* -> > * Called from mm/vmscan.c to handle paging out -> > */ +> > A /* +> > A * Called from mm/vmscan.c to handle paging out +> > A */ > > -int page_referenced(struct page *, int is_locked, struct mem_cgroup *cnt); > > +int page_referenced(struct page *, int is_locked, -> > + struct mem_cgroup *cnt, unsigned long *vm_flags); -> > int try_to_unmap(struct page *, int ignore_refs); +> > + A A A A A A A A A A A struct mem_cgroup *cnt, unsigned long *vm_flags); +> > A int try_to_unmap(struct page *, int ignore_refs); > > -> > /* +> > A /* > > @@ -128,7 +129,7 @@ int page_wrprotect(struct page *page, in -> > #define anon_vma_prepare(vma) (0) -> > #define anon_vma_link(vma) do {} while (0) +> > A #define anon_vma_prepare(vma) A (0) +> > A #define anon_vma_link(vma) A A do {} while (0) > > > > -#define page_referenced(page,l,cnt) TestClearPageReferenced(page) > > +#define page_referenced(page, locked, cnt, flags) TestClearPageReferenced(page) -> > #define try_to_unmap(page, refs) SWAP_FAIL +> > A #define try_to_unmap(page, refs) SWAP_FAIL > > -> > static inline int page_mkclean(struct page *page) +> > A static inline int page_mkclean(struct page *page) > > --- linux.orig/mm/rmap.c > > +++ linux/mm/rmap.c > > @@ -333,7 +333,9 @@ static int page_mapped_in_vma(struct pag -> > * repeatedly from either page_referenced_anon or page_referenced_file. -> > */ -> > static int page_referenced_one(struct page *page, -> > - struct vm_area_struct *vma, unsigned int *mapcount) -> > + struct vm_area_struct *vma, -> > + unsigned int *mapcount, -> > + unsigned long *vm_flags) -> > { -> > struct mm_struct *mm = vma->vm_mm; -> > unsigned long address; +> > A * repeatedly from either page_referenced_anon or page_referenced_file. +> > A */ +> > A static int page_referenced_one(struct page *page, +> > - A A A struct vm_area_struct *vma, unsigned int *mapcount) +> > + A A A A A A A A A A A A A A A struct vm_area_struct *vma, +> > + A A A A A A A A A A A A A A A unsigned int *mapcount, +> > + A A A A A A A A A A A A A A A unsigned long *vm_flags) +> > A { +> > A A A A struct mm_struct *mm = vma->vm_mm; +> > A A A A unsigned long address; > > @@ -381,11 +383,14 @@ out_unmap: -> > (*mapcount)--; -> > pte_unmap_unlock(pte, ptl); -> > out: -> > + if (referenced) -> > + *vm_flags |= vma->vm_flags; -> > return referenced; -> > } +> > A A A A (*mapcount)--; +> > A A A A pte_unmap_unlock(pte, ptl); +> > A out: +> > + A A A if (referenced) +> > + A A A A A A A *vm_flags |= vma->vm_flags; +> > A A A A return referenced; +> > A } > > -> > static int page_referenced_anon(struct page *page, -> > - struct mem_cgroup *mem_cont) -> > + struct mem_cgroup *mem_cont, -> > + unsigned long *vm_flags) -> > { -> > unsigned int mapcount; -> > struct anon_vma *anon_vma; +> > A static int page_referenced_anon(struct page *page, +> > - A A A A A A A A A A A A A A A struct mem_cgroup *mem_cont) +> > + A A A A A A A A A A A A A A A struct mem_cgroup *mem_cont, +> > + A A A A A A A A A A A A A A A unsigned long *vm_flags) +> > A { +> > A A A A unsigned int mapcount; +> > A A A A struct anon_vma *anon_vma; > > @@ -405,7 +410,8 @@ static int page_referenced_anon(struct p -> > */ -> > if (mem_cont && !mm_match_cgroup(vma->vm_mm, mem_cont)) -> > continue; -> > - referenced += page_referenced_one(page, vma, &mapcount); -> > + referenced += page_referenced_one(page, vma, -> > + &mapcount, vm_flags); -> > if (!mapcount) -> > break; -> > } +> > A A A A A A A A */ +> > A A A A A A A A if (mem_cont && !mm_match_cgroup(vma->vm_mm, mem_cont)) +> > A A A A A A A A A A A A continue; +> > - A A A A A A A referenced += page_referenced_one(page, vma, &mapcount); +> > + A A A A A A A referenced += page_referenced_one(page, vma, +> > + A A A A A A A A A A A A A A A A A A A A A A A A &mapcount, vm_flags); +> > A A A A A A A A if (!mapcount) +> > A A A A A A A A A A A A break; +> > A A A A } > > @@ -418,6 +424,7 @@ static int page_referenced_anon(struct p -> > * page_referenced_file - referenced check for object-based rmap -> > * @page: the page we're checking references on. -> > * @mem_cont: target memory controller +> > A * page_referenced_file - referenced check for object-based rmap +> > A * @page: the page we're checking references on. +> > A * @mem_cont: target memory controller > > + * @vm_flags: collect encountered vma->vm_flags > > I missed this. @@ -93,3 +93,9 @@ Good catch! I'll resubmit the whole patchset :) Thanks, Fengguang + +-- +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: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> diff --git a/a/content_digest b/N1/content_digest index 121980a..1d1392e 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -31,75 +31,75 @@ "> > CC: Peter Zijlstra <peterz@infradead.org>\n" "> > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>\n" "> > ---\n" - "> > \302\240include/linux/rmap.h | \302\240 \302\2405 +++--\n" - "> > \302\240mm/rmap.c \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 37 ++++++++++++++++++++++++++-----------\n" - "> > \302\240mm/vmscan.c \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 \302\2407 +++++--\n" - "> > \302\2403 files changed, 34 insertions(+), 15 deletions(-)\n" + "> > A include/linux/rmap.h | A A 5 +++--\n" + "> > A mm/rmap.c A A A A A A | A 37 ++++++++++++++++++++++++++-----------\n" + "> > A mm/vmscan.c A A A A A | A A 7 +++++--\n" + "> > A 3 files changed, 34 insertions(+), 15 deletions(-)\n" "> >\n" "> > --- linux.orig/include/linux/rmap.h\n" "> > +++ linux/include/linux/rmap.h\n" "> > @@ -83,7 +83,8 @@ static inline void page_dup_rmap(struct\n" - "> > \302\240/*\n" - "> > \302\240* Called from mm/vmscan.c to handle paging out\n" - "> > \302\240*/\n" + "> > A /*\n" + "> > A * Called from mm/vmscan.c to handle paging out\n" + "> > A */\n" "> > -int page_referenced(struct page *, int is_locked, struct mem_cgroup *cnt);\n" "> > +int page_referenced(struct page *, int is_locked,\n" - "> > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 struct mem_cgroup *cnt, unsigned long *vm_flags);\n" - "> > \302\240int try_to_unmap(struct page *, int ignore_refs);\n" + "> > + A A A A A A A A A A A struct mem_cgroup *cnt, unsigned long *vm_flags);\n" + "> > A int try_to_unmap(struct page *, int ignore_refs);\n" "> >\n" - "> > \302\240/*\n" + "> > A /*\n" "> > @@ -128,7 +129,7 @@ int page_wrprotect(struct page *page, in\n" - "> > \302\240#define anon_vma_prepare(vma) \302\240(0)\n" - "> > \302\240#define anon_vma_link(vma) \302\240 \302\240 do {} while (0)\n" + "> > A #define anon_vma_prepare(vma) A (0)\n" + "> > A #define anon_vma_link(vma) A A do {} while (0)\n" "> >\n" "> > -#define page_referenced(page,l,cnt) TestClearPageReferenced(page)\n" "> > +#define page_referenced(page, locked, cnt, flags) TestClearPageReferenced(page)\n" - "> > \302\240#define try_to_unmap(page, refs) SWAP_FAIL\n" + "> > A #define try_to_unmap(page, refs) SWAP_FAIL\n" "> >\n" - "> > \302\240static inline int page_mkclean(struct page *page)\n" + "> > A static inline int page_mkclean(struct page *page)\n" "> > --- linux.orig/mm/rmap.c\n" "> > +++ linux/mm/rmap.c\n" "> > @@ -333,7 +333,9 @@ static int page_mapped_in_vma(struct pag\n" - "> > \302\240* repeatedly from either page_referenced_anon or page_referenced_file.\n" - "> > \302\240*/\n" - "> > \302\240static int page_referenced_one(struct page *page,\n" - "> > - \302\240 \302\240 \302\240 struct vm_area_struct *vma, unsigned int *mapcount)\n" - "> > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240struct vm_area_struct *vma,\n" - "> > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240unsigned int *mapcount,\n" - "> > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240unsigned long *vm_flags)\n" - "> > \302\240{\n" - "> > \302\240 \302\240 \302\240 \302\240struct mm_struct *mm = vma->vm_mm;\n" - "> > \302\240 \302\240 \302\240 \302\240unsigned long address;\n" + "> > A * repeatedly from either page_referenced_anon or page_referenced_file.\n" + "> > A */\n" + "> > A static int page_referenced_one(struct page *page,\n" + "> > - A A A struct vm_area_struct *vma, unsigned int *mapcount)\n" + "> > + A A A A A A A A A A A A A A A struct vm_area_struct *vma,\n" + "> > + A A A A A A A A A A A A A A A unsigned int *mapcount,\n" + "> > + A A A A A A A A A A A A A A A unsigned long *vm_flags)\n" + "> > A {\n" + "> > A A A A struct mm_struct *mm = vma->vm_mm;\n" + "> > A A A A unsigned long address;\n" "> > @@ -381,11 +383,14 @@ out_unmap:\n" - "> > \302\240 \302\240 \302\240 \302\240(*mapcount)--;\n" - "> > \302\240 \302\240 \302\240 \302\240pte_unmap_unlock(pte, ptl);\n" - "> > \302\240out:\n" - "> > + \302\240 \302\240 \302\240 if (referenced)\n" - "> > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 *vm_flags |= vma->vm_flags;\n" - "> > \302\240 \302\240 \302\240 \302\240return referenced;\n" - "> > \302\240}\n" + "> > A A A A (*mapcount)--;\n" + "> > A A A A pte_unmap_unlock(pte, ptl);\n" + "> > A out:\n" + "> > + A A A if (referenced)\n" + "> > + A A A A A A A *vm_flags |= vma->vm_flags;\n" + "> > A A A A return referenced;\n" + "> > A }\n" "> >\n" - "> > \302\240static int page_referenced_anon(struct page *page,\n" - "> > - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 struct mem_cgroup *mem_cont)\n" - "> > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 struct mem_cgroup *mem_cont,\n" - "> > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 unsigned long *vm_flags)\n" - "> > \302\240{\n" - "> > \302\240 \302\240 \302\240 \302\240unsigned int mapcount;\n" - "> > \302\240 \302\240 \302\240 \302\240struct anon_vma *anon_vma;\n" + "> > A static int page_referenced_anon(struct page *page,\n" + "> > - A A A A A A A A A A A A A A A struct mem_cgroup *mem_cont)\n" + "> > + A A A A A A A A A A A A A A A struct mem_cgroup *mem_cont,\n" + "> > + A A A A A A A A A A A A A A A unsigned long *vm_flags)\n" + "> > A {\n" + "> > A A A A unsigned int mapcount;\n" + "> > A A A A struct anon_vma *anon_vma;\n" "> > @@ -405,7 +410,8 @@ static int page_referenced_anon(struct p\n" - "> > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 */\n" - "> > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240if (mem_cont && !mm_match_cgroup(vma->vm_mm, mem_cont))\n" - "> > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240continue;\n" - "> > - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 referenced += page_referenced_one(page, vma, &mapcount);\n" - "> > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 referenced += page_referenced_one(page, vma,\n" - "> > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 &mapcount, vm_flags);\n" - "> > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240if (!mapcount)\n" - "> > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240break;\n" - "> > \302\240 \302\240 \302\240 \302\240}\n" + "> > A A A A A A A A */\n" + "> > A A A A A A A A if (mem_cont && !mm_match_cgroup(vma->vm_mm, mem_cont))\n" + "> > A A A A A A A A A A A A continue;\n" + "> > - A A A A A A A referenced += page_referenced_one(page, vma, &mapcount);\n" + "> > + A A A A A A A referenced += page_referenced_one(page, vma,\n" + "> > + A A A A A A A A A A A A A A A A A A A A A A A A &mapcount, vm_flags);\n" + "> > A A A A A A A A if (!mapcount)\n" + "> > A A A A A A A A A A A A break;\n" + "> > A A A A }\n" "> > @@ -418,6 +424,7 @@ static int page_referenced_anon(struct p\n" - "> > \302\240* page_referenced_file - referenced check for object-based rmap\n" - "> > \302\240* @page: the page we're checking references on.\n" - "> > \302\240* @mem_cont: target memory controller\n" + "> > A * page_referenced_file - referenced check for object-based rmap\n" + "> > A * @page: the page we're checking references on.\n" + "> > A * @mem_cont: target memory controller\n" "> > + * @vm_flags: collect encountered vma->vm_flags\n" "> \n" "> I missed this.\n" @@ -112,6 +112,12 @@ " forgot it over night. I should really put some notepad around me. ]\n" "\n" "Thanks,\n" - Fengguang + "Fengguang\n" + "\n" + "--\n" + "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n" + "the body to majordomo@kvack.org. For more info on Linux MM,\n" + "see: http://www.linux-mm.org/ .\n" + "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>" -8f85db9f645056c1ed33884ccbf0686556d6e3520c66a14d132744df2b97b299 +ccece07f950aa1fb9f18c507ca9a279c51cc8a3f19a98fcc521b2982a5fa30b8
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.