Files
linux/drivers/md
NeilBrown 67f455486d md/raid56: Don't perform reads to support writes until stripe is ready.
If it is found that we need to pre-read some blocks before a write
can succeed, we normally set STRIPE_DELAYED and don't actually perform
the read until STRIPE_PREREAD_ACTIVE subsequently gets set.

However for a degraded RAID6 we currently perform the reads as soon
as we see that a write is pending.  This significantly hurts
throughput.

So:
 - when handle_stripe_dirtying find a block that it wants on a device
   that is failed, set STRIPE_DELAY, instead of doing nothing, and
 - when fetch_block detects that a read might be required to satisfy a
   write, only perform the read if STRIPE_PREREAD_ACTIVE is set,
   and if we would actually need to read something to complete the write.

This also helps RAID5, though less often as RAID5 supports a
read-modify-write cycle.  For RAID5 the read is performed too early
only if the write is not a full 4K aligned write (i.e. no an
R5_OVERWRITE).

Also clean up a couple of horrible bits of formatting.

Reported-by: Patrik Horník <patrik@dsl.sk>
Signed-off-by: NeilBrown <neilb@suse.de>
2014-05-29 16:59:46 +10:00
..
2013-03-01 22:45:51 +00:00
2013-03-01 22:45:51 +00:00
2014-01-14 23:23:03 -05:00
2013-11-23 22:33:47 -08:00
2013-11-09 18:20:22 -05:00
2013-08-23 09:02:13 -04:00
2013-11-23 22:33:47 -08:00
2012-07-30 17:25:16 -07:00
2013-09-05 20:46:06 -04:00
2013-11-23 22:33:47 -08:00
2013-11-23 22:33:47 -08:00
2014-01-14 23:23:04 -05:00
2013-03-01 22:45:47 +00:00
2014-03-27 16:56:24 -04:00
2014-03-27 16:56:24 -04:00
2013-11-23 22:33:47 -08:00
2014-03-27 16:56:23 -04:00
2013-11-23 22:33:57 -08:00
2014-03-27 16:56:23 -04:00
2013-11-23 22:33:47 -08:00
2013-11-23 22:33:57 -08:00