Skip to content

Commit

Permalink
md/raid5: factor out mark_uptodate from ops_complete_compute5
Browse files Browse the repository at this point in the history
ops_complete_compute5 can be reused in the raid6 path if it is updated to
generically handle a second target.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
  • Loading branch information
Dan Williams committed Aug 30, 2009
1 parent cb3c829 commit 4e7d2c0
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions drivers/md/raid5.c
Original file line number Diff line number Diff line change
Expand Up @@ -623,18 +623,29 @@ static void ops_run_biofill(struct stripe_head *sh)
async_trigger_callback(&submit);
}

static void mark_target_uptodate(struct stripe_head *sh, int target)
{
struct r5dev *tgt;

if (target < 0)
return;

tgt = &sh->dev[target];
set_bit(R5_UPTODATE, &tgt->flags);
BUG_ON(!test_bit(R5_Wantcompute, &tgt->flags));
clear_bit(R5_Wantcompute, &tgt->flags);
}

static void ops_complete_compute5(void *stripe_head_ref)
{
struct stripe_head *sh = stripe_head_ref;
int target = sh->ops.target;
struct r5dev *tgt = &sh->dev[target];

pr_debug("%s: stripe %llu\n", __func__,
(unsigned long long)sh->sector);

set_bit(R5_UPTODATE, &tgt->flags);
BUG_ON(!test_bit(R5_Wantcompute, &tgt->flags));
clear_bit(R5_Wantcompute, &tgt->flags);
/* mark the computed target as uptodate */
mark_target_uptodate(sh, sh->ops.target);

clear_bit(STRIPE_COMPUTE_RUN, &sh->state);
if (sh->check_state == check_state_compute_run)
sh->check_state = check_state_compute_result;
Expand Down

0 comments on commit 4e7d2c0

Please sign in to comment.