Re: [PATCH -v3 08/10] mm, THP: Add can_split_huge_page()
From: Huang\, Ying
Date: Thu Sep 08 2016 - 13:03:00 EST
Hi, Kirill,
Thanks for your comments!
"Kirill A. Shutemov" <kirill@xxxxxxxxxxxxx> writes:
> On Wed, Sep 07, 2016 at 09:46:07AM -0700, Huang, Ying wrote:
>> From: Huang Ying <ying.huang@xxxxxxxxx>
>>
>> Separates checking whether we can split the huge page from
>> split_huge_page_to_list() into a function. This will help to check that
>> before splitting the THP (Transparent Huge Page) really.
>>
>> This will be used for delaying splitting THP during swapping out. Where
>> for a THP, we will allocate a swap cluster, add the THP into the swap
>> cache, then split the THP. To avoid the unnecessary operations for the
>> un-splittable THP, we will check that firstly.
>>
>> There is no functionality change in this patch.
>>
>> Cc: Andrea Arcangeli <aarcange@xxxxxxxxxx>
>> Cc: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
>> Cc: Ebru Akagunduz <ebru.akagunduz@xxxxxxxxx>
>> Signed-off-by: "Huang, Ying" <ying.huang@xxxxxxxxx>
>> ---
>> include/linux/huge_mm.h | 6 ++++++
>> mm/huge_memory.c | 13 ++++++++++++-
>> 2 files changed, 18 insertions(+), 1 deletion(-)
>>
>> diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
>> index 9b9f65d..a0073e7 100644
>> --- a/include/linux/huge_mm.h
>> +++ b/include/linux/huge_mm.h
>> @@ -94,6 +94,7 @@ extern unsigned long thp_get_unmapped_area(struct file *filp,
>> extern void prep_transhuge_page(struct page *page);
>> extern void free_transhuge_page(struct page *page);
>>
>> +bool can_split_huge_page(struct page *page);
>> int split_huge_page_to_list(struct page *page, struct list_head *list);
>> static inline int split_huge_page(struct page *page)
>> {
>> @@ -176,6 +177,11 @@ static inline void prep_transhuge_page(struct page *page) {}
>>
>> #define thp_get_unmapped_area NULL
>>
>> +static inline bool
>> +can_split_huge_page(struct page *page)
>> +{
>
> BUILD_BUG() should be appropriate here.
Yes. Will add it.
>> + return false;
>> +}
Best Regards,
Huang, Ying