The commit is pushed to "branch-rh8-4.18.0-305.3.1.vz8.7.x-ovz" and will appear 
at https://src.openvz.org/scm/ovz/vzkernel.git
after rh8-4.18.0-305.3.1.vz8.7.11
------>
commit cded3d7fa5c0bde7ebadcc64b4a0bf69337b7e3d
Author: Kirill Tkhai <[email protected]>
Date:   Fri Sep 10 20:16:50 2021 +0300

    push_backup: Change arguments of calc_bio_clusters()
    
    Signed-off-by: Kirill Tkhai <[email protected]>
    
    ====================
    push_backup: Make target !immutable.
    
    https://jira.sw.ru/browse/PSBM-127989
    
    Kirill Tkhai (14):
          push_backup: Rename ppb_map
          push_backup: Add unsigned long alignment
          push_backup: Add pending_map
          push_backup: Kill find_node_pbio_range()
          push_backup: Use nr_delayed in postpone_if_required_for_backup()
          push_backup: Introduce hash table
          push_backup: Leave pending pbio in pending queue
          push_backup: Do not split bios by cluster size
          dm: Allow singleton target with devices attached
          dm: Introduce dm_requeue_original_rq()
          push_backup: Make it request based
          push_backup: Change retval postpone_if_required_for_backup()
          push_backup: Change arguments of calc_bio_clusters()
          push_backup: Make the target !immutable
---
 drivers/md/dm-push-backup.c | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/drivers/md/dm-push-backup.c b/drivers/md/dm-push-backup.c
index 044b7569654e..4f9aa558b9ad 100644
--- a/drivers/md/dm-push-backup.c
+++ b/drivers/md/dm-push-backup.c
@@ -74,11 +74,11 @@ static u64 pbio_first_required_for_backup_clu(struct 
push_backup *pb, struct pb_
                        return clu;
        return U64_MAX;
 }
-static u64 pbio_last_required_for_backup_clu(struct push_backup *pb, struct 
pb_bio *pbio)
+static u64 last_required_for_backup_clu(struct push_backup *pb, u64 start_clu, 
u64 end_clu)
 {
        u64 clu;
 
-       for (clu = pbio->end_clu; clu >= pbio->start_clu; clu--) {
+       for (clu = end_clu; clu >= start_clu; clu--) {
                if (test_bit(clu, pb->map))
                        return clu;
                if (clu == 0)
@@ -86,6 +86,10 @@ static u64 pbio_last_required_for_backup_clu(struct 
push_backup *pb, struct pb_b
        }
        return U64_MAX;
 }
+static u64 pbio_last_required_for_backup_clu(struct push_backup *pb, struct 
pb_bio *pbio)
+{
+       return last_required_for_backup_clu(pb, pbio->start_clu, pbio->end_clu);
+}
 
 static void init_pb_bio(struct pb_bio *pbio)
 {
@@ -94,25 +98,27 @@ static void init_pb_bio(struct pb_bio *pbio)
 }
 
 static void calc_bio_clusters(struct push_backup *pb, struct request *rq,
-                             struct pb_bio *pbio)
+                             u64 *start_clu, u64 *end_clu)
 {
        loff_t off = to_bytes(blk_rq_pos(rq));
 
-       pbio->start_clu = off / pb->clu_size;
-       pbio->end_clu = (off + blk_rq_bytes(rq) - 1) / pb->clu_size;
+       *start_clu = off / pb->clu_size;
+       *end_clu = (off + blk_rq_bytes(rq) - 1) / pb->clu_size;
 }
 
 static int setup_if_required_for_backup(struct push_backup *pb, struct request 
*rq,
                                        struct pb_bio *pbio)
 {
-       u64 key;
+       u64 start_clu, end_clu, key;
 
-       init_pb_bio(pbio);
-       calc_bio_clusters(pb, rq, pbio);
+       calc_bio_clusters(pb, rq, &start_clu, &end_clu);
 
-       key = pbio_last_required_for_backup_clu(pb, pbio);
+       key = last_required_for_backup_clu(pb, start_clu, end_clu);
        if (key != U64_MAX) {
+               init_pb_bio(pbio);
                pbio->rq = rq;
+               pbio->start_clu = start_clu;
+               pbio->end_clu = end_clu;
                pbio->key_clu = key;
                return 1;
        }
_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to