summaryrefslogtreecommitdiffstats
path: root/drivers/md/raid5.h
diff options
context:
space:
mode:
authorNeilBrown2011-12-23 00:17:53 +0100
committerNeilBrown2011-12-23 00:17:53 +0100
commit977df36255ab0ea78b048cbc9055300c586dcc91 (patch)
tree6d89e08ebe7702ccbb5e160b99ea2440ab08fcda /drivers/md/raid5.h
parentmd/raid5: allow removal for failed replacement devices. (diff)
downloadkernel-qcow2-linux-977df36255ab0ea78b048cbc9055300c586dcc91.tar.gz
kernel-qcow2-linux-977df36255ab0ea78b048cbc9055300c586dcc91.tar.xz
kernel-qcow2-linux-977df36255ab0ea78b048cbc9055300c586dcc91.zip
md/raid5: writes should get directed to replacement as well as original.
When writing, we need to submit two writes, one to the original, and one to the replacement - if there is a replacement. If the write to the replacement results in a write error, we just fail the device. We only try to record write errors to the original. When writing for recovery, we shouldn't write to the original. This will be addressed in a subsequent patch that generally addresses recovery. Reviewed-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/raid5.h')
-rw-r--r--drivers/md/raid5.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h
index 4cfd8016010e..f6faaa16a565 100644
--- a/drivers/md/raid5.h
+++ b/drivers/md/raid5.h
@@ -259,6 +259,7 @@ struct stripe_head_state {
enum r5dev_flags {
R5_UPTODATE, /* page contains current data */
R5_LOCKED, /* IO has been submitted on "req" */
+ R5_DOUBLE_LOCKED,/* Cannot clear R5_LOCKED until 2 writes complete */
R5_OVERWRITE, /* towrite covers whole page */
/* and some that are internal to handle_stripe */
R5_Insync, /* rdev && rdev->in_sync at start */