Re: + mm-compaction-allow-blockpfn-outside-of-pageblock-for-high-order-buddy-page.p atch added to mm-unstable branch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Andrew, sorry for bother. As Baolin menthioned in [1], no real issue will be triggered
after change in commit 9fcd6d2e052ee ("mm, compaction: skip compound pages by order in free
scanner"), this patch is not needed indeed. But other patches seems fine, is it OK for you
to drop this one or should I send a v2 series with this dropped.
Thanks!

[1] https://lore.kernel.org/all/f77676a5-e30b-d49d-54db-b85f1ad0f65b@xxxxxxxxxxxxxxxxx/

on 8/2/2023 3:13 AM, Andrew Morton wrote:
> 
> The patch titled
>      Subject: mm/compaction: allow blockpfn outside of pageblock for high order buddy page
> has been added to the -mm mm-unstable branch.  Its filename is
>      mm-compaction-allow-blockpfn-outside-of-pageblock-for-high-order-buddy-page.patch
> 
> This patch will shortly appear at
>      https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-compaction-allow-blockpfn-outside-of-pageblock-for-high-order-buddy-page.patch
> 
> This patch will later appear in the mm-unstable branch at
>     git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
> 
> Before you just go and hit "reply", please:
>    a) Consider who else should be cc'ed
>    b) Prefer to cc a suitable mailing list as well
>    c) Ideally: find the original patch on the mailing list and do a
>       reply-to-all to that, adding suitable additional cc's
> 
> *** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
> 
> The -mm tree is included into linux-next via the mm-everything
> branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
> and is updated there every 2-3 working days
> 
> ------------------------------------------------------
> From: Kemeng Shi <shikemeng@xxxxxxxxxxxxxxx>
> Subject: mm/compaction: allow blockpfn outside of pageblock for high order buddy page
> Date: Sun, 30 Jul 2023 01:43:50 +0800
> 
> Patch series "Fixes and cleanups to compaction".
> 
> This series contains random fixes and cleanups to free page isolation in
> compaction.  This is based on another compact series[1].  More details can
> be found in respective patches.
> 
> 
> This patch (of 5):
> 
> Commit 9fcd6d2e052ee ("mm, compaction: skip compound pages by order in
> free scanner") skiped compound pages to save iterations and limit blockpfn
> to reach outside of page block in case of bogus compound_order.  While
> this also limit pfnblock outside page block in case a buddy page with
> order higher than page block is found.  After this,
> isolate_freepages_range will fail unexpectedly as it will fail to isolate
> the page block which was isolated successfully by high order buddy page in
> previous page block and abort the free page isolation.
> 
> Fix this by allow blockpfn outside of pageblock in case of high order
> buddy page.
> 
> Link: https://lkml.kernel.org/r/20230729174354.2239980-1-shikemeng@xxxxxxxxxxxxxxx
> Link: https://lkml.kernel.org/r/20230729174354.2239980-2-shikemeng@xxxxxxxxxxxxxxx
> Fixes: 9fcd6d2e052ee ("mm, compaction: skip compound pages by order in free scanner")
> Signed-off-by: Kemeng Shi <shikemeng@xxxxxxxxxxxxxxx>
> Cc: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
> Cc: David Hildenbrand <david@xxxxxxxxxx>
> Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx>
> Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx>
> Cc: Kemeng Shi <shikemeng@xxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> ---
> 
>  mm/compaction.c |    8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> --- a/mm/compaction.c~mm-compaction-allow-blockpfn-outside-of-pageblock-for-high-order-buddy-page
> +++ a/mm/compaction.c
> @@ -678,8 +678,10 @@ isolate_fail:
>  	/*
>  	 * There is a tiny chance that we have read bogus compound_order(),
>  	 * so be careful to not go outside of the pageblock.
> +	 * Allow blockpfn outside pageblock in normal case that we isolate
> +	 * buddy page with order more than pageblock order.
>  	 */
> -	if (unlikely(blockpfn > end_pfn))
> +	if (unlikely(blockpfn > end_pfn) && total_isolated <= pageblock_nr_pages)
>  		blockpfn = end_pfn;
>  
>  	trace_mm_compaction_isolate_freepages(*start_pfn, blockpfn,
> @@ -1441,7 +1443,7 @@ fast_isolate_around(struct compact_contr
>  	isolate_freepages_block(cc, &start_pfn, end_pfn, &cc->freepages, 1, false);
>  
>  	/* Skip this pageblock in the future as it's full or nearly full */
> -	if (start_pfn == end_pfn)
> +	if (start_pfn >= end_pfn)
>  		set_pageblock_skip(page);
>  
>  	return;
> @@ -1713,7 +1715,7 @@ static void isolate_freepages(struct com
>  					block_end_pfn, freelist, stride, false);
>  
>  		/* Update the skip hint if the full pageblock was scanned */
> -		if (isolate_start_pfn == block_end_pfn)
> +		if (isolate_start_pfn >= block_end_pfn)
>  			update_pageblock_skip(cc, page, block_start_pfn);
>  
>  		/* Are enough freepages isolated? */
> _
> 
> Patches currently in -mm which might be from shikemeng@xxxxxxxxxxxxxxx are
> 
> mm-correct-stale-comment-of-function-check_pte.patch
> mm-page_table_check-remove-unused-parameters-in-page_table_check_clear.patch
> mm-page_table_check-remove-unused-parameters-in-page_table_check_set.patch
> mm-page_table_check-remove-unused-parameter-in-page_table_check_pte_clear.patch
> mm-page_table_check-remove-unused-parameter-in-page_table_check_pmd_clear.patch
> mm-page_table_check-remove-unused-parameter-in-page_table_check_pud_clear.patch
> mm-page_table_check-remove-unused-parameter-in-page_table_check_pte_set.patch
> mm-page_table_check-remove-unused-parameter-in-page_table_check_pmd_set.patch
> mm-page_table_check-remove-unused-parameter-in-page_table_check_pud_set.patch
> mm-page_ext-remove-unused-return-value-of-offline_page_ext.patch
> mm-page_ext-remove-rollback-for-untouched-mem_section-in-online_page_ext.patch
> mm-page_ext-move-functions-around-for-minor-cleanups-to-page_ext.patch
> mm-page_ext-add-common-function-to-get-client-data-from-page_ext.patch
> mm-page_ext-use-page_ext_data-helper-in-page_table_check.patch
> mm-page_ext-use-page_ext_data-helper-in-page_owner.patch
> mm-rmap-correct-stale-comment-of-rmap_walk_anon-and-rmap_walk_file.patch
> mm-page_poison-remove-unused-page_exth-from-page_poison.patch
> mm-vmstat-remove-unused-page_exth-from-vmstat.patch
> mm-page_ext-move-page_ext_operations-definition-under-config_page_extension.patch
> mm-compaction-allow-blockpfn-outside-of-pageblock-for-high-order-buddy-page.patch
> mm-compaction-set-compact_cached_free_pfn-correctly-in-update_pageblock_skip.patch
> mm-compaction-remove-unnecessary-cursor-page-in-isolate_freepages_block.patch
> mm-compaction-remove-unnecessary-else-continue-at-end-of-loop-in-isolate_freepages_block.patch
> 
> 

-- 
Best wishes
Kemeng Shi




[Index of Archives]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux