Re: [PATCH -mm -v2] mm, swap, frontswap: Fix THP swap if frontswap enabled

Sergey Senozhatsky
2018-02-08T11:22:57Z

On (02/08/18 02:25), Minchan Kim wrote:
[..]
> > > if (PageTransHuge(page)) {
> > > - if (IS_ENABLED(CONFIG_THP_SWAP))
> > > - get_swap_pages(1, true, &entry);
> > > + /* Frontswap doesn't support THP */
> > > + if (!frontswap_enabled()) {
> > > + if (IS_ENABLED(CONFIG_THP_SWAP))
> > > + get_swap_pages(1, true, &entry);
> > > + }
> > > return entry;
> > > }
> >
> > I have proposed exactly the same thing [1], Minchan commented that
> > it would introduce frontswap dependency to swap_slots.c [2]. Which
> > is true, but I'd still probably prefer to handle it all in
> > get_swap_page. Minchan, any objections?
>
> I didn't want to spread out frontswap stuff unless it has good value
> because most of frontswap functions are located in mm/swapfile.c
> at this moment.

Sure, your points are perfectly valid. At the same time it might be the
case that we already kind of expose that THP dependency thing to vmscan.
The whole

if (!add_to_swap()) {
if (!PageTransHuge(page))
goto activate_locked;

split_huge_page_to_list(page);
add_to_swap(page);
}

looks a bit suspicious - if add_to_swap() fails and the page is THP then
split it and add_to_swap() again.

-ss