On Mon, 2006-10-09 at 13:45 +0200, Nick Piggin wrote:> On Mon, Oct 09, 2006 at 09:32:59PM +1000, Benjamin Herrenschmidt wrote:> > > > > > You'll want to clear VM_PFNMAP after unmapping all pages from it, before> > > switching to struct page backing.> > > > Which means having a list of all vma's ... I suppose I can look at the> > truncate code to do that race free but I was hoping I could avoid it> > (that's the whole point of using unmap_mapping_range() in fact).> > Yeah I don't think there is any other way to do it.

What is the problem if I always keep VM_PFNMAP set ?

> > > > It also needs update_mmu_cache() I suppose.> > > > > > Hmm, but it might not be called from a pagefault. Can we get away> > > with not calling it? Or is it required by some architectures?> > > > I think some architectures might be upset if it's not called...> > But would any get upset if it is called from !pagefault path?

Probably not... the PTE has been filled so it should be safe, but then,I don't know the details of what non-ppc archs do with that callback.