diff options
author | Shaohua Li <shli@fb.com> | 2016-03-09 19:08:38 +0100 |
---|---|---|
committer | Shaohua Li <shli@fb.com> | 2016-03-09 19:08:38 +0100 |
commit | fb3229d5cd4c8e65178afe55f6727ff645cdb81a (patch) | |
tree | 09fd0c031eca1c3d9976bdb423cc6569389eb533 /drivers/md | |
parent | md/raid5: preserve STRIPE_PREREAD_ACTIVE in break_stripe_batch_list (diff) | |
download | linux-fb3229d5cd4c8e65178afe55f6727ff645cdb81a.tar.xz linux-fb3229d5cd4c8e65178afe55f6727ff645cdb81a.zip |
md/raid5: output stripe state for debug
Neil recently fixed an obscure race in break_stripe_batch_list. Debug would be
quite convenient if we know the stripe state. This is what this patch does.
Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/raid5.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 32d52878f182..31ac0f0bf86f 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -4236,7 +4236,7 @@ static void break_stripe_batch_list(struct stripe_head *head_sh, list_del_init(&sh->batch_list); - WARN_ON_ONCE(sh->state & ((1 << STRIPE_ACTIVE) | + WARN_ONCE(sh->state & ((1 << STRIPE_ACTIVE) | (1 << STRIPE_SYNCING) | (1 << STRIPE_REPLACED) | (1 << STRIPE_DELAYED) | @@ -4248,9 +4248,11 @@ static void break_stripe_batch_list(struct stripe_head *head_sh, (1 << STRIPE_DISCARD) | (1 << STRIPE_BATCH_READY) | (1 << STRIPE_BATCH_ERR) | - (1 << STRIPE_BITMAP_PENDING))); - WARN_ON_ONCE(head_sh->state & ((1 << STRIPE_DISCARD) | - (1 << STRIPE_REPLACED))); + (1 << STRIPE_BITMAP_PENDING)), + "stripe state: %lx\n", sh->state); + WARN_ONCE(head_sh->state & ((1 << STRIPE_DISCARD) | + (1 << STRIPE_REPLACED)), + "head stripe state: %lx\n", head_sh->state); set_mask_bits(&sh->state, ~(STRIPE_EXPAND_SYNC_FLAGS | (1 << STRIPE_PREREAD_ACTIVE) | |