Re: [PATCH v20 04/20] mm/thp: use head for head page in lru_add_page_tail

2020-11-02 Thread Alex Shi



在 2020/11/3 上午12:03, Matthew Wilcox 写道:
> On Fri, Oct 30, 2020 at 10:46:54AM +0800, Alex Shi wrote:
>> -static void lru_add_page_tail(struct page *page, struct page *page_tail,
>> +static void lru_add_page_tail(struct page *head, struct page *tail,
>>  struct lruvec *lruvec, struct list_head *list)
>>  {
>> -VM_BUG_ON_PAGE(!PageHead(page), page);
>> -VM_BUG_ON_PAGE(PageCompound(page_tail), page);
>> -VM_BUG_ON_PAGE(PageLRU(page_tail), page);
>> +VM_BUG_ON_PAGE(!PageHead(head), head);
>> +VM_BUG_ON_PAGE(PageCompound(tail), head);
>> +VM_BUG_ON_PAGE(PageLRU(tail), head);
> 
> These last two should surely have been
>   VM_BUG_ON_PAGE(PageCompound(tail), tail);
>   VM_BUG_ON_PAGE(PageLRU(tail), tail);
> 
> Also, what do people think about converting these to VM_BUG_ON_PGFLAGS?

Hi Matthew,

Thanks for reminder! Looks these changes worth for another patch.

> 
> Either way:
> 
> Reviewed-by: Matthew Wilcox (Oracle) 
> 


I will take this option this time. :)

Thanks!
Alex


Re: [PATCH v20 04/20] mm/thp: use head for head page in lru_add_page_tail

2020-11-02 Thread Matthew Wilcox
On Fri, Oct 30, 2020 at 10:46:54AM +0800, Alex Shi wrote:
> -static void lru_add_page_tail(struct page *page, struct page *page_tail,
> +static void lru_add_page_tail(struct page *head, struct page *tail,
>   struct lruvec *lruvec, struct list_head *list)
>  {
> - VM_BUG_ON_PAGE(!PageHead(page), page);
> - VM_BUG_ON_PAGE(PageCompound(page_tail), page);
> - VM_BUG_ON_PAGE(PageLRU(page_tail), page);
> + VM_BUG_ON_PAGE(!PageHead(head), head);
> + VM_BUG_ON_PAGE(PageCompound(tail), head);
> + VM_BUG_ON_PAGE(PageLRU(tail), head);

These last two should surely have been
VM_BUG_ON_PAGE(PageCompound(tail), tail);
VM_BUG_ON_PAGE(PageLRU(tail), tail);

Also, what do people think about converting these to VM_BUG_ON_PGFLAGS?

Either way:

Reviewed-by: Matthew Wilcox (Oracle) 


Re: [PATCH v20 04/20] mm/thp: use head for head page in lru_add_page_tail

2020-10-30 Thread Alex Shi



在 2020/10/30 下午9:52, Johannes Weiner 写道:
> 
>> From a9ee63a213f40eb4d5a69b52fbb348ff9cd7cf6c Mon Sep 17 00:00:00 2001
>> From: Alex Shi 
>> Date: Tue, 26 May 2020 16:49:22 +0800
>> Subject: [PATCH v21 04/20] mm/thp: use head for head page in 
>> lru_add_page_tail
>>
>> Since the first parameter is only used by head page, it's better to make
>> it explicit.
>>
>> Signed-off-by: Alex Shi 
>> Reviewed-by: Kirill A. Shutemov 
>> Acked-by: Hugh Dickins 
>> Cc: Andrew Morton 
>> Cc: Johannes Weiner 
>> Cc: Matthew Wilcox 
>> Cc: Hugh Dickins 
>> Cc: linux...@kvack.org
>> Cc: linux-kernel@vger.kernel.org
> Acked-by: Johannes Weiner 


Thanks a lot!
Alex


Re: [PATCH v20 04/20] mm/thp: use head for head page in lru_add_page_tail

2020-10-30 Thread Johannes Weiner
On Fri, Oct 30, 2020 at 10:46:54AM +0800, Alex Shi wrote:
> 在 2020/10/29 下午9:50, Johannes Weiner 写道:
> > It may be better to pick either
> > head and tail
> 
> Hi Johannes,
> 
> Thanks for comments!
> 
> Right, Consider functions in this file are using head/tail more as parameters
> I will change to use head/tail too. And then, the 04th, 05th, and 18th patch 
> will be changed accordingly.

That's great, thank you!

> From a9ee63a213f40eb4d5a69b52fbb348ff9cd7cf6c Mon Sep 17 00:00:00 2001
> From: Alex Shi 
> Date: Tue, 26 May 2020 16:49:22 +0800
> Subject: [PATCH v21 04/20] mm/thp: use head for head page in lru_add_page_tail
> 
> Since the first parameter is only used by head page, it's better to make
> it explicit.
> 
> Signed-off-by: Alex Shi 
> Reviewed-by: Kirill A. Shutemov 
> Acked-by: Hugh Dickins 
> Cc: Andrew Morton 
> Cc: Johannes Weiner 
> Cc: Matthew Wilcox 
> Cc: Hugh Dickins 
> Cc: linux...@kvack.org
> Cc: linux-kernel@vger.kernel.org

Acked-by: Johannes Weiner 


Re: [PATCH v20 04/20] mm/thp: use head for head page in lru_add_page_tail

2020-10-29 Thread Alex Shi



在 2020/10/29 下午9:50, Johannes Weiner 写道:
> On Thu, Oct 29, 2020 at 06:44:49PM +0800, Alex Shi wrote:
>> Since the first parameter is only used by head page, it's better to make
>> it explicit.
>>
>> Signed-off-by: Alex Shi 
>> Reviewed-by: Kirill A. Shutemov 
>> Acked-by: Hugh Dickins 
>> Cc: Andrew Morton 
>> Cc: Johannes Weiner 
>> Cc: Matthew Wilcox 
>> Cc: Hugh Dickins 
>> Cc: linux...@kvack.org
>> Cc: linux-kernel@vger.kernel.org
>> ---
>>  mm/huge_memory.c | 12 ++--
>>  1 file changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
>> index 038db815ebba..93c0b73eb8c6 100644
>> --- a/mm/huge_memory.c
>> +++ b/mm/huge_memory.c
>> @@ -2346,19 +2346,19 @@ static void remap_page(struct page *page, unsigned 
>> int nr)
>>  }
>>  }
>>  
>> -static void lru_add_page_tail(struct page *page, struct page *page_tail,
>> +static void lru_add_page_tail(struct page *head, struct page *page_tail,
> 
> It may be better to pick either
>   head and tail

Hi Johannes,

Thanks for comments!

Right, Consider functions in this file are using head/tail more as parameters
I will change to use head/tail too. And then, the 04th, 05th, and 18th patch 
will be changed accordingly.

Thanks
Alex

> or
>   page_head and page_tail
> 
> ?
> 

>From a9ee63a213f40eb4d5a69b52fbb348ff9cd7cf6c Mon Sep 17 00:00:00 2001
From: Alex Shi 
Date: Tue, 26 May 2020 16:49:22 +0800
Subject: [PATCH v21 04/20] mm/thp: use head for head page in lru_add_page_tail

Since the first parameter is only used by head page, it's better to make
it explicit.

Signed-off-by: Alex Shi 
Reviewed-by: Kirill A. Shutemov 
Acked-by: Hugh Dickins 
Cc: Andrew Morton 
Cc: Johannes Weiner 
Cc: Matthew Wilcox 
Cc: Hugh Dickins 
Cc: linux...@kvack.org
Cc: linux-kernel@vger.kernel.org
---
 mm/huge_memory.c | 23 +++
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 038db815ebba..32a4bf5b80c8 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -2346,33 +2346,32 @@ static void remap_page(struct page *page, unsigned int 
nr)
}
 }
 
-static void lru_add_page_tail(struct page *page, struct page *page_tail,
+static void lru_add_page_tail(struct page *head, struct page *tail,
struct lruvec *lruvec, struct list_head *list)
 {
-   VM_BUG_ON_PAGE(!PageHead(page), page);
-   VM_BUG_ON_PAGE(PageCompound(page_tail), page);
-   VM_BUG_ON_PAGE(PageLRU(page_tail), page);
+   VM_BUG_ON_PAGE(!PageHead(head), head);
+   VM_BUG_ON_PAGE(PageCompound(tail), head);
+   VM_BUG_ON_PAGE(PageLRU(tail), head);
lockdep_assert_held(&lruvec_pgdat(lruvec)->lru_lock);
 
if (!list)
-   SetPageLRU(page_tail);
+   SetPageLRU(tail);
 
-   if (likely(PageLRU(page)))
-   list_add_tail(&page_tail->lru, &page->lru);
+   if (likely(PageLRU(head)))
+   list_add_tail(&tail->lru, &head->lru);
else if (list) {
/* page reclaim is reclaiming a huge page */
-   get_page(page_tail);
-   list_add_tail(&page_tail->lru, list);
+   get_page(tail);
+   list_add_tail(&tail->lru, list);
} else {
/*
 * Head page has not yet been counted, as an hpage,
 * so we must account for each subpage individually.
 *
-* Put page_tail on the list at the correct position
+* Put tail on the list at the correct position
 * so they all end up in order.
 */
-   add_page_to_lru_list_tail(page_tail, lruvec,
- page_lru(page_tail));
+   add_page_to_lru_list_tail(tail, lruvec, page_lru(tail));
}
 }
 
-- 
1.8.3.1



Re: [PATCH v20 04/20] mm/thp: use head for head page in lru_add_page_tail

2020-10-29 Thread Johannes Weiner
On Thu, Oct 29, 2020 at 06:44:49PM +0800, Alex Shi wrote:
> Since the first parameter is only used by head page, it's better to make
> it explicit.
> 
> Signed-off-by: Alex Shi 
> Reviewed-by: Kirill A. Shutemov 
> Acked-by: Hugh Dickins 
> Cc: Andrew Morton 
> Cc: Johannes Weiner 
> Cc: Matthew Wilcox 
> Cc: Hugh Dickins 
> Cc: linux...@kvack.org
> Cc: linux-kernel@vger.kernel.org
> ---
>  mm/huge_memory.c | 12 ++--
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index 038db815ebba..93c0b73eb8c6 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -2346,19 +2346,19 @@ static void remap_page(struct page *page, unsigned 
> int nr)
>   }
>  }
>  
> -static void lru_add_page_tail(struct page *page, struct page *page_tail,
> +static void lru_add_page_tail(struct page *head, struct page *page_tail,

It may be better to pick either
head and tail
or
page_head and page_tail

?