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
..
2007-07-31 15:39:39 -07:00
2007-09-20 16:07:33 -04:00
2007-08-22 19:52:46 -07:00
2007-07-21 18:37:12 -07:00
2007-07-16 09:05:42 -07:00
2007-09-09 10:38:37 -04:00
2007-09-09 22:29:14 +02:00
2007-09-17 00:58:40 -04:00
2007-09-11 17:21:51 +02:00
2007-07-20 14:25:51 +10:00
2007-07-31 15:39:37 -07:00
2007-09-11 17:21:19 -07:00
2007-06-28 19:19:20 +10:00
2007-09-17 16:47:07 -07:00
2007-09-11 17:21:19 -07:00
2007-07-18 08:38:22 -07:00
2007-07-18 15:57:16 -07:00
2007-09-19 11:24:18 -07:00
2007-07-26 11:35:17 -07:00
2007-07-20 13:39:59 +10:00
2007-07-29 18:58:39 +00:00