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

From: MinChan Kim
Date: Tue Jul 01 2008 - 20:50:33 EST


Sorry, it seems mail sender problem.
Resend

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


On Wed, Jul 2, 2008 at 9:39 AM, MinChan Kim <minchan.kim@xxxxxxxxx> wrote:
> 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
>



--
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/