All of lore.kernel.org
 help / color / mirror / Atom feed
* New lockless pagecache
@ 2005-09-02  6:25 ` Nick Piggin
  0 siblings, 0 replies; 56+ messages in thread
From: Nick Piggin @ 2005-09-02  6:25 UTC (permalink / raw)
  To: Linux Memory Management, linux-kernel

There were a number of problems with the old lockless pagecache:

- page_count of free pages was unstable, which meant an extra atomic
   operation when allocating a new page (had to use get_page instead
   of set_page_count).

- This meant a new page flag PG_free had to be introduced.

- Also needed a spin loop and memory barriers added to the page
   allocator to prevent a free page with a speculative reference on
   it from being allocated.

- This introduced the requirement that interrupts be disabled in
   page_cache_get_speculative to prevent deadlock, which was very
   disheartening.

- Too complex.

- To cap it off, there was an "unsolvable" race whereby a second
   page_cache_get_speculative would not be able to detect it had
   picked up a free page, and try to free it again.

The elegant solution was right under my nose the whole time.
I introduced an atomic_cmpxchg and use that to ensure we don't
touch ->_count of a free page. This solves all the above problems.

I think this is getting pretty stable. No guarantees of course,
but it would be great if anyone gave it a test.

-- 
SUSE Labs, Novell Inc.

Send instant messages to your online friends http://au.messenger.yahoo.com 

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

end of thread, other threads:[~2005-09-16  3:12 UTC | newest]

Thread overview: 56+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-02  6:25 New lockless pagecache Nick Piggin
2005-09-02  6:25 ` Nick Piggin
2005-09-02  6:28 ` [PATCH 2.6.13] lockless pagecache 1/7 Nick Piggin
2005-09-02  6:29   ` [PATCH 2.6.13] lockless pagecache 2/7 Nick Piggin
2005-09-02  6:30     ` [PATCH 2.6.13] lockless pagecache 3/7 Nick Piggin
2005-09-02  6:30       ` [PATCH 2.6.13] lockless pagecache 4/7 Nick Piggin
2005-09-02  6:31         ` [PATCH 2.6.13] lockless pagecache 5/7 Nick Piggin
2005-09-02  6:32           ` [PATCH 2.6.13] lockless pagecache 6/7 Nick Piggin
2005-09-02  6:32             ` [PATCH 2.6.13] lockless pagecache 7/7 Nick Piggin
2005-09-09 13:00               ` Christoph Lameter
2005-09-09 13:00                 ` Christoph Lameter
2005-09-09 15:23                 ` Nick Piggin
2005-09-09 15:23                   ` Nick Piggin
2005-09-09  5:36           ` [PATCH 2.6.13] lockless pagecache 5/7 Christoph Lameter
2005-09-09  5:36             ` Christoph Lameter
2005-09-09  6:22             ` Nick Piggin
2005-09-09  6:22               ` Nick Piggin
2005-09-02 13:08     ` [PATCH 2.6.13] lockless pagecache 2/7 Alan Cox
2005-09-02 13:08       ` Alan Cox
2005-09-02 20:41       ` Andi Kleen
2005-09-02 20:41         ` Andi Kleen
2005-09-02 21:12         ` David S. Miller
2005-09-02 21:12           ` David S. Miller, Andi Kleen
2005-09-02 21:43           ` Nick Piggin
2005-09-02 21:43             ` Nick Piggin
2005-09-02 21:22         ` Nick Piggin
2005-09-02 21:22           ` Nick Piggin
2005-09-02 21:31           ` David S. Miller
2005-09-02 21:31             ` David S. Miller, Nick Piggin
2005-09-02 21:47             ` Nick Piggin
2005-09-02 21:47               ` Nick Piggin
2005-09-02 21:57               ` David S. Miller
2005-09-02 21:57                 ` David S. Miller, Nick Piggin
2005-09-02 23:57           ` Alan Cox
2005-09-02 23:57             ` Alan Cox
2005-09-03  1:40             ` Nick Piggin
2005-09-03  1:40               ` Nick Piggin
2005-09-03 17:31               ` Alan Cox
2005-09-03 17:31                 ` Alan Cox
2005-09-04  1:01                 ` Nick Piggin
2005-09-04  1:01                   ` Nick Piggin
2005-09-04  8:20                   ` Alan Cox
2005-09-04  8:20                     ` Alan Cox
2005-09-06  1:03                     ` Nick Piggin
2005-09-06  1:03                       ` Nick Piggin
2005-09-02 18:26     ` Christoph Lameter
2005-09-02 18:26       ` Christoph Lameter
2005-09-02 21:26       ` Nick Piggin
2005-09-02 21:26         ` Nick Piggin
2005-09-03  1:33         ` Christoph Lameter
2005-09-03  1:33           ` Christoph Lameter
2005-09-02  6:45 ` New lockless pagecache Nick Piggin
2005-09-02  6:45   ` Nick Piggin
2005-09-15 19:50   ` Alok kataria
2005-09-16  3:12     ` Nick Piggin
2005-09-16  3:12       ` Nick Piggin

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.