lkml.org 
[lkml]   [2019]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH 4/4] mm: Generalize putback scan functions
From
Date
On 13.02.2019 22:20, Daniel Jordan wrote:
> On Tue, Feb 12, 2019 at 06:14:16PM +0300, Kirill Tkhai wrote:
>> +static unsigned noinline_for_stack move_pages_to_lru(struct lruvec *lruvec,
>> + struct list_head *list)
>> {
>> struct pglist_data *pgdat = lruvec_pgdat(lruvec);
>> + int nr_pages, nr_moved = 0;
>> LIST_HEAD(pages_to_free);
>> + struct page *page;
>> + enum lru_list lru;
>>
>> - /*
>> - * Put back any unfreeable pages.
>> - */
>> - while (!list_empty(page_list)) {
>> - struct page *page = lru_to_page(page_list);
>> - int lru;
>> -
>> - VM_BUG_ON_PAGE(PageLRU(page), page);
>> - list_del(&page->lru);
>> + while (!list_empty(list)) {
>> + page = lru_to_page(list);
>> if (unlikely(!page_evictable(page))) {
>> + list_del_init(&page->lru);
>> spin_unlock_irq(&pgdat->lru_lock);
>> putback_lru_page(page);
>> spin_lock_irq(&pgdat->lru_lock);
>> continue;
>> }
>> -
>> lruvec = mem_cgroup_page_lruvec(page, pgdat);
>>
>> + VM_BUG_ON_PAGE(PageLRU(page), page);
>
> Nit, but moving the BUG down here weakens it a little bit since we miss
> checking it if the page is unevictable.

Yeah, this is bad.

> Maybe worth pointing out in the changelog that the main difference from
> combining these two functions is that we're now checking for !page_evictable
> coming from shrink_active_list, which shouldn't change any behavior since that
> path works with evictable pages only.

Sounds good.

\
 
 \ /
  Last update: 2019-02-14 11:29    [W:1.272 / U:0.008 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site