linux/mm
Pavel Mironchik 0b1d647a02 [PATCH] dm: work around mempool_alloc, bio_alloc_bioset deadlocks
This patch works around a complex dm-related deadlock/livelock down in the
mempool allocator.

Alasdair said:

  Several dm targets suffer from this.

  Mempools are not yet used correctly everywhere in device-mapper: they can
  get shared when devices are stacked, and some targets share them across
  multiple instances.  I made fixing this one of the prerequisites for this
  patch:

    md-dm-reduce-stack-usage-with-stacked-block-devices.patch

  which in some cases makes people more likely to hit the problem.

  There's been some progress on this recently with (unfinished) dm-crypt
  patches at:

    http://www.kernel.org/pub/linux/kernel/people/agk/patches/2.6/editing/
      (dm-crypt-move-io-to-workqueue.patch plus dependencies)

and:

  I've no problems with a temporary workaround like that, but Milan Broz (a
  new Redhat developer in the Czech Republic) has started reviewing all the
  mempool usage in device-mapper so I'm expecting we'll soon have a proper fix
  for this associated problems.  [He's back from holiday at the start of next
  week.]

For now, this sad-but-safe little patch will allow the machine to recover.

[akpm@osdl.org: rewrote changelog]
Cc: Alasdair G Kergon <agk@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-01 11:39:09 -07:00
..
bootmem.c [PATCH] mm/bootmem.c: EXPORT_UNUSED_SYMBOL 2006-07-10 13:24:17 -07:00
fadvise.c [PATCH] fadvise() make POSIX_FADV_NOREUSE a no-op 2006-08-06 08:57:47 -07:00
filemap_xip.c
filemap.c [PATCH] MM: Remove rogue readahead printk 2006-07-29 20:59:55 -07:00
filemap.h
fremap.c
highmem.c [PATCH] zoned vm counters: conversion of nr_bounce to per zone counter 2006-06-30 11:25:36 -07:00
hugetlb.c
internal.h
Kconfig
madvise.c
Makefile [PATCH] zoned vm counters: create vmstat.c/.h from page_alloc.c/.h 2006-06-30 11:25:34 -07:00
memory_hotplug.c [PATCH] memory hotadd fixes: enhance collision check 2006-08-06 08:57:49 -07:00
memory.c [PATCH] per-task-delay-accounting: sync block I/O and swapin delay collection 2006-07-14 21:53:56 -07:00
mempolicy.c [PATCH] Use Zoned VM Counters for NUMA statistics 2006-06-30 11:25:36 -07:00
mempool.c [PATCH] dm: work around mempool_alloc, bio_alloc_bioset deadlocks 2006-09-01 11:39:09 -07:00
migrate.c
mincore.c
mlock.c
mmap.c [PATCH] zoned vm counters: conversion of nr_pagecache to per zone counter 2006-06-30 11:25:34 -07:00
mmzone.c [PATCH] mm/mmzone.c: EXPORT_UNUSED_SYMBOL 2006-07-10 13:24:17 -07:00
mprotect.c
mremap.c [PATCH] lockdep: annotate mm 2006-07-03 15:27:07 -07:00
msync.c
nommu.c [PATCH] nommu: export two symbols for drivers to use 2006-07-14 21:53:53 -07:00
oom_kill.c [PATCH] sched: cleanup, remove task_t, convert to struct task_struct 2006-07-03 15:27:11 -07:00
page_alloc.c [PATCH] ZVC/zone_reclaim: Leave 1% of unmapped pagecache pages for file I/O 2006-07-03 15:26:59 -07:00
page_io.c [PATCH] Light weight event counters 2006-06-30 11:25:36 -07:00
page-writeback.c [PATCH] zoned vm counters: remove useless struct wbs 2006-06-30 11:25:36 -07:00
pdflush.c
prio_tree.c
readahead.c
rmap.c [PATCH] zoned vm counters: split NR_ANON_PAGES off from NR_FILE_MAPPED 2006-06-30 11:25:35 -07:00
shmem.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2006-06-30 15:39:30 -07:00
slab.c [PATCH] Fix kmem_cache_alloc() been documented twice 2006-07-31 13:28:43 -07:00
slob.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
sparse.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
swap_state.c [PATCH] lockdep: locking init debugging improvement 2006-07-03 15:27:02 -07:00
swap.c [PATCH] fuse: fix error case in fuse_readpages 2006-08-14 12:54:29 -07:00
swapfile.c [PATCH] swsusp: Fix swap_type_of 2006-08-27 11:01:28 -07:00
thrash.c
tiny-shmem.c
truncate.c
util.c
vmalloc.c [PATCH] mm: fix oom roll-back of __vmalloc_area_node 2006-07-14 21:53:51 -07:00
vmscan.c [PATCH] ZVC/zone_reclaim: Leave 1% of unmapped pagecache pages for file I/O 2006-07-03 15:26:59 -07:00
vmstat.c [PATCH] ZVC: Scale thresholds depending on the size of the system 2006-09-01 11:39:08 -07:00