[PATCH] mm: compact: fix zoneindex in compact

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] mm: compact: fix zoneindex in compact

Chen Feng
While testing the kcompactd in my platform 3G MEM only DMA ZONE.
I found the kcompactd never wakeup. It seems the zoneindex
has already minus 1 before. So the traverse here should be <=.

Signed-off-by: Chen Feng <[hidden email]>
---
 mm/compaction.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/compaction.c b/mm/compaction.c
index 8fa2540..e5122d9 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -1742,7 +1742,7 @@ static bool kcompactd_node_suitable(pg_data_t *pgdat)
  struct zone *zone;
  enum zone_type classzone_idx = pgdat->kcompactd_classzone_idx;
 
- for (zoneid = 0; zoneid < classzone_idx; zoneid++) {
+ for (zoneid = 0; zoneid <= classzone_idx; zoneid++) {
  zone = &pgdat->node_zones[zoneid];
 
  if (!populated_zone(zone))
--
1.9.1

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] mm: compact: fix zoneindex in compact

Vlastimil Babka
On 05/19/2016 01:58 PM, Chen Feng wrote:
> While testing the kcompactd in my platform 3G MEM only DMA ZONE.
> I found the kcompactd never wakeup. It seems the zoneindex
> has already minus 1 before. So the traverse here should be <=.

Ouch, thanks!

> Signed-off-by: Chen Feng <[hidden email]>

Fixes: 0f87baf4f7fb ("mm: wake kcompactd before kswapd's short sleep")
Cc: [hidden email]
Acked-by: Vlastimil Babka <[hidden email]>

> ---
>  mm/compaction.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/compaction.c b/mm/compaction.c
> index 8fa2540..e5122d9 100644
> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -1742,7 +1742,7 @@ static bool kcompactd_node_suitable(pg_data_t *pgdat)
>   struct zone *zone;
>   enum zone_type classzone_idx = pgdat->kcompactd_classzone_idx;
>  
> - for (zoneid = 0; zoneid < classzone_idx; zoneid++) {
> + for (zoneid = 0; zoneid <= classzone_idx; zoneid++) {
>   zone = &pgdat->node_zones[zoneid];
>  
>   if (!populated_zone(zone))
>

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] mm: compact: fix zoneindex in compact

Vlastimil Babka
On 05/19/2016 02:11 PM, Vlastimil Babka wrote:

> On 05/19/2016 01:58 PM, Chen Feng wrote:
>> While testing the kcompactd in my platform 3G MEM only DMA ZONE.
>> I found the kcompactd never wakeup. It seems the zoneindex
>> has already minus 1 before. So the traverse here should be <=.
>
> Ouch, thanks!
>
>> Signed-off-by: Chen Feng <[hidden email]>
>
> Fixes: 0f87baf4f7fb ("mm: wake kcompactd before kswapd's short sleep")

Bah, not that one.

Fixes: accf62422b3a ("mm, kswapd: replace kswapd compaction with waking
up kcompactd")

> Cc: [hidden email]
> Acked-by: Vlastimil Babka <[hidden email]>
>
>> ---
>>  mm/compaction.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/mm/compaction.c b/mm/compaction.c
>> index 8fa2540..e5122d9 100644
>> --- a/mm/compaction.c
>> +++ b/mm/compaction.c
>> @@ -1742,7 +1742,7 @@ static bool kcompactd_node_suitable(pg_data_t *pgdat)
>>   struct zone *zone;
>>   enum zone_type classzone_idx = pgdat->kcompactd_classzone_idx;
>>  
>> - for (zoneid = 0; zoneid < classzone_idx; zoneid++) {
>> + for (zoneid = 0; zoneid <= classzone_idx; zoneid++) {
>>   zone = &pgdat->node_zones[zoneid];
>>  
>>   if (!populated_zone(zone))
>>
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to [hidden email].  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"[hidden email]"> [hidden email] </a>
>

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] mm: compact: fix zoneindex in compact

Hugh Dickins-2
On Thu, 19 May 2016, Vlastimil Babka wrote:

> On 05/19/2016 02:11 PM, Vlastimil Babka wrote:
> > On 05/19/2016 01:58 PM, Chen Feng wrote:
> >> While testing the kcompactd in my platform 3G MEM only DMA ZONE.
> >> I found the kcompactd never wakeup. It seems the zoneindex
> >> has already minus 1 before. So the traverse here should be <=.
> >
> > Ouch, thanks!
> >
> >> Signed-off-by: Chen Feng <[hidden email]>
> >
> > Fixes: 0f87baf4f7fb ("mm: wake kcompactd before kswapd's short sleep")
>
> Bah, not that one.
>
> Fixes: accf62422b3a ("mm, kswapd: replace kswapd compaction with waking
> up kcompactd")
>
> > Cc: [hidden email]
> > Acked-by: Vlastimil Babka <[hidden email]>
> >
> >> ---
> >>  mm/compaction.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/mm/compaction.c b/mm/compaction.c
> >> index 8fa2540..e5122d9 100644
> >> --- a/mm/compaction.c
> >> +++ b/mm/compaction.c
> >> @@ -1742,7 +1742,7 @@ static bool kcompactd_node_suitable(pg_data_t *pgdat)
> >>   struct zone *zone;
> >>   enum zone_type classzone_idx = pgdat->kcompactd_classzone_idx;
> >>  
> >> - for (zoneid = 0; zoneid < classzone_idx; zoneid++) {
> >> + for (zoneid = 0; zoneid <= classzone_idx; zoneid++) {
> >>   zone = &pgdat->node_zones[zoneid];
> >>  
> >>   if (!populated_zone(zone))

Ignorant question: kcompactd_do_work() just below has a similar loop:
should that one be saying "zoneid <= cc.classzone_idx" too?

Hugh
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] mm: compact: fix zoneindex in compact

Vlastimil Babka
On 19.5.2016 19:23, Hugh Dickins wrote:

> On Thu, 19 May 2016, Vlastimil Babka wrote:
>> On 05/19/2016 02:11 PM, Vlastimil Babka wrote:
>>> On 05/19/2016 01:58 PM, Chen Feng wrote:
>>>> While testing the kcompactd in my platform 3G MEM only DMA ZONE.
>>>> I found the kcompactd never wakeup. It seems the zoneindex
>>>> has already minus 1 before. So the traverse here should be <=.
>>>
>>> Ouch, thanks!
>>>
>>>> Signed-off-by: Chen Feng <[hidden email]>
>>>
>>> Fixes: 0f87baf4f7fb ("mm: wake kcompactd before kswapd's short sleep")
>>
>> Bah, not that one.
>>
>> Fixes: accf62422b3a ("mm, kswapd: replace kswapd compaction with waking
>> up kcompactd")
>>
>>> Cc: [hidden email]
>>> Acked-by: Vlastimil Babka <[hidden email]>
>>>
>>>> ---
>>>>  mm/compaction.c | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/mm/compaction.c b/mm/compaction.c
>>>> index 8fa2540..e5122d9 100644
>>>> --- a/mm/compaction.c
>>>> +++ b/mm/compaction.c
>>>> @@ -1742,7 +1742,7 @@ static bool kcompactd_node_suitable(pg_data_t *pgdat)
>>>>   struct zone *zone;
>>>>   enum zone_type classzone_idx = pgdat->kcompactd_classzone_idx;
>>>>  
>>>> - for (zoneid = 0; zoneid < classzone_idx; zoneid++) {
>>>> + for (zoneid = 0; zoneid <= classzone_idx; zoneid++) {
>>>>   zone = &pgdat->node_zones[zoneid];
>>>>  
>>>>   if (!populated_zone(zone))
>
> Ignorant question: kcompactd_do_work() just below has a similar loop:

You spelled "Important" wrong.

> should that one be saying "zoneid <= cc.classzone_idx" too?

Yes. Chen, can you send updated patch (also with the ack/cc/fixes tags I added?)

Thanks!

> Hugh
>

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] mm: compact: fix zoneindex in compact

Chen Feng


On 2016/5/20 1:45, Vlastimil Babka wrote:

> On 19.5.2016 19:23, Hugh Dickins wrote:
>> On Thu, 19 May 2016, Vlastimil Babka wrote:
>>> On 05/19/2016 02:11 PM, Vlastimil Babka wrote:
>>>> On 05/19/2016 01:58 PM, Chen Feng wrote:
>>>>> While testing the kcompactd in my platform 3G MEM only DMA ZONE.
>>>>> I found the kcompactd never wakeup. It seems the zoneindex
>>>>> has already minus 1 before. So the traverse here should be <=.
>>>>
>>>> Ouch, thanks!
>>>>
>>>>> Signed-off-by: Chen Feng <[hidden email]>
>>>>
>>>> Fixes: 0f87baf4f7fb ("mm: wake kcompactd before kswapd's short sleep")
>>>
>>> Bah, not that one.
>>>
>>> Fixes: accf62422b3a ("mm, kswapd: replace kswapd compaction with waking
>>> up kcompactd")
>>>
>>>> Cc: [hidden email]
>>>> Acked-by: Vlastimil Babka <[hidden email]>
>>>>
>>>>> ---
>>>>>  mm/compaction.c | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/mm/compaction.c b/mm/compaction.c
>>>>> index 8fa2540..e5122d9 100644
>>>>> --- a/mm/compaction.c
>>>>> +++ b/mm/compaction.c
>>>>> @@ -1742,7 +1742,7 @@ static bool kcompactd_node_suitable(pg_data_t *pgdat)
>>>>>   struct zone *zone;
>>>>>   enum zone_type classzone_idx = pgdat->kcompactd_classzone_idx;
>>>>>  
>>>>> - for (zoneid = 0; zoneid < classzone_idx; zoneid++) {
>>>>> + for (zoneid = 0; zoneid <= classzone_idx; zoneid++) {
>>>>>   zone = &pgdat->node_zones[zoneid];
>>>>>  
>>>>>   if (!populated_zone(zone))
>>
>> Ignorant question: kcompactd_do_work() just below has a similar loop:
>

Yes, my mistake.
> You spelled "Important" wrong.
>
>> should that one be saying "zoneid <= cc.classzone_idx" too?
>
> Yes. Chen, can you send updated patch (also with the ack/cc/fixes tags I added?)
>
OK, I will send it out soon.

> Thanks!
>
>> Hugh
>>
>
>
> .
>

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] mm: compact: fix zoneindex in compact

Chen Feng
In reply to this post by Vlastimil Babka


On 2016/5/20 1:45, Vlastimil Babka wrote:

> On 19.5.2016 19:23, Hugh Dickins wrote:
>> On Thu, 19 May 2016, Vlastimil Babka wrote:
>>> On 05/19/2016 02:11 PM, Vlastimil Babka wrote:
>>>> On 05/19/2016 01:58 PM, Chen Feng wrote:
>>>>> While testing the kcompactd in my platform 3G MEM only DMA ZONE.
>>>>> I found the kcompactd never wakeup. It seems the zoneindex
>>>>> has already minus 1 before. So the traverse here should be <=.
>>>>
>>>> Ouch, thanks!
>>>>
>>>>> Signed-off-by: Chen Feng <[hidden email]>
>>>>
>>>> Fixes: 0f87baf4f7fb ("mm: wake kcompactd before kswapd's short sleep")
>>>
>>> Bah, not that one.
>>>
>>> Fixes: accf62422b3a ("mm, kswapd: replace kswapd compaction with waking
>>> up kcompactd")
>>>
>>>> Cc: [hidden email]
>>>> Acked-by: Vlastimil Babka <[hidden email]>
>>>>
>>>>> ---
>>>>>  mm/compaction.c | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/mm/compaction.c b/mm/compaction.c
>>>>> index 8fa2540..e5122d9 100644
>>>>> --- a/mm/compaction.c
>>>>> +++ b/mm/compaction.c
>>>>> @@ -1742,7 +1742,7 @@ static bool kcompactd_node_suitable(pg_data_t *pgdat)
>>>>>   struct zone *zone;
>>>>>   enum zone_type classzone_idx = pgdat->kcompactd_classzone_idx;
>>>>>  
>>>>> - for (zoneid = 0; zoneid < classzone_idx; zoneid++) {
>>>>> + for (zoneid = 0; zoneid <= classzone_idx; zoneid++) {
>>>>>   zone = &pgdat->node_zones[zoneid];
>>>>>  
>>>>>   if (!populated_zone(zone))
>>
>> Ignorant question: kcompactd_do_work() just below has a similar loop:
>
> You spelled "Important" wrong.
>
>> should that one be saying "zoneid <= cc.classzone_idx" too?
>
> Yes. Chen, can you send updated patch (also with the ack/cc/fixes tags I added?)
>
kcompactd_do_work()

This fix already added by Andrew Morton <[hidden email]>

I will not sent it.

> Thanks!
>
>> Hugh
>>
>
>
> .
>