Re: page fault scalability patch V16 [3/4]: Drop page_table_lock in handle_mm_fault

From: Christoph Lameter <clameter_at_sgi.com>
Date: 2005-02-02 12:20:17
On Wed, 2 Feb 2005, Nick Piggin wrote:

> > The unmapping in rmap.c would change the pte. This would be discovered
> > after acquiring the spinlock later in do_wp_page. Which would then lead to
> > the operation being abandoned.
> Oh yes, but suppose your page_cache_get is happening at the same time
> as free_pages_check, after the page gets freed by the scanner? I can't
> actually think of anything that would cause a real problem (ie. not a
> debug check), off the top of my head. But can you say there _isn't_
> anything?
>
> Regardless, it seems pretty dirty to me. But could possibly be made
> workable, of course.

Would it make you feel better if we would move the spin_unlock back to the
prior position? This would ensure that the fallback case is exactly the
same.

Index: linux-2.6.10/mm/memory.c
===================================================================
--- linux-2.6.10.orig/mm/memory.c	2005-01-31 08:59:07.000000000 -0800
+++ linux-2.6.10/mm/memory.c	2005-02-01 10:55:30.000000000 -0800
@@ -1318,7 +1318,6 @@ static int do_wp_page(struct mm_struct *
 		}
 	}
 	pte_unmap(page_table);
-	page_table_atomic_stop(mm);

 	/*
 	 * Ok, we need to copy. Oh, well..
@@ -1326,6 +1325,7 @@ static int do_wp_page(struct mm_struct *
 	if (!PageReserved(old_page))
 		page_cache_get(old_page);

+	page_table_atomic_stop(mm);
 	if (unlikely(anon_vma_prepare(vma)))
 		goto no_new_page;
 	if (old_page == ZERO_PAGE(address)) {
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Tue Feb 1 20:22:02 2005

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:35 EST