kernel-ark/drivers
NeilBrown 4e78064f42 md: Fix possible deadlock with multiple mempool allocations.
It is not safe to allocate from a mempool while holding an item
previously allocated from that mempool as that can deadlock when the
mempool is close to exhaustion.

So don't use a bio list to collect the bios to write to multiple
devices in raid1 and raid10.
Instead queue each bio as it becomes available so an unplug will
activate all previously allocated bios and so a new bio has a chance
of being allocated.

This means we must set the 'remaining' count to '1' before submitting
any requests, then when all are submitted, decrement 'remaining' and
possible handle the write completion at that point.

Reported-by: Torsten Kaiser <just.for.lkml@googlemail.com>
Tested-by: Torsten Kaiser <just.for.lkml@googlemail.com>
Signed-off-by: NeilBrown <neilb@suse.de>
2010-10-28 17:34:07 +11:00
..
accessibility
acpi Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-10-26 17:28:37 -07:00
amba ARM: 6368/1: move the PrimeCell IDs to use macros 2010-10-08 10:02:27 +01:00
ata Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
atm Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
auxdisplay
base Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 2010-10-26 17:31:05 -07:00
block mm: strictly nested kmap_atomic() 2010-10-26 16:52:08 -07:00
bluetooth Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2010-10-23 11:47:02 -07:00
cdrom block: autoconvert trivial BKL users to private mutex 2010-10-05 15:01:10 +02:00
char Merge branch 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2010-10-26 18:57:59 -07:00
clocksource
connector
cpufreq [CPUFREQ] add sampling_down_factor tunable to improve ondemand performance 2010-10-22 11:44:47 -04:00
cpuidle
crypto replace nested max/min macros with {max,min}3 macro 2010-10-26 16:52:12 -07:00
dca
dio
dma Merge branch 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl 2010-10-22 10:52:56 -07:00
edac Merge branch 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/i7core 2010-10-26 10:13:48 -07:00
eisa
firewire Merge branch 'ieee1394-removal' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2010-10-25 08:05:29 -07:00
firmware Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
gpio pca953x: pca953x driver fixes for x86 mrst 2010-10-26 16:52:15 -07:00
gpu Merge branch 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2010-10-26 18:57:59 -07:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2010-10-25 07:59:01 -07:00
hwmon hwmon: lis3: Release resources in case of failure 2010-10-25 14:44:59 -07:00
i2c Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2010-10-25 07:51:49 -07:00
ide Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
idle Merge branch 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6 2010-10-26 17:28:07 -07:00
ieee802154
infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2010-10-26 17:58:44 -07:00
input Merge branch 'davinci-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci 2010-10-25 10:59:31 -07:00
isdn Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
leds leds: add LED driver for Big Network series LEDs 2010-10-07 14:02:12 -04:00
lguest llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
macintosh replace nested max/min macros with {max,min}3 macro 2010-10-26 16:52:12 -07:00
mca
md md: Fix possible deadlock with multiple mempool allocations. 2010-10-28 17:34:07 +11:00
media Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2010-10-25 07:59:01 -07:00
memstick block: autoconvert trivial BKL users to private mutex 2010-10-05 15:01:10 +02:00
message Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2010-10-22 17:34:15 -07:00
mfd Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2010-10-25 08:32:05 -07:00
misc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2010-10-26 17:58:44 -07:00
mmc at91/atmel-mci: inclusion of sd/mmc driver in at91sam9g45 chip and board 2010-10-26 11:32:49 +02:00
mtd Merge branch 'davinci-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci 2010-10-25 10:59:31 -07:00
net Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2010-10-26 17:54:22 -07:00
nubus
of of/mips: Cleanup some include directives/files. 2010-10-21 11:10:11 -06:00
oprofile fs: do not assign default i_ino in new_inode 2010-10-25 21:26:11 -04:00
parisc Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
parport Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
pci Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
pcmcia Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
platform Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86 2010-10-25 08:28:13 -07:00
pnp Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-10-26 17:28:37 -07:00
power Merge git://git.infradead.org/battery-2.6 2010-10-26 10:14:23 -07:00
pps
ps3
rapidio
regulator Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging 2010-10-07 13:44:30 -07:00
rtc AT91: rtc: enable built-in RTC in Kconfig for at91sam9g45 family 2010-10-26 11:32:49 +02:00
s390 [S390] cleanup facility list handling 2010-10-25 16:10:21 +02:00
sbus Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-10-25 08:19:14 -07:00
scsi Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
serial Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2010-10-25 13:46:56 -07:00
sfi
sh sh: clkfwk: Shuffle around to match the intc split up. 2010-10-18 21:32:58 +09:00
sn
spi Merge branch 'for-next' of git://android.git.kernel.org/kernel/tegra 2010-10-25 18:42:06 -07:00
ssb
staging fs: add sync_inode_metadata 2010-10-25 21:18:19 -04:00
tc
telephony Merge branch 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl 2010-10-22 10:52:56 -07:00
thermal
uio Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
usb fix braino in fs: do not assign default i_ino in new_inode 2010-10-26 20:25:45 -07:00
uwb uwb: Remove the WLP subsystem and drivers 2010-10-25 14:03:45 +01:00
vhost Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2010-10-23 11:47:02 -07:00
video Merge branch 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2010-10-26 18:57:59 -07:00
virtio
vlynq MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
w1
watchdog Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2010-10-25 13:46:56 -07:00
xen Merge branches 'upstream/xenfs' and 'upstream/core' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen 2010-10-26 18:20:19 -07:00
zorro zorro: Fix device_register() error handling 2010-10-22 09:43:25 +02:00
Kconfig
Makefile Merge branch 'ieee1394-removal' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2010-10-25 08:05:29 -07:00