The commit is pushed to "branch-rh9-5.14.0-42.vz9.14.x-ovz" and will appear at 
https://src.openvz.org/scm/ovz/vzkernel.git
after rh9-5.14.0-42.vz9.14.3
------>
commit df7c73fdd5fc6cf8f746f8cc8cf142ca7a93ac13
Author: Kirill Tkhai <ktk...@virtuozzo.com>
Date:   Wed Mar 2 20:04:13 2022 +0300

    dm-qcow2: Introduce a new helper init_qrq_and_embedded_qio()
    
    Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com>
    Feature: dm-qcow2: block device over QCOW2 files driver
---
 drivers/md/dm-qcow2-map.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/drivers/md/dm-qcow2-map.c b/drivers/md/dm-qcow2-map.c
index 8ec67d2b10c9..60dd5c76ba7c 100644
--- a/drivers/md/dm-qcow2-map.c
+++ b/drivers/md/dm-qcow2-map.c
@@ -83,6 +83,8 @@ static int punch_hole(struct file *file, loff_t pos, loff_t 
len);
 static void handle_cleanup_mask(struct qio *qio);
 static void process_read_qio(struct qcow2 *qcow2, struct qio *qio,
                             struct qcow2_map *map);
+static void init_qrq_and_embedded_qio(struct qcow2_target *tgt, struct request 
*rq,
+                                     struct qcow2_rq *qrq, struct qio *qio);
 
 static loff_t bytes_off_in_cluster(struct qcow2 *qcow2, struct qio *qio)
 {
@@ -4011,6 +4013,16 @@ static void init_qrq(struct qcow2_rq *qrq, struct 
request *rq)
        qrq->bvec = NULL;
 }
 
+static void init_qrq_and_embedded_qio(struct qcow2_target *tgt, struct request 
*rq,
+                                     struct qcow2_rq *qrq, struct qio *qio)
+{
+       init_qrq(qrq, rq);
+       init_qio(qio, req_op(rq), NULL);
+
+       qio->endio_cb = qrq_endio;
+       qio->endio_cb_data = qrq;
+}
+
 void submit_embedded_qio(struct qcow2_target *tgt, struct qio *qio)
 {
        struct qcow2_rq *qrq = qio->endio_cb_data;
@@ -4067,12 +4079,9 @@ int qcow2_clone_and_map(struct dm_target *ti, struct 
request *rq,
        qrq = mempool_alloc(tgt->qrq_pool, GFP_ATOMIC);
        if (!qrq)
                return DM_MAPIO_KILL;
-       init_qrq(qrq, rq);
-
        qio = (void *)qrq + sizeof(*qrq);
-       init_qio(qio, req_op(rq), NULL);
-       qio->endio_cb = qrq_endio;
-       qio->endio_cb_data = qrq;
+       init_qrq_and_embedded_qio(tgt, rq, qrq, qio);
+
        /*
         * Note, this qcow2_clone_and_map() may be called from atomic
         * context, so here we just delegate qio splitting to kwork.
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to