diff options
author | Kent Overstreet <kmo@daterainc.com> | 2013-09-25 13:26:36 -0700 |
---|---|---|
committer | Kent Overstreet <kmo@daterainc.com> | 2014-02-26 15:34:43 -0800 |
commit | d74b452ea03bbb291e318b7f05b9f318d72baca2 (patch) | |
tree | 1a74ff033b50cbe18d37d2dbb5cf50d2bb4a1e10 | |
parent | 4b5f58d8aa5b7c0904b3e12f2a9a737ab8fb8295 (diff) |
md: Use bio_copy_data()
Signed-off-by: Kent Overstreet <kmo@daterainc.com>
-rw-r--r-- | drivers/md/raid10.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 33fc408e5eac..bd724000897d 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -2111,18 +2111,11 @@ static void sync_request_write(struct mddev *mddev, struct r10bio *r10_bio) tbio->bi_vcnt = vcnt; tbio->bi_iter.bi_size = r10_bio->sectors << 9; tbio->bi_rw = WRITE; - tbio->bi_private = r10_bio; tbio->bi_iter.bi_sector = r10_bio->devs[i].addr; - - for (j=0; j < vcnt ; j++) { - tbio->bi_io_vec[j].bv_offset = 0; - tbio->bi_io_vec[j].bv_len = PAGE_SIZE; - - memcpy(page_address(tbio->bi_io_vec[j].bv_page), - page_address(fbio->bi_io_vec[j].bv_page), - PAGE_SIZE); - } tbio->bi_end_io = end_sync_write; + tbio->bi_private = r10_bio; + + bio_copy_data(tbio, fbio); d = r10_bio->devs[i].devnum; atomic_inc(&conf->mirrors[d].rdev->nr_pending); @@ -2138,17 +2131,14 @@ static void sync_request_write(struct mddev *mddev, struct r10bio *r10_bio) * that are active */ for (i = 0; i < conf->copies; i++) { - int j, d; + int d; tbio = r10_bio->devs[i].repl_bio; if (!tbio || !tbio->bi_end_io) continue; if (r10_bio->devs[i].bio->bi_end_io != end_sync_write && r10_bio->devs[i].bio != fbio) - for (j = 0; j < vcnt; j++) - memcpy(page_address(tbio->bi_io_vec[j].bv_page), - page_address(fbio->bi_io_vec[j].bv_page), - PAGE_SIZE); + bio_copy_data(tbio, fbio); d = r10_bio->devs[i].devnum; atomic_inc(&r10_bio->remaining); md_sync_acct(conf->mirrors[d].replacement->bdev, |