Message ID | 20230728171037.2219226-9-shikemeng@huaweicloud.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Fixes and cleanups to compaction | expand |
On 28.07.23 19:10, Kemeng Shi wrote: > Keep the same logic as update_pageblock_skip, only set skip if > no_set_skip_hint is false which is more reasonable. > > Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com> > --- > mm/compaction.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > index 188d610eb3b6..6841c0496223 100644 > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -1418,7 +1418,7 @@ fast_isolate_around(struct compact_control *cc, unsigned long pfn) > 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 && !cc->no_set_skip_hint) > set_pageblock_skip(page); > } > LGTM, although I am not an expert on that code. Reviewed-by: David Hildenbrand <david@redhat.com>
On 7/29/2023 1:10 AM, Kemeng Shi wrote: > Keep the same logic as update_pageblock_skip, only set skip if > no_set_skip_hint is false which is more reasonable. Um, the fast_find_migrateblock() and fast_isolate_freepages() will rely on the skip flag and ignore the cc->no_set_skip_hint. So not sure it is helpful. Let's see if Mel has some input. > Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com> > --- > mm/compaction.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > index 188d610eb3b6..6841c0496223 100644 > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -1418,7 +1418,7 @@ fast_isolate_around(struct compact_control *cc, unsigned long pfn) > 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 && !cc->no_set_skip_hint) > set_pageblock_skip(page); > } >
diff --git a/mm/compaction.c b/mm/compaction.c index 188d610eb3b6..6841c0496223 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -1418,7 +1418,7 @@ fast_isolate_around(struct compact_control *cc, unsigned long pfn) 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 && !cc->no_set_skip_hint) set_pageblock_skip(page); }
Keep the same logic as update_pageblock_skip, only set skip if no_set_skip_hint is false which is more reasonable. Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com> --- mm/compaction.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)