On Tue, Mar 28, 2023 at 10:02:06AM +1100, Dave Chinner wrote: > On Mon, Mar 27, 2023 at 06:45:15PM +0100, Matthew Wilcox (Oracle) wrote: > > Prevent filesystems from doing things which sleep in their map_pages > > method. This is in preparation for a pagefault path protected only > > by RCU. > > + rcu_read_lock(); > > + ret = vmf->vma->vm_ops->map_pages(vmf, > > + vmf->pgoff + from_pte - pte_off, > > + vmf->pgoff + to_pte - pte_off); > > + rcu_read_unlock(); > > + > > + return ret; > > Doesn't this mean that the rcu_read_lock/unlock can be removed from > filemap_map_pages()? i.e. all callers are now already under > rcu_read_lock(). Maybe WARN_ON_ONCE(!rcu_read_lock_held()) could > be put in filemap_map_pages() if you are worried about callers not > holding it... Yes, it could now be removed. I wasn't too bothered because it's so cheap (either a noop, or an inc/dec of a CPU-local variable). I don't think we need the WARN becaause there's one embedded in the XArray code (must be holding the spinlock or the RCU read lock to iterate the XArray).