Subject: linux-next: manual merge of the folio tree with the ext3 tree

From: Stephen Rothwell <[email-masked]>
Date: Wed, 21 Jul 2021 14:42:25 +1000

Hi all,

Today's linux-next merge of the folio tree got a conflict in:

  mm/rmap.c

between commits:

  9608703e488c ("mm: Fix comments mentioning i_mutex")
  730633f0b7f9 ("mm: Protect operations adding pages to page cache with invalidate_lock")

from the ext3 tree and commit:

  a8f645b17cd4 ("mm/memcg: Add folio_lruvec_lock() and similar functions")

from the folio tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc mm/rmap.c
index 2d29a57d29e8,b3aae8eeaeaf..000000000000
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@@ -20,29 -20,28 +20,29 @@@
  /*
   * Lock ordering in mm:
   *
 - * inode->i_mutex	(while writing or truncating, not reading or faulting)
 + * inode->i_rwsem	(while writing or truncating, not reading or faulting)
   *   mm->mmap_lock
 - *     page->flags PG_locked (lock_page)   * (see huegtlbfs below)
 - *       hugetlbfs_i_mmap_rwsem_key (in huge_pmd_share)
 - *         mapping->i_mmap_rwsem
 - *           hugetlb_fault_mutex (hugetlbfs specific page fault mutex)
 - *           anon_vma->rwsem
 - *             mm->page_table_lock or pte_lock
 - *               swap_lock (in swap_duplicate, swap_info_get)
 - *                 mmlist_lock (in mmput, drain_mmlist and others)
 - *                 mapping->private_lock (in __set_page_dirty_buffers)
 - *                   lock_page_memcg move_lock (in __set_page_dirty_buffers)
 - *                     i_pages lock (widely used)
 - *                       lruvec->lru_lock (in folio_lruvec_lock_irq)
 - *                 inode->i_lock (in set_page_dirty's __mark_inode_dirty)
 - *                 bdi.wb->list_lock (in set_page_dirty's __mark_inode_dirty)
 - *                   sb_lock (within inode_lock in fs/fs-writeback.c)
 - *                   i_pages lock (widely used, in set_page_dirty,
 - *                             in arch-dependent flush_dcache_mmap_lock,
 - *                             within bdi.wb->list_lock in __sync_single_inode)
 + *     mapping->invalidate_lock (in filemap_fault)
 + *       page->flags PG_locked (lock_page)   * (see hugetlbfs below)
 + *         hugetlbfs_i_mmap_rwsem_key (in huge_pmd_share)
 + *           mapping->i_mmap_rwsem
 + *             hugetlb_fault_mutex (hugetlbfs specific page fault mutex)
 + *             anon_vma->rwsem
 + *               mm->page_table_lock or pte_lock
 + *                 swap_lock (in swap_duplicate, swap_info_get)
 + *                   mmlist_lock (in mmput, drain_mmlist and others)
 + *                   mapping->private_lock (in __set_page_dirty_buffers)
 + *                     lock_page_memcg move_lock (in __set_page_dirty_buffers)
 + *                       i_pages lock (widely used)
-  *                         lruvec->lru_lock (in lock_page_lruvec_irq)
++ *                         lruvec->lru_lock (in folio_lruvec_lock_irq)
 + *                   inode->i_lock (in set_page_dirty's __mark_inode_dirty)
 + *                   bdi.wb->list_lock (in set_page_dirty's __mark_inode_dirty)
 + *                     sb_lock (within inode_lock in fs/fs-writeback.c)
 + *                     i_pages lock (widely used, in set_page_dirty,
 + *                               in arch-dependent flush_dcache_mmap_lock,
 + *                               within bdi.wb->list_lock in __sync_single_inode)
   *
 - * anon_vma->rwsem,mapping->i_mutex      (memory_failure, collect_procs_anon)
 + * anon_vma->rwsem,mapping->i_mmap_rwsem   (memory_failure, collect_procs_anon)
   *   ->tasklist_lock
   *     pte map lock
   *