On Fri, May 08, 2015 at 06:56:12PM +1000, NeilBrown wrote: > There is no need for special handling of stripe-batches when the array > is degraded. > > There may be if there is a failure in the batch, but STRIPE_DEGRADED > does not imply an error. > > So don't set STRIPE_BATCH_ERR in ops_run_io just because the array is > degraded. > This actually causes a bug: the STRIPE_DEGRADED flag gets cleared in > check_break_stripe_batch_list() and so the bitmap bit gets cleared > when it shouldn't. > > So in check_break_stripe_batch_list(), split the batch up completely - > again STRIPE_DEGRADED isn't meaningful. > > Also don't set STRIPE_BATCH_ERR when there is a write error to a > replacement device. This simply removes the replacement device and > requires no extra handling. > > Signed-off-by: NeilBrown <neilb@xxxxxxx> > --- > drivers/md/raid5.c | 17 +++-------------- > 1 file changed, 3 insertions(+), 14 deletions(-) > > diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c > index 3873eaa6fa2e..1ba97fdc6df1 100644 > --- a/drivers/md/raid5.c > +++ b/drivers/md/raid5.c > @@ -1078,9 +1078,6 @@ again: > pr_debug("skip op %ld on disc %d for sector %llu\n", > bi->bi_rw, i, (unsigned long long)sh->sector); > clear_bit(R5_LOCKED, &sh->dev[i].flags); > - if (sh->batch_head) > - set_bit(STRIPE_BATCH_ERR, > - &sh->batch_head->state); > set_bit(STRIPE_HANDLE, &sh->state); > } Patches look good to me. I had a question here. Is it possible some stripes in a batch become degraded here but some not? Seems possible, then the batch should be splitted too. Thanks, Shaohua -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html