md: raid1/raid10: initialize bvec table via bio_add_page()

We will support multipage bvec soon, so initialize bvec
table using the standardy way instead of writing the
talbe directly. Otherwise it won't work any more once
multipage bvec is enabled.

Acked-by: Guoqing Jiang <gqjiang@suse.com>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Shaohua Li <shli@fb.com>
This commit is contained in:
Ming Lei
2017-07-14 16:14:43 +08:00
committed by Shaohua Li
parent 022e510fcb
commit fb0eb5df09
3 changed files with 27 additions and 16 deletions

19
drivers/md/raid1-10.c Normal file
View File

@@ -0,0 +1,19 @@
/* generally called after bio_reset() for reseting bvec */
static void md_bio_reset_resync_pages(struct bio *bio, struct resync_pages *rp,
int size)
{
int idx = 0;
/* initialize bvec table again */
do {
struct page *page = resync_fetch_page(rp, idx);
int len = min_t(int, size, PAGE_SIZE);
/*
* won't fail because the vec table is big
* enough to hold all these pages
*/
bio_add_page(bio, page, len, 0);
size -= len;
} while (idx++ < RESYNC_PAGES && size > 0);
}