NeilBrown
6ed3003c19
md: fix an occasional deadlock in raid5
...
raid5's 'make_request' function calls generic_make_request on underlying
devices and if we run out of stripe heads, it could end up waiting for one of
those requests to complete. This is bad as recursive calls to
generic_make_request go on a queue and are not even attempted until
make_request completes.
So: don't make any generic_make_request calls in raid5 make_request until all
waiting has been done. We do this by simply setting STRIPE_HANDLE instead of
calling handle_stripe().
If we need more stripe_heads, raid5d will get called to process the pending
stripe_heads which will call generic_make_request from a
This change by itself causes a performance hit. So add a change so that
raid5_activate_delayed is only called at unplug time, never in raid5. This
seems to bring back the performance numbers. Calling it in raid5d was
sometimes too soon...
Neil said:
How about we queue it for 2.6.25-rc1 and then about when -rc2 comes out,
we queue it for 2.6.24.y?
Acked-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Neil Brown <neilb@suse.de>
Tested-by: dean gaudet <dean@arctic.org>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-06 10:41:19 -08:00
..
acorn /char
acpi
latency.c: use QoS infrastructure
2008-02-05 09:44:22 -08:00
amba
ata
iommu sg merging: sata_inic162x: use pci_set_dma_max_seg_size
2008-02-05 09:44:11 -08:00
atm
auxdisplay
base
register_cpu __devinit or __cpuinit
2008-02-06 10:41:01 -08:00
block
Atari floppy: Rename disk_type to atari_disk_type
2008-02-06 10:41:10 -08:00
bluetooth
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
2008-02-05 10:09:07 -08:00
cdrom
drivers/cdrom/cdrom.c: simplify logic in cdrom_release()
2008-02-06 10:41:10 -08:00
char
ip27-rtc: convert ioctl to unlocked_ioctl
2008-02-06 10:41:14 -08:00
clocksource
connector
cpufreq
cpuidle
pm qos infrastructure and interface
2008-02-05 09:44:22 -08:00
crypto
dca
dio
dio: ARRAY_SIZE() cleanup
2008-02-05 09:44:23 -08:00
dma
edac
drivers/edac/: Spelling fixes
2008-02-03 17:12:34 +02:00
eisa
firewire
firmware
dcdbas: add DMI-based module autloading
2008-02-06 10:41:01 -08:00
gpio
gpio: handle pca953{4,5,6,7,8} too
2008-02-06 10:41:15 -08:00
hid
hwmon
i2c
deprecate obsolete pca9539 driver
2008-02-05 09:44:13 -08:00
ide
cleanup after APUS removal
2008-02-06 10:41:01 -08:00
ieee1394
ieee1394: sbp2: fix bogus s/g access change
2008-02-02 13:48:16 +01:00
infiniband
RDMA/nes: Add a driver for NetEffect RNICs
2008-02-04 20:20:45 -08:00
input
Remove pointless casts from void pointers
2008-02-06 10:41:01 -08:00
isdn
drivers/isdn/hardware/eicon/debug.c: fix uninitialized var warning
2008-02-06 10:41:12 -08:00
leds
leds: add possibility to remove leds classdevs during suspend/resume
2008-02-05 09:44:23 -08:00
lguest
virtio: reset function
2008-02-04 23:50:03 +11:00
macintosh
ppc: fix #ifdef-s in mediabay driver (take 2)
2008-02-06 02:57:50 +01:00
mca
md
md: fix an occasional deadlock in raid5
2008-02-06 10:41:19 -08:00
media
scheduled OSS driver removal
2008-02-06 10:41:02 -08:00
message
drivers/message/: Spelling fixes
2008-02-03 17:21:01 +02:00
mfd
misc
phantom: don't grab other devices
2008-02-06 10:41:10 -08:00
mmc
mtd
Claim maintainership for block2mtd and update email addresses
2008-02-06 10:41:09 -08:00
net
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
2008-02-05 10:09:07 -08:00
nubus
nubus: kill drivers/nubus/nubus_syms.c
2008-02-05 09:44:23 -08:00
of
oprofile
parisc
iommu sg merging: parisc: make iommu respect the segment size limits
2008-02-05 09:44:10 -08:00
parport
parport_pc: detection for SuperIO IT87XX POST
2008-02-06 10:41:08 -08:00
pci
Genericizing iova.[ch]
2008-02-06 10:41:01 -08:00
pcmcia
drivers/pcmcia: add missing pci_dev_get
2008-02-05 09:44:09 -08:00
pnp
power
apm_power: check I.intval for zero value, we use it as the divisor
2008-02-02 02:44:34 +03:00
ps3
ps3: use symbolic names for video modes
2008-02-06 10:41:17 -08:00
rapidio
rtc
rtc: at91sam9 RTC support (RTT and/or RTC)
2008-02-06 10:41:14 -08:00
s390
calibrate_delay() must be __cpuinit
2008-02-06 10:41:08 -08:00
sbus
scsi
cleanup after APUS removal
2008-02-06 10:41:01 -08:00
serial
SC26XX: New serial driver for SC2681 uarts
2008-02-06 10:41:06 -08:00
sh
sn
spi
spi: remove more dev->power.power_state usage
2008-02-06 10:41:11 -08:00
ssb
drivers/ssb/: Spelling fixes
2008-02-03 17:30:25 +02:00
tc
telephony
uio
uio: nopage
2008-02-06 10:41:07 -08:00
usb
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6
2008-02-02 14:29:33 +11:00
video
fbcon: fix color generation for monochrome framebuffer
2008-02-06 10:41:18 -08:00
virtio
virtio: balloon driver
2008-02-04 23:50:13 +11:00
w1
w1-gpio: add GPIO w1 bus master driver
2008-02-06 10:41:15 -08:00
watchdog
drivers/watchdog/: Spelling fixes
2008-02-03 17:32:52 +02:00
xen
zorro
Kconfig
gpiolib: add drivers/gpio directory
2008-02-05 09:44:12 -08:00
Makefile
gpiolib: add drivers/gpio directory
2008-02-05 09:44:12 -08:00