diff options
author | NeilBrown <neilb@suse.de> | 2011-07-26 11:35:15 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-07-26 11:35:15 +1000 |
commit | 82e5a1718b9d0401b826341b9023766d04cb82f2 (patch) | |
tree | 4c1f26a7c547be3eb3d710834e35876073b86739 /drivers/md/raid5.c | |
parent | c4c1663be46b2ab94e59d3e0c583a8f6b188ff0c (diff) | |
download | talos-op-linux-82e5a1718b9d0401b826341b9023766d04cb82f2.tar.gz talos-op-linux-82e5a1718b9d0401b826341b9023766d04cb82f2.zip |
md/raid5: move common code into handle_stripe
There is common code at the start of handle_stripe5 and
handle_stripe6. Move it into handle_stripe.
Signed-off-by: NeilBrown <neilb@suse.de>
Reviewed-by: Namhyung Kim <namhyung@gmail.com>
Diffstat (limited to 'drivers/md/raid5.c')
-rw-r--r-- | drivers/md/raid5.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index f8275b5a6fbe..dfb3d9f80a3c 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -3016,12 +3016,6 @@ static void handle_stripe5(struct stripe_head *sh) atomic_read(&sh->count), sh->pd_idx, sh->check_state, sh->reconstruct_state); - if (test_and_clear_bit(STRIPE_SYNC_REQUESTED, &sh->state)) { - set_bit(STRIPE_SYNCING, &sh->state); - clear_bit(STRIPE_INSYNC, &sh->state); - } - clear_bit(STRIPE_DELAYED, &sh->state); - s.syncing = test_bit(STRIPE_SYNCING, &sh->state); s.expanding = test_bit(STRIPE_EXPAND_SOURCE, &sh->state); s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state); @@ -3310,12 +3304,6 @@ static void handle_stripe6(struct stripe_head *sh) sh->check_state, sh->reconstruct_state); memset(&s, 0, sizeof(s)); - if (test_and_clear_bit(STRIPE_SYNC_REQUESTED, &sh->state)) { - set_bit(STRIPE_SYNCING, &sh->state); - clear_bit(STRIPE_INSYNC, &sh->state); - } - clear_bit(STRIPE_DELAYED, &sh->state); - s.syncing = test_bit(STRIPE_SYNCING, &sh->state); s.expanding = test_bit(STRIPE_EXPAND_SOURCE, &sh->state); s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state); @@ -3607,6 +3595,12 @@ static void handle_stripe(struct stripe_head *sh) return; } + if (test_and_clear_bit(STRIPE_SYNC_REQUESTED, &sh->state)) { + set_bit(STRIPE_SYNCING, &sh->state); + clear_bit(STRIPE_INSYNC, &sh->state); + } + clear_bit(STRIPE_DELAYED, &sh->state); + if (sh->raid_conf->level == 6) handle_stripe6(sh); else |