From f7be087fa5c50fc85bd3eb5152537e11014022bc Mon Sep 17 00:00:00 2001 From: Shaohua Li Date: Tue, 3 Jul 2012 15:57:19 +1000 Subject: [PATCH] --- yaml --- r: 311561 b: refs/heads/master c: fab363b5ff502d1b39ddcfec04271f5858d9f26e h: refs/heads/master i: 311559: e52ab209cd09f5df8e786474f506fe874dee956c v: v3 --- [refs] | 2 +- trunk/drivers/md/raid5.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 05d2ac13d20c..0bfc6c9b7bbb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2e8ac30312973dd20e6807365349ecb1c7e0ea45 +refs/heads/master: fab363b5ff502d1b39ddcfec04271f5858d9f26e diff --git a/trunk/drivers/md/raid5.c b/trunk/drivers/md/raid5.c index 51169ecd7787..7245a9df35a9 100644 --- a/trunk/drivers/md/raid5.c +++ b/trunk/drivers/md/raid5.c @@ -196,12 +196,14 @@ static void __release_stripe(struct r5conf *conf, struct stripe_head *sh) BUG_ON(!list_empty(&sh->lru)); BUG_ON(atomic_read(&conf->active_stripes)==0); if (test_bit(STRIPE_HANDLE, &sh->state)) { - if (test_bit(STRIPE_DELAYED, &sh->state)) + if (test_bit(STRIPE_DELAYED, &sh->state) && + !test_bit(STRIPE_PREREAD_ACTIVE, &sh->state)) list_add_tail(&sh->lru, &conf->delayed_list); else if (test_bit(STRIPE_BIT_DELAY, &sh->state) && sh->bm_seq - conf->seq_write > 0) list_add_tail(&sh->lru, &conf->bitmap_list); else { + clear_bit(STRIPE_DELAYED, &sh->state); clear_bit(STRIPE_BIT_DELAY, &sh->state); list_add_tail(&sh->lru, &conf->handle_list); }