Re: [resend][PATCH -mm] split_lru: fix pagevec_move_tail() doesn't treat unevictable page

From: MinChan Kim
Date: Tue Jul 01 2008 - 20:39:28 EST


Hi, Rik and Kosaki-san

I want to know exact race situation for remaining git log.
As you know, git log is important for me who is newbie to understand source

There are many possibility in this race problem.

Did you use hugepage in this test ?
I think that If you used hugepage, it seems to happen following race.

--------------

CPU1 CPU2

shm_unlock
scan_mapping_unevictable_pages
check_move_unevictable_page
ClearPageUnevictable rotate_reclaimable_page

PageUnevictable(page) return 0
SetPageUnevictable
list_move(LRU_UNEVICTABLE)

local_irq_save

pagevec_move_tail

Do you think it is possible ?

On Tue, Jul 1, 2008 at 10:38 PM, Rik van Riel <riel@xxxxxxxxxx> wrote:
> On Tue, 01 Jul 2008 17:26:51 +0900
> KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> wrote:
>
>> Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx>
>
> Acked-by: Rik van Riel <riel@xxxxxxxxxx>
>
> Good catch!
>
>> @@ -116,7 +116,7 @@ static void pagevec_move_tail(struct pag
>> zone = pagezone;
>> spin_lock(&zone->lru_lock);
>> }
>> - if (PageLRU(page) && !PageActive(page)) {
>> + if (PageLRU(page) && !PageActive(page) && !PageUnevictable(page)) {
>> int lru = page_is_file_cache(page);
>> list_move_tail(&page->lru, &zone->lru[lru].list);
>> pgmoved++;
>
> --
> All rights reversed.
>



--
Kinds regards,
MinChan Kim
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/