Re: [RFC] Distributed mmap API

Andrew Morton
2004-02-25T22:16:46Z

Daniel Phillips <phillips@arcor.de> wrote:
>
> On Wednesday 25 February 2004 17:07, Andrew Morton wrote:
> > Daniel Phillips <phillips@arcor.de> wrote:
> > > - pte = ptep_get_and_clear(ptep);
> > > + if (unlikely(!all) && is_anon(pfn_to_page(pfn)))
> > > + continue;
> > > + pte = ptep_get_and_clear(ptep); /* get dirty bit atomically */
> > > tlb_remove_tlb_entry(tlb, ptep, address+offset);
> > > if (pfn_valid(pfn)) {
> >
> > I think you need to check pfn_valid() before running is_anon(pfn_to_page())
>
> Easy enough:
>
> if (unlikely(!all) && pfn_valid(pfn) && is_anon(pfn_to_page(pfn)))

You can probably factor this into

page = NULL;
if (pfn_valid(..))
page = pfn_to_page(..)
if (page)
..
if (page)
..

> but how can we legitimately get !pfn_valid there?

A mapping of some I/O region?