linux/drivers
Dan Williams 6c55be8b96 raid5: fix unending write sequence
<debug output from Joel's system>
handling stripe 7629696, state=0x14 cnt=1, pd_idx=2 ops=0:0:0
check 5: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800ffcffcc0 written 0000000000000000
check 4: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800fdd4e360 written 0000000000000000
check 3: state 0x1 toread 0000000000000000 read 0000000000000000 write 0000000000000000 written 0000000000000000
check 2: state 0x1 toread 0000000000000000 read 0000000000000000 write 0000000000000000 written 0000000000000000
check 1: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800ff517e40 written 0000000000000000
check 0: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800fd4cae60 written 0000000000000000
locked=4 uptodate=2 to_read=0 to_write=4 failed=0 failed_num=0
for sector 7629696, rmw=0 rcw=0
</debug>

These blocks were prepared to be written out, but were never handled in
ops_run_biodrain(), so they remain locked forever.  The operations flags
are all clear which means handle_stripe() thinks nothing else needs to be
done.

This state suggests that the STRIPE_OP_PREXOR bit was sampled 'set' when it
should not have been.  This patch cleans up cases where the code looks at
sh->ops.pending when it should be looking at the consistent stack-based
snapshot of the operations flags.

Report from Joel:
	Resync done. Patch fix this bug.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Tested-by: Joel Bertrand <joel.bertrand@systella.fr>
Cc: <stable@kernel.org>
Cc: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-11-14 18:45:39 -08:00
..
acorn/char
acpi acpi: make ACPI_PROCFS default to y 2007-11-14 18:45:39 -08:00
amba
ata libata: Don't fail device revalidation for bad _GTF methods 2007-11-10 00:31:27 -05:00
atm Eliminate pointless casts from void* in a few driver irq handlers. 2007-10-23 19:53:16 -04:00
auxdisplay
base cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
block paride: pf driver fixes 2007-11-14 18:45:39 -08:00
bluetooth
cdrom SG: audit of drivers that use blk_rq_map_sg() 2007-10-24 13:21:21 +02:00
char cm40x0_cs.c: fix debug macros 2007-11-14 18:45:37 -08:00
clocksource
connector [CONNECTOR]: Fix a spurious kfree_skb() call 2007-10-30 21:29:47 -07:00
cpufreq
cpuidle cpuidle: remove unused exports 2007-10-29 17:27:50 -04:00
crypto [CRYPTO] users: Fix up scatterlist conversion errors 2007-10-27 00:52:07 -07:00
dca
dio
dma dmaengine: fix broken device refcounting 2007-11-14 18:45:39 -08:00
edac
eisa
firewire firewire: fw-sbp2: fix refcounting 2007-11-07 01:59:28 +01:00
firmware
hid HID: Don't access input_dev->private directly 2007-10-31 13:30:35 +01:00
hwmon hwmon: (i5k_amb) Convert macros to C functions 2007-11-08 08:42:47 -05:00
i2c
ide ide: remove stale/incorrect comment from setup-pci.c 2007-11-13 22:09:16 +01:00
ieee1394 ieee1394: iso and async streams: s/g list fix 2007-11-04 14:31:16 +01:00
infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2007-10-30 15:26:56 -07:00
input Use i8253.c lock for PC speaker on MIPS, too. 2007-11-02 19:39:18 -07:00
isdn i4l: errors with assignments in if 2007-11-05 15:12:31 -08:00
kvm KVM: SVM: Intercept the 'invd' and 'wbinvd' instructions 2007-11-08 12:05:45 +02:00
leds leds: bugfixes for leds-gpio 2007-11-05 21:54:41 +00:00
lguest lguest_user.c: fix memory leak 2007-11-14 18:45:38 -08:00
macintosh [POWERPC] windfarm: Fix windfarm thread freezer interaction 2007-11-08 14:15:34 +11:00
mca
md raid5: fix unending write sequence 2007-11-14 18:45:39 -08:00
media V4L/DVB (6548): pvrusb2: Fix oops on module removal 2007-11-04 21:41:30 -02:00
message i2o: debug messages corrected 2007-11-05 15:12:31 -08:00
mfd
misc drivers/misc: Move misplaced pci_dev_put's 2007-11-14 18:45:39 -08:00
mmc Add missing "\n" to log message 2007-11-10 11:59:49 +01:00
mtd Eliminate pointless casts from void* in a few driver irq handlers. 2007-10-23 19:53:16 -04:00
net [NET]: Move unneeded data to initdata section. 2007-11-13 03:23:50 -08:00
nubus
of
oprofile oProfile: oops when profile_pc() returns ~0LU 2007-11-14 18:45:37 -08:00
parisc
parport [PARPORT] Remove unused 'irq' argument from parport irq functions 2007-10-23 19:53:16 -04:00
pci PCI: Add Kconfig option to disable deprecated pci_find_* API 2007-11-05 13:35:17 -08:00
pcmcia
pnp
power
ps3
rapidio
rtc rtc-ds1307 exports NVRAM 2007-11-14 18:45:36 -08:00
s390 [S390] Fix priority mistakes in drivers/s390/cio/cmf.c 2007-11-05 11:10:17 +01:00
sbus
scsi PCI: Add Kconfig option to disable deprecated pci_find_* API 2007-11-05 13:35:17 -08:00
serial atmel_serial build warnings begone 2007-11-14 18:45:39 -08:00
sh superhyway: Handle device_register() retval properly. 2007-11-07 11:13:55 +09:00
sn
spi spi: fix error paths on txx9spi_probe 2007-11-14 18:45:39 -08:00
ssb ssb: Fix PCMCIA-host lowlevel bus access 2007-11-10 22:01:53 -08:00
tc
telephony telephony: phonedev panics if unregistering device not registered [Bug 9266] 2007-11-05 15:12:33 -08:00
uio
usb cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
video video/sis/: fix negative array index 2007-11-14 18:45:38 -08:00
virtio virtio: Force use of power-of-two for descriptor ring sizes 2007-11-12 13:59:40 +11:00
w1 W1: fix memset size error 2007-11-14 18:45:36 -08:00
watchdog Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog 2007-11-02 19:36:26 -07:00
xen
zorro
Kconfig
Makefile Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-10-23 16:37:29 -07:00