raid5-ppl: partial parity calculation optimization
In case of read-modify-write, partial partity is the same as the result of ops_run_prexor5(), so we can just copy sh->dev[pd_idx].page into sh->ppl_page instead of calculating it again. Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Shaohua Li <shli@fb.com>
This commit is contained in:

committed by
Shaohua Li

parent
845b9e229f
commit
ae1713e296
@@ -2079,9 +2079,6 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
|
||||
async_tx_ack(tx);
|
||||
}
|
||||
|
||||
if (test_bit(STRIPE_OP_PARTIAL_PARITY, &ops_request))
|
||||
tx = ops_run_partial_parity(sh, percpu, tx);
|
||||
|
||||
if (test_bit(STRIPE_OP_PREXOR, &ops_request)) {
|
||||
if (level < 6)
|
||||
tx = ops_run_prexor5(sh, percpu, tx);
|
||||
@@ -2089,6 +2086,9 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
|
||||
tx = ops_run_prexor6(sh, percpu, tx);
|
||||
}
|
||||
|
||||
if (test_bit(STRIPE_OP_PARTIAL_PARITY, &ops_request))
|
||||
tx = ops_run_partial_parity(sh, percpu, tx);
|
||||
|
||||
if (test_bit(STRIPE_OP_BIODRAIN, &ops_request)) {
|
||||
tx = ops_run_biodrain(sh, tx);
|
||||
overlap_clear++;
|
||||
|
Reference in New Issue
Block a user