[PATCH] Replace page_mapping_inuse() with page_mapped()

From: KOSAKI Motohiro
Date: Tue Dec 01 2009 - 22:28:38 EST


> On 12/01/2009 09:55 PM, KOSAKI Motohiro wrote:
> >> btw, current shrink_active_list() have unnecessary page_mapping_inuse() call.
> >> it prevent to drop page reference bit from unmapped cache page. it mean
> >> we protect unmapped cache page than mapped page. it is strange.
> >>
> > How about this?
> >
> > ---------------------------------
> > SplitLRU VM replacement algorithm assume shrink_active_list() clear
> > the page's reference bit. but unnecessary page_mapping_inuse() test
> > prevent it.
> >
> > This patch remove it.
> >
> Shrink_page_list ignores the referenced bit on pages
> that are !page_mapping_inuse().
>
> if (sc->order <= PAGE_ALLOC_COSTLY_ORDER &&
> referenced &&
> page_mapping_inuse(page)
> && !(vm_flags & VM_LOCKED))
> goto activate_locked;
>
> The reason we leave the referenced bit on unmapped
> pages is that we want the next reference to a deactivated
> page cache page to move that page back to the active
> list. We do not want to require that such a page gets
> accessed twice before being reactivated while on the
> inactive list, because (1) we know it was a frequently
> accessed page already and (2) ongoing streaming IO
> might evict it from the inactive list before it gets accessed
> twice.
>
> Arguably, we should just replace the page_mapping_inuse()
> in both places with page_mapped() to simplify things.

Ah, yes. /me was slept. thanks correct me.