diff options
author | NeilBrown <neilb@suse.de> | 2015-05-21 12:40:26 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2015-05-28 11:40:01 +1000 |
commit | 1b956f7a8f9aa63ea9644ab8c3374cf381993363 (patch) | |
tree | 7ec48a7e5c0d5342b99eaf7df013726430b86663 /drivers/md/raid5.h | |
parent | 3960ce796198254b7a1b420dc9a26d80928523bd (diff) | |
download | blackbird-op-linux-1b956f7a8f9aa63ea9644ab8c3374cf381993363.tar.gz blackbird-op-linux-1b956f7a8f9aa63ea9644ab8c3374cf381993363.zip |
md/raid5: be more selective about distributing flags across batch.
When a batch of stripes is broken up, we keep some of the flags
that were per-stripe, and copy other flags from the head to all
others.
This only happens while a stripe is being handled, so many of the
flags are irrelevant.
The "SYNC_FLAGS" (which I've renamed to make it clear there are
several) and STRIPE_DEGRADED are set per-stripe and so need to be
preserved. STRIPE_INSYNC is the only flag that is set on the head
that needs to be propagated to all others.
For safety, add a WARN_ON if others are set, except:
STRIPE_HANDLE - this is safe and per-stripe and we are going to set
in several cases anyway
STRIPE_INSYNC
STRIPE_IO_STARTED - this is just a hint and doesn't hurt.
STRIPE_ON_PLUG_LIST
STRIPE_ON_RELEASE_LIST - It is a point pointless for a batched
stripe to be on one of these lists, but it can happen
as can be safely ignored.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/raid5.h')
-rw-r--r-- | drivers/md/raid5.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h index 01cdb9f3a0c4..896d603ad0da 100644 --- a/drivers/md/raid5.h +++ b/drivers/md/raid5.h @@ -342,7 +342,7 @@ enum { */ }; -#define STRIPE_EXPAND_SYNC_FLAG \ +#define STRIPE_EXPAND_SYNC_FLAGS \ ((1 << STRIPE_EXPAND_SOURCE) |\ (1 << STRIPE_EXPAND_READY) |\ (1 << STRIPE_EXPANDING) |\ |