Re: [RFC] page fault retry with NOPAGE_RETRY

From: Andrew Morton
Date: Tue Sep 19 2006 - 23:09:46 EST


On Wed, 20 Sep 2006 11:57:09 +1000
Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> wrote:

> > You forget that the point of this optimisation is to undo mmap_sem while
> > waiting on the disk IO. Once we've done that we cannot go looking at ptes
> > or vmas: another thread could have munapped the whole lot or anything.
> > (And we always need to be afraid of use_mm()..)
>
> Wait wait .. .we don't need to have the mmap sem to -look- at a PTE.

The pte resides in a pagetable page. Once we've dropped mmap_sem, that
pagetable page might not be there any more: munmap() might have freed it.
We have to retake mmap_sem, do a find_vma() and a new pagetable walk.

There are some optimisations we could make to avoid all of that in the
common case, but this is the conceptual behaviour.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/