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