aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/raid5.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index f8d2d35ed298..0ef5362c8d02 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -525,14 +525,12 @@ async_copy_data(int frombio, struct bio *bio, struct page *page,
525 bio_page = bio_iovec_idx(bio, i)->bv_page; 525 bio_page = bio_iovec_idx(bio, i)->bv_page;
526 if (frombio) 526 if (frombio)
527 tx = async_memcpy(page, bio_page, page_offset, 527 tx = async_memcpy(page, bio_page, page_offset,
528 b_offset, clen, 528 b_offset, clen, 0,
529 ASYNC_TX_DEP_ACK, 529 tx, NULL, NULL);
530 tx, NULL, NULL);
531 else 530 else
532 tx = async_memcpy(bio_page, page, b_offset, 531 tx = async_memcpy(bio_page, page, b_offset,
533 page_offset, clen, 532 page_offset, clen, 0,
534 ASYNC_TX_DEP_ACK, 533 tx, NULL, NULL);
535 tx, NULL, NULL);
536 } 534 }
537 if (clen < len) /* hit end of page */ 535 if (clen < len) /* hit end of page */
538 break; 536 break;
@@ -615,8 +613,7 @@ static void ops_run_biofill(struct stripe_head *sh)
615 } 613 }
616 614
617 atomic_inc(&sh->count); 615 atomic_inc(&sh->count);
618 async_trigger_callback(ASYNC_TX_DEP_ACK | ASYNC_TX_ACK, tx, 616 async_trigger_callback(ASYNC_TX_ACK, tx, ops_complete_biofill, sh);
619 ops_complete_biofill, sh);
620} 617}
621 618
622static void ops_complete_compute5(void *stripe_head_ref) 619static void ops_complete_compute5(void *stripe_head_ref)
@@ -701,8 +698,8 @@ ops_run_prexor(struct stripe_head *sh, struct dma_async_tx_descriptor *tx)
701 } 698 }
702 699
703 tx = async_xor(xor_dest, xor_srcs, 0, count, STRIPE_SIZE, 700 tx = async_xor(xor_dest, xor_srcs, 0, count, STRIPE_SIZE,
704 ASYNC_TX_DEP_ACK | ASYNC_TX_XOR_DROP_DST, tx, 701 ASYNC_TX_XOR_DROP_DST, tx,
705 ops_complete_prexor, sh); 702 ops_complete_prexor, sh);
706 703
707 return tx; 704 return tx;
708} 705}
@@ -809,7 +806,7 @@ ops_run_postxor(struct stripe_head *sh, struct dma_async_tx_descriptor *tx)
809 * set ASYNC_TX_XOR_DROP_DST and ASYNC_TX_XOR_ZERO_DST 806 * set ASYNC_TX_XOR_DROP_DST and ASYNC_TX_XOR_ZERO_DST
810 * for the synchronous xor case 807 * for the synchronous xor case
811 */ 808 */
812 flags = ASYNC_TX_DEP_ACK | ASYNC_TX_ACK | 809 flags = ASYNC_TX_ACK |
813 (prexor ? ASYNC_TX_XOR_DROP_DST : ASYNC_TX_XOR_ZERO_DST); 810 (prexor ? ASYNC_TX_XOR_DROP_DST : ASYNC_TX_XOR_ZERO_DST);
814 811
815 atomic_inc(&sh->count); 812 atomic_inc(&sh->count);
@@ -858,7 +855,7 @@ static void ops_run_check(struct stripe_head *sh)
858 &sh->ops.zero_sum_result, 0, NULL, NULL, NULL); 855 &sh->ops.zero_sum_result, 0, NULL, NULL, NULL);
859 856
860 atomic_inc(&sh->count); 857 atomic_inc(&sh->count);
861 tx = async_trigger_callback(ASYNC_TX_DEP_ACK | ASYNC_TX_ACK, tx, 858 tx = async_trigger_callback(ASYNC_TX_ACK, tx,
862 ops_complete_check, sh); 859 ops_complete_check, sh);
863} 860}
864 861
@@ -2687,8 +2684,8 @@ static void handle_stripe_expansion(raid5_conf_t *conf, struct stripe_head *sh,
2687 2684
2688 /* place all the copies on one channel */ 2685 /* place all the copies on one channel */
2689 tx = async_memcpy(sh2->dev[dd_idx].page, 2686 tx = async_memcpy(sh2->dev[dd_idx].page,
2690 sh->dev[i].page, 0, 0, STRIPE_SIZE, 2687 sh->dev[i].page, 0, 0, STRIPE_SIZE,
2691 ASYNC_TX_DEP_ACK, tx, NULL, NULL); 2688 0, tx, NULL, NULL);
2692 2689
2693 set_bit(R5_Expanded, &sh2->dev[dd_idx].flags); 2690 set_bit(R5_Expanded, &sh2->dev[dd_idx].flags);
2694 set_bit(R5_UPTODATE, &sh2->dev[dd_idx].flags); 2691 set_bit(R5_UPTODATE, &sh2->dev[dd_idx].flags);