Re: [failures] mm-vmscan-remove-unnecessary-lruvec-adding.patch removed from -mm tree

From: Qian Cai
Date: Fri Mar 06 2020 - 21:27:46 EST




> On Mar 6, 2020, at 6:58 AM, Alex Shi <alex.shi@xxxxxxxxxxxxxxxxx> wrote:
>
>
>
> å 2020/3/6 äå5:04, Alex Shi åé:
>>
>>
>> å 2020/3/6 äå11:32, Qian Cai åé:
>>>
>>>> On Mar 5, 2020, at 9:50 PM, akpm@xxxxxxxxxxxxxxxxxxxx wrote:
>>>>
>>>>
>>>> The patch titled
>>>> Subject: mm/vmscan: remove unnecessary lruvec adding
>>>> has been removed from the -mm tree. Its filename was
>>>> mm-vmscan-remove-unnecessary-lruvec-adding.patch
>>>>
>>>> This patch was dropped because it had testing failures
>>> Andrew, do you have more information about this failure? I hit a bug
>>> here under memory pressure and am wondering if this is related
>>> which might save me some time diggingâ
>>>
>>> [ 4389.727184][ T6600] mem_cgroup_update_lru_size(00000000bb31aaed, 0, -7): lru_size -1
>>
>> This bug seems failed due to a update_lru_size() missing or misplace, but
>> what's I changed on this patch seems unlike to cause this bug.
>>
>> Anyway, Qian, could you do me a favor to remove this patch and try again?
>
> Compare to this patch's change, the 'c8cba0cc2a80 mm/thp: narrow lru locking' is more
> likely bad. Maybe it's due to lru unlock was moved before ClearPageCompound() from
> before remap_page(head); guess this unlock should be move after ClearPageCompound or
> move back to origin place.

I can only confirmed that after reverted those 6 patches, I am no long be able to reproduce it.

>
> But I still can not reproduce this bug. Awkward!
>
> Alex
>
> ---
> line 2605 mm/huge_memory.c:
> spin_unlock_irqrestore(&pgdat->lru_lock, flags);
>
> ClearPageCompound(head);
>
> split_page_owner(head, HPAGE_PMD_ORDER);
>
> /* See comment in __split_huge_page_tail() */
> if (PageAnon(head)) {
> /* Additional pin to swap cache */
> if (PageSwapCache(head)) {
> page_ref_add(head, 2);
> xa_unlock(&swap_cache->i_pages);
> } else {
> page_ref_inc(head);
> }
> } else {
> /* Additional pin to page cache */
> page_ref_add(head, 2);
> xa_unlock(&head->mapping->i_pages);
> }
>
> remap_page(head);