mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 16:54:20 +08:00
md/raid5: factor out mark_uptodate from ops_complete_compute5
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>
This commit is contained in:
parent
cb3c82992f
commit
4e7d2c0aef
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user