On Thu, Mar 21, 2019 at 04:58:16PM -0700, Yang Shi wrote:
On Thu, Mar 21, 2019 at 1:03 PM Keith Busch
<keith.busch(a)intel.com> wrote:
> + if (!PageCompound(page)) {
> + if (migrate_demote_mapping(page)) {
> + unlock_page(page);
> + if (likely(put_page_testzero(page)))
> + goto free_it;
> +
> + /*
> + * Speculative reference will free this page,
> + * so leave it off the LRU.
> + */
> + nr_reclaimed++;
> + continue;
> + }
> + }
It looks the reclaim path would fall through if the migration is
failed. But, it looks, with patch #4, you may end up trying reclaim an
anon page on swapless system if migration is failed?
Right, and add_to_swap() will fail and the page jumps to activate_locked
label, placing it back where it was before.
And, actually I have the same question with Yan Zi. Why not just put
the demote candidate into a separate list, then migrate all the
candidates in bulk with migrate_pages()?
The page is already locked at the point we know we want to migrate it.