Re: [PATCH v9 06/20] mm/thp: narrow lru locking

From: Kirill A. Shutemov
Date: Wed Mar 04 2020 - 03:02:53 EST


On Mon, Mar 02, 2020 at 07:00:16PM +0800, Alex Shi wrote:
> @@ -2564,6 +2565,9 @@ static void __split_huge_page(struct page *page, struct list_head *list,
> xa_lock(&swap_cache->i_pages);
> }
>
> + /* Lru list would be changed, don't care head's LRU bit. */
> + spin_lock_irqsave(&pgdat->lru_lock, flags);
> +
> for (i = HPAGE_PMD_NR - 1; i >= 1; i--) {
> __split_huge_page_tail(head, i, lruvec, list);
> /* Some pages can be beyond i_size: drop them from page cache */

You change locking order WRT i_pages lock. Is it safe?

--
Kirill A. Shutemov