All of lore.kernel.org
 help / color / mirror / Atom feed
* remove mixture of non-atomic operations with page->flags which requires atomic operations to access
@ 2002-06-02 22:44 William Lee Irwin III
  2002-06-03 10:14 ` Hugh Dickins
  0 siblings, 1 reply; 8+ messages in thread
From: William Lee Irwin III @ 2002-06-02 22:44 UTC (permalink / raw)
  To: linux-kernel; +Cc: trivial

page->flags is effectively a lock word as its various bits are updatable
and accessible only by atomic operations. This patch removes the update
of page->flags in __free_pages_ok() with non-atomic operations in favor
of using atomic bit operations to update the bits to be cleared.


Against 2.5.19.


Cheers,
Bill


diff -Nru a/include/linux/page-flags.h b/include/linux/page-flags.h
--- a/include/linux/page-flags.h	Sun Jun  2 15:42:49 2002
+++ b/include/linux/page-flags.h	Sun Jun  2 15:42:49 2002
@@ -169,6 +169,7 @@
 
 #define PageChecked(page)	test_bit(PG_checked, &(page)->flags)
 #define SetPageChecked(page)	set_bit(PG_checked, &(page)->flags)
+#define ClearPageChecked(page)	clear_bit(PG_checked, &(page)->flags)
 
 #define PageReserved(page)	test_bit(PG_reserved, &(page)->flags)
 #define SetPageReserved(page)	set_bit(PG_reserved, &(page)->flags)
diff -Nru a/mm/page_alloc.c b/mm/page_alloc.c
--- a/mm/page_alloc.c	Sun Jun  2 15:42:49 2002
+++ b/mm/page_alloc.c	Sun Jun  2 15:42:49 2002
@@ -91,8 +91,12 @@
 	BUG_ON(PageLRU(page));
 	BUG_ON(PageActive(page));
 	BUG_ON(PageWriteback(page));
+
 	ClearPageDirty(page);
-	page->flags &= ~(1<<PG_referenced);
+	ClearPageUptodate(page);
+	ClearPageSlab(page);
+	ClearPageNosave(page);
+	ClearPageChecked(page);
 
 	if (current->flags & PF_FREE_PAGES)
 		goto local_freelist;

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2002-06-03 11:09 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-06-02 22:44 remove mixture of non-atomic operations with page->flags which requires atomic operations to access William Lee Irwin III
2002-06-03 10:14 ` Hugh Dickins
2002-06-03  9:12   ` David S. Miller
2002-06-03 10:28   ` William Lee Irwin III
2002-06-03  9:27     ` David S. Miller
2002-06-03 11:00       ` William Lee Irwin III
2002-06-03 10:00         ` David S. Miller
2002-06-03 11:07           ` William Lee Irwin III

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.