On Wed, 30 Jan 2008, Andrea Arcangeli wrote: > XPMEM requires with invalidate_range (sleepy) + > before_invalidate_range (sleepy). invalidate_all should also be called > before_release (both sleepy). > > It sounds we need full overlap of information provided by > invalidate_page and invalidate_range to fit all three models (the > opposite of the zero objective that current V3 is taking). And the > swap will be handled only by invalidate_page either through linux rmap > or external rmap (with the latter that can sleep so it's ok for you, > the former not). GRU can safely use the either the linux rmap notifier > or the external rmap notifier equally well, because when try_to_unmap > is called the page is locked and obviously pinned by the VM itself.
So put the invalidate_page() callbacks in everywhere. Then we have invalidate_range_start(mm) and invalidate_range_finish(mm, start, end) in addition to the invalidate rmap_notifier? --- include/linux/mmu_notifier.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) Index: linux-2.6/include/linux/mmu_notifier.h =================================================================== --- linux-2.6.orig/include/linux/mmu_notifier.h 2008-01-30 11:49:02.000000000 -0800 +++ linux-2.6/include/linux/mmu_notifier.h 2008-01-30 11:49:57.000000000 -0800 @@ -69,10 +69,13 @@ struct mmu_notifier_ops { /* * lock indicates that the function is called under spinlock. */ - void (*invalidate_range)(struct mmu_notifier *mn, + void (*invalidate_range_begin)(struct mmu_notifier *mn, struct mm_struct *mm, - unsigned long start, unsigned long end, int lock); + + void (*invalidate_range_end)(struct mmu_notifier *mn, + struct mm_struct *mm, + unsigned long start, unsigned long end); }; struct mmu_rmap_notifier_ops; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/