The commit is pushed to "branch-rh7-3.10.0-229.7.2-ovz" and will appear at 
https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-229.7.2.vz7.6.3
------>
commit fc65c834967a14d37ef23348cec6528d18b0a169
Author: Maxim Patlasov <mpatla...@openvz.org>
Date:   Fri Aug 28 14:18:37 2015 +0400

    ploop: dio_fastmap() must refresh bvec_merge_data
    
    q->merge_bvec_fn() may override some fileds of bvec_merge_data.
    For example, raid0_mergeable_bvec() does so. The blessed way is
    to initialize it from scratch before use -- see how __bio_add_page()
    prepares bvm for calling q->merge_bvec_fn().
    
    Signed-off-by: Maxim Patlasov <mpatla...@openvz.org>
    Acked-by: Dmitry Monakhov <dmonak...@openvz.org>
---
 drivers/block/ploop/io_direct.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/block/ploop/io_direct.c b/drivers/block/ploop/io_direct.c
index 793bcc5..0183b0f 100644
--- a/drivers/block/ploop/io_direct.c
+++ b/drivers/block/ploop/io_direct.c
@@ -1487,7 +1487,6 @@ dio_fastmap(struct ploop_io * io, struct bio * orig_bio,
        struct request_queue * q;
        struct extent_map * em;
        int i;
-       struct bvec_merge_data bm_data;
 
        if (orig_bio->bi_size == 0) {
                bio->bi_vcnt   = 0;
@@ -1535,19 +1534,19 @@ dio_fastmap(struct ploop_io * io, struct bio * orig_bio,
        bio->bi_size = 0;
        bio->bi_vcnt = 0;
 
-       bm_data.bi_bdev = bio->bi_bdev;
-       bm_data.bi_sector = bio->bi_sector;
-       bm_data.bi_size = 0;
-       bm_data.bi_rw = bio->bi_rw;
-
        for (i = 0; i < orig_bio->bi_vcnt; i++) {
                struct bio_vec * bv = &bio->bi_io_vec[i];
+               struct bvec_merge_data bm_data = {
+                       .bi_bdev = bio->bi_bdev,
+                       .bi_sector = bio->bi_sector,
+                       .bi_size = bio->bi_size,
+                       .bi_rw = bio->bi_rw,
+               };
                if (q->merge_bvec_fn(q, &bm_data, bv) < bv->bv_len) {
                        io->plo->st.fast_neg_backing++;
                        return 1;
                }
                bio->bi_size += bv->bv_len;
-               bm_data.bi_size = bio->bi_size;
                bio->bi_vcnt++;
        }
        return 0;
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to