diff options
author | Kent Overstreet <kmo@daterainc.com> | 2013-09-25 13:26:36 -0700 |
---|---|---|
committer | Kent Overstreet <kmo@daterainc.com> | 2014-06-17 18:25:57 -0700 |
commit | 5064c8a8b54d4a78b55d959ab30ab222548bea9a (patch) | |
tree | 0154040f6797cd760873c7cb3a381ea6c0258359 | |
parent | 8311960baa61fae67b9f718c6a577d8e6c2d92dd (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 cb882aae9e20..8c6c67785305 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -2112,18 +2112,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); @@ -2139,17 +2132,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, |