Re: [BUGFIX][PATCH] fix wrong lru rotate back at lumpty reclaim

Minchan Kim
2009-06-09T10:55:39Z

2009/6/9 KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>:
>
> Minchan Kim wrote:
>> On Tue, Jun 9, 2009 at 6:15 PM, KAMEZAWA
>> Hiroyuki<kamezawa.hiroyu@jp.fujitsu.com> wrote:
>>>
>>> From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>>>
>>> In lumpty reclaim, "cursor_page" is found just by pfn. Then, we don't
>>> know
>>> from which LRU "cursor" page came from. Then, putback it to "src" list
>>> is BUG.
>>> Just leave it as it is.
>>> (And I think rotate here is overkilling even if "src" is correct.)
>>>
>>> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>>> ---
>>> mm/vmscan.c | 5 ++---
>>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>>
>>> Index: mmotm-2.6.30-Jun4/mm/vmscan.c
>>> ===================================================================
>>> --- mmotm-2.6.30-Jun4.orig/mm/vmscan.c
>>> +++ mmotm-2.6.30-Jun4/mm/vmscan.c
>>> @@ -940,10 +940,9 @@ static unsigned long isolate_lru_pages(u
>>> nr_taken++;
>>> scan++;
>>> break;
>>> -
>>>case -EBUSY:
>>
>> We can remove case -EBUSY itself, too.
>> It is meaningless.
>>
> Sure, will post v2 and remove EBUSY case.
> (I'm sorry my webmail system converts a space to a multibyte char...
>  then I cut some.)
>
>>> - /* else it is being freed
>>> elsewhere */
>>> -
>>> list_move(&cursor_page->lru, src);
>>> +  /* Do nothing because we
>>> don't know where
>>> + cusrsor_page comes
>>> from */
>>>default:
>>> break; /* ! on LRU or
>>> wrong list */
>>
>> Hmm.. what meaning of this break ?
>> We are in switch case.
>> This "break" can't go out of loop.
> yes.
>
>> But comment said "abort this block scan".
>>
> Where ? the comment says the cursor_page is not on lru (PG_lru is unset)

I mean follow as
908 /*
909 * Attempt to take all pages in the order aligned region
910 * surrounding the tag page. Only take those pages of
911 * the same active state as that tag page. We may safely
912 * round the target page pfn down to the requested order
913 * as the mem_map is guarenteed valid out to MAX_ORDER,
914 * where that page is in a different zone we will detect
915 * it from its zone id and abort this block scan.
916 */
917 zone_id = page_zone_id(page);

>> If I understand it properly , don't we add goto phrase ?
>>
> No.

If it is so, the break also is meaningless.

> Just try next page on list.
>
> Thank you for review, I'll post updated one tomorrow.
> -Kame
>
>

--
Kinds regards,
Minchan Kim