linux/mm
Nick Piggin 20a77776c2 [PATCH] mempool: simplify alloc
Mempool is pretty clever.  Looks too clever for its own good :) It
shouldn't really know so much about page reclaim internals.

- don't guess about what effective page reclaim might involve.

- don't randomly flush out all dirty data if some unlikely thing
  happens (alloc returns NULL). page reclaim can (sort of :P) handle
  it.

I think the main motivation is trying to avoid pool->lock at all costs.
However the first allocation is attempted with __GFP_WAIT cleared, so it
will be 'can_try_harder' if it hits the page allocator.  So if allocation
still fails, then we can probably afford to hit the pool->lock - and what's
the alternative?  Try page reclaim and hit zone->lru_lock?

A nice upshot is that we don't need to do any fancy memory barriers or do
(intentionally) racy access to pool-> fields outside the lock.

Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01 08:58:37 -07:00
..
bootmem.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fadvise.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
filemap.c [PATCH] generic_file_buffered_write fixes 2005-05-01 08:58:35 -07:00
fremap.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
highmem.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hugetlb.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
internal.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
madvise.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
memory.c [PATCH] freepgt: hugetlb_free_pgd_range 2005-04-19 13:29:16 -07:00
mempolicy.c [PATCH] mempolicy.c GFP fix 2005-04-24 12:28:34 -07:00
mempool.c [PATCH] mempool: simplify alloc 2005-05-01 08:58:37 -07:00
mincore.c [PATCH] freepgt: sys_mincore ignore FIRST_USER_PGD_NR 2005-04-19 13:29:20 -07:00
mlock.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mmap.c [PATCH] RLIMIT_AS checking fix 2005-05-01 08:58:35 -07:00
mprotect.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mremap.c [PATCH] RLIMIT_AS checking fix 2005-05-01 08:58:35 -07:00
msync.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nommu.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
oom_kill.c [PATCH] oom-killer disable for iscsi/lvm2/multipath userland critical sections 2005-04-16 15:24:05 -07:00
page_alloc.c [PATCH] mempool: NOMEMALLOC and NORETRY 2005-05-01 08:58:36 -07:00
page_io.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
page-writeback.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pdflush.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
prio_tree.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
readahead.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rmap.c [PATCH] mm: rmap.c cleanup 2005-05-01 08:58:36 -07:00
shmem.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
slab.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
swap_state.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
swap.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
swapfile.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
thrash.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
tiny-shmem.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
truncate.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vmalloc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vmscan.c [PATCH] vmscan: pageout(): remove unneeded test 2005-04-16 15:24:06 -07:00