The commit is pushed to "branch-rh8-4.18.0-240.1.1.vz8.5.x-ovz" and will appear 
at https://src.openvz.org/scm/ovz/vzkernel.git
after rh8-4.18.0-240.1.1.vz8.5.1
------>
commit 0497d745e201c4eb6f894c87afb55044f075708d
Author: Kirill Tkhai <ktk...@virtuozzo.com>
Date:   Tue Dec 15 20:12:18 2020 +0300

    ploop: Zero tail of tail page
    
    In case of BAT ends in middle of page, zero its tail.
    Otherwise, garbage is there.
    
    https://jira.sw.ru/browse/PSBM-123639
    Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com>
---
 drivers/md/dm-ploop-bat.c | 5 +++++
 drivers/md/dm-ploop.h     | 1 +
 2 files changed, 6 insertions(+)

diff --git a/drivers/md/dm-ploop-bat.c b/drivers/md/dm-ploop-bat.c
index d6b687806118..da18dd2e4638 100644
--- a/drivers/md/dm-ploop-bat.c
+++ b/drivers/md/dm-ploop-bat.c
@@ -168,6 +168,11 @@ static int ploop_read_bat(struct ploop *ploop, struct bio 
*bio)
                        from = kmap(bio->bi_io_vec[page].bv_page);
                        memcpy(to, from, nr_copy * sizeof(map_index_t));
                        kunmap(bio->bi_io_vec[page].bv_page);
+                       if (unlikely(nr_copy < BAT_ENTRIES_PER_PAGE)) {
+                               memset(from + nr_copy, 0, sizeof(map_index_t) *
+                                      (BAT_ENTRIES_PER_PAGE - nr_copy));
+                       }
+
                        ret = parse_bat_entries(ploop, to, md->bat_levels,
                                                nr_copy, id);
                        kunmap(md->page);
diff --git a/drivers/md/dm-ploop.h b/drivers/md/dm-ploop.h
index dc5362f01e21..a025df4bf328 100644
--- a/drivers/md/dm-ploop.h
+++ b/drivers/md/dm-ploop.h
@@ -6,6 +6,7 @@
 
 #define PLOOP_MAP_OFFSET 16
 typedef u32 map_index_t;
+#define BAT_ENTRIES_PER_PAGE (PAGE_SIZE / sizeof(map_index_t))
 
 #define SIGNATURE_DISK_IN_USE           0x746F6E59
 
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to