Re: [PATCH 2/3] mm/mmu_notifier: use structure for invalidate_range_start/end calls

From: Jan Kara
Date: Wed Dec 05 2018 - 11:29:04 EST


On Wed 05-12-18 10:53:57, Jerome Glisse wrote:
> On Wed, Dec 05, 2018 at 12:04:16PM +0100, Jan Kara wrote:
> > Hi Jerome!
> >
> > On Mon 03-12-18 15:18:16, jglisse@xxxxxxxxxx wrote:
> > > From: Jérôme Glisse <jglisse@xxxxxxxxxx>
> > >
> > > To avoid having to change many call sites everytime we want to add a
> > > parameter use a structure to group all parameters for the mmu_notifier
> > > invalidate_range_start/end cakks. No functional changes with this
> > > patch.
> >
> > Two suggestions for the patch below:
> >
> > > @@ -772,7 +775,8 @@ static void dax_entry_mkclean(struct address_space *mapping, pgoff_t index,
> > > * call mmu_notifier_invalidate_range_start() on our behalf
> > > * before taking any lock.
> > > */
> > > - if (follow_pte_pmd(vma->vm_mm, address, &start, &end, &ptep, &pmdp, &ptl))
> > > + if (follow_pte_pmd(vma->vm_mm, address, &range,
> > > + &ptep, &pmdp, &ptl))
> > > continue;
> >
> > The change of follow_pte_pmd() arguments looks unexpected. Why should that
> > care about mmu notifier range? I see it may be convenient but it doesn't look
> > like a good API to me.
>
> Saddly i do not see a way around that one this is because of fs/dax.c
> which does the mmu_notifier_invalidate_range_end while follow_pte_pmd
> do the mmu_notifier_invalidate_range_start

I see so this is really a preexisting problem with follow_pte_pmd() having
ugly interface. After some thoughts I think your patch actually slightly
improves the situation so OK.

Honza
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR