1
linux/drivers/md
Dan Williams e4d84909dd raid5: fix 2 bugs in ops_complete_biofill
1/ ops_complete_biofill tried to avoid calling handle_stripe since all the
state necessary to return read completions is available.  However the
process of determining whether more read requests are pending requires
locking the stripe (to block add_stripe_bio from updating dev->toead).
ops_complete_biofill can run in tasklet context, so rather than upgrading
all the stripe locks from spin_lock to spin_lock_bh this patch just
unconditionally reschedules handle_stripe after completing the read
request.

2/ ops_complete_biofill needlessly qualified processing R5_Wantfill with
dev->toread.  The result being that the 'biofill' pending bit is cleared
before handling the pending read-completions on dev->read.  R5_Wantfill can
be unconditionally handled because the 'biofill' pending bit prevents new
R5_Wantfill requests from being seen by ops_run_biofill and
ops_complete_biofill.

Found-by: Yuri Tikhonov <yur@emcraft.com>
[neilb@suse.de: simpler fix for bug 1 than moving code]
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2007-09-24 13:23:35 -07:00
..
raid6test
.gitignore gitignore: misc files 2006-01-01 22:21:50 +01:00
bitmap.c md: change bitmap_unplug and others to void functions 2007-07-17 10:23:15 -07:00
dm-bio-list.h Fix kernel buuild with (CONFIG_COMPAT && ! CONFIG_BLOCK) 2007-09-14 13:56:47 -07:00
dm-bio-record.h
dm-crypt.c dm io: fix panic on large request 2007-07-21 17:49:14 -07:00
dm-delay.c dm delay: cleanup 2007-07-12 15:01:08 -07:00
dm-emc.c [PATCH] struct path: rename DM's struct path 2006-12-08 08:28:40 -08:00
dm-exception-store.c dm: fix memory leak in dm_create_persistent() when starting metadata update thread fails 2007-07-18 08:38:22 -07:00
dm-hw-handler.c BUG_ON() Conversion in md/dm-hw-handler.c 2006-03-24 18:36:27 +01:00
dm-hw-handler.h dm mpath: log device name 2007-05-09 12:30:46 -07:00
dm-io.c dm io: fix panic on large request 2007-07-12 15:01:08 -07:00
dm-io.h dm io: remove old interface 2007-05-09 12:30:47 -07:00
dm-ioctl.c [PATCH] mark struct file_operations const 4 2007-02-12 09:48:45 -08:00
dm-linear.c [PATCH] dm: map and endio symbolic return codes 2006-12-08 08:29:09 -08:00
dm-log.c dm log: fix resume failed log device 2007-05-09 12:30:48 -07:00
dm-log.h [PATCH] dm: log: rename complete_resync_work 2006-12-08 08:29:09 -08:00
dm-mpath-rdac.c dm-mpath-rdac: don't stomp on a requests transfer bit 2007-08-27 16:15:44 -07:00
dm-mpath.c dm: disable barriers 2007-07-12 15:01:08 -07:00
dm-mpath.h [PATCH] struct path: rename DM's struct path 2006-12-08 08:28:40 -08:00
dm-path-selector.c BUG_ON() Conversion in md/dm-path-selector.c 2006-03-26 18:21:58 +02:00
dm-path-selector.h [PATCH] struct path: rename DM's struct path 2006-12-08 08:28:40 -08:00
dm-raid1.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
dm-round-robin.c dm: remove duplicate module name from error msgs 2007-07-12 15:01:08 -07:00
dm-snap.c dm: disable barriers 2007-07-12 15:01:08 -07:00
dm-snap.h dm: use kmem_cache macro 2007-07-12 15:01:08 -07:00
dm-stripe.c [PATCH] dm: map and endio symbolic return codes 2006-12-08 08:29:09 -08:00
dm-table.c [BLOCK] Get rid of request_queue_t typedef 2007-07-24 09:28:11 +02:00
dm-target.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm-zero.c [PATCH] dm: map and endio symbolic return codes 2006-12-08 08:29:09 -08:00
dm.c Fix remap handling by blktrace 2007-08-11 22:34:48 +02:00
dm.h dm: add ratelimit logging macros 2007-07-12 15:01:08 -07:00
faulty.c [BLOCK] Get rid of request_queue_t typedef 2007-07-24 09:28:11 +02:00
Kconfig DM_MULTIPATH_RDAC: "scsi_normalize_sense" undefined 2007-08-24 16:10:39 -07:00
kcopyd.c dm: use kmem_cache macro 2007-07-12 15:01:08 -07:00
kcopyd.h
linear.c [BLOCK] Get rid of request_queue_t typedef 2007-07-24 09:28:11 +02:00
Makefile Merge branch 'ioat-md-accel-for-linus' of git://lost.foo-projects.org/~dwillia2/git/iop 2007-07-13 10:52:27 -07:00
md.c [BLOCK] Get rid of request_queue_t typedef 2007-07-24 09:28:11 +02:00
mktables.c
multipath.c [BLOCK] Get rid of request_queue_t typedef 2007-07-24 09:28:11 +02:00
raid0.c [BLOCK] Get rid of request_queue_t typedef 2007-07-24 09:28:11 +02:00
raid1.c md: correctly update sysfs when a raid1 is reshaped 2007-08-22 19:52:46 -07:00
raid5.c raid5: fix 2 bugs in ops_complete_biofill 2007-09-24 13:23:35 -07:00
raid6.h
raid6algos.c [PATCH] drivers/md/raid6algos.c: fix a NULL dereference 2006-06-23 07:43:08 -07:00
raid6altivec.uc
raid6int.uc
raid6mmx.c [PATCH] md: RAID6: clean up CPUID and FPU enter/exit code 2007-03-01 14:53:36 -08:00
raid6recov.c
raid6sse1.c [PATCH] md: RAID6: clean up CPUID and FPU enter/exit code 2007-03-01 14:53:36 -08:00
raid6sse2.c [PATCH] md: RAID6: clean up CPUID and FPU enter/exit code 2007-03-01 14:53:36 -08:00
raid6x86.h [PATCH] md: RAID6: clean up CPUID and FPU enter/exit code 2007-03-01 14:53:36 -08:00
raid10.c md: handle writes to broken raid10 arrays gracefully 2007-07-31 15:39:38 -07:00
unroll.pl