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.31
------>
commit fe0a79570697e345b95c11000fba409839658ed6
Author: Kirill Tkhai <[email protected]>
Date:   Mon May 24 12:57:23 2021 +0300

    ploop: Introduce more helpers
    
    .. to minimize code line.
    
    Signed-off-by: Kirill Tkhai <[email protected]>
    
    =====================
    Patchset description:
    
    ploop: Truncate top delta from kernel
    
    and refactoring at tail.
    
    https://jira.sw.ru/browse/PSBM-129278
    
    Signed-off-by: Kirill Tkhai <[email protected]>
---
 drivers/md/dm-ploop-bat.c    | 12 +++++-------
 drivers/md/dm-ploop-cmd.c    | 15 +++++++--------
 drivers/md/dm-ploop-map.c    |  4 ++--
 drivers/md/dm-ploop-target.c | 10 ++++------
 drivers/md/dm-ploop.h        |  2 ++
 5 files changed, 20 insertions(+), 23 deletions(-)

diff --git a/drivers/md/dm-ploop-bat.c b/drivers/md/dm-ploop-bat.c
index 56242e5c1285..126646bfeb09 100644
--- a/drivers/md/dm-ploop-bat.c
+++ b/drivers/md/dm-ploop-bat.c
@@ -258,12 +258,11 @@ static int ploop_setup_holes_bitmap(struct ploop *ploop,
 
 int ploop_setup_metadata(struct ploop *ploop, struct page *page)
 {
-       unsigned int bat_clusters, offset_clusters, cluster_log;
+       unsigned int bat_clusters, offset_clusters;
        struct ploop_pvd_header *m_hdr = NULL;
        unsigned long size;
        int ret;
 
-       cluster_log = ploop->cluster_log;
        m_hdr = kmap(page);
 
        ret = -ENOTSUPP;
@@ -276,7 +275,7 @@ int ploop_setup_metadata(struct ploop *ploop, struct page 
*page)
                goto out;
 
        ret = -EINVAL;
-       if (le32_to_cpu(m_hdr->m_Sectors) != 1 << cluster_log)
+       if (le32_to_cpu(m_hdr->m_Sectors) != CLU_TO_SEC(ploop, 1))
                goto out;
 
        memcpy(ploop->m_Sig, m_hdr->m_Sig, sizeof(ploop->m_Sig));
@@ -289,7 +288,7 @@ int ploop_setup_metadata(struct ploop *ploop, struct page 
*page)
        bat_clusters = DIV_ROUND_UP(size, CLU_SIZE(ploop));
 
        /* Clusters from start of file to first data block */
-       offset_clusters = le32_to_cpu(m_hdr->m_FirstBlockOffset) >> cluster_log;
+       offset_clusters = SEC_TO_CLU(ploop, 
le32_to_cpu(m_hdr->m_FirstBlockOffset));
        if (bat_clusters != offset_clusters) {
                pr_err("ploop: custom FirstBlockOffset\n");
                goto out;
@@ -307,7 +306,7 @@ int ploop_setup_metadata(struct ploop *ploop, struct page 
*page)
 static int ploop_delta_check_header(struct ploop *ploop, struct page *page,
                       unsigned int *nr_pages, unsigned int *last_page_len)
 {
-       unsigned int bytes, delta_nr_be, offset_clusters, bat_clusters, 
cluster_log;
+       unsigned int bytes, delta_nr_be, offset_clusters, bat_clusters;
        struct ploop_pvd_header *d_hdr;
        int ret = -EPROTO;
 
@@ -319,8 +318,7 @@ static int ploop_delta_check_header(struct ploop *ploop, 
struct page *page,
                goto out;
 
        delta_nr_be = le32_to_cpu(d_hdr->m_Size);
-       cluster_log = ploop->cluster_log;
-       offset_clusters = le32_to_cpu(d_hdr->m_FirstBlockOffset) >> cluster_log;
+       offset_clusters = SEC_TO_CLU(ploop, 
le32_to_cpu(d_hdr->m_FirstBlockOffset));
        bytes = (PLOOP_MAP_OFFSET + delta_nr_be) * sizeof(map_index_t);
        bat_clusters = DIV_ROUND_UP(bytes, CLU_SIZE(ploop));
 
diff --git a/drivers/md/dm-ploop-cmd.c b/drivers/md/dm-ploop-cmd.c
index 56d0de1b9339..f6fc549d34da 100644
--- a/drivers/md/dm-ploop-cmd.c
+++ b/drivers/md/dm-ploop-cmd.c
@@ -162,7 +162,6 @@ static unsigned int ploop_find_bat_entry(struct ploop 
*ploop,
 void pio_prepare_offsets(struct ploop *ploop, struct pio *pio,
                         unsigned int cluster)
 {
-       unsigned int cluster_log = ploop->cluster_log;
        int i, nr_pages = nr_pages_in_cluster(ploop);
 
        pio->bi_iter.bi_idx = 0;
@@ -173,7 +172,7 @@ void pio_prepare_offsets(struct ploop *ploop, struct pio 
*pio,
                pio->bi_io_vec[i].bv_offset = 0;
                pio->bi_io_vec[i].bv_len = PAGE_SIZE;
        }
-       pio->bi_iter.bi_sector = cluster << cluster_log;
+       pio->bi_iter.bi_sector = CLU_TO_SEC(ploop, cluster);
        pio->bi_iter.bi_size = CLU_SIZE(ploop);
 }
 
@@ -329,7 +328,7 @@ static int ploop_grow_update_header(struct ploop *ploop,
                                    struct ploop_index_wb *piwb,
                                    struct ploop_cmd *cmd)
 {
-       unsigned int size, first_block_off, cluster_log = ploop->cluster_log;
+       unsigned int size, first_block_off;
        struct ploop_pvd_header *hdr;
        u32 nr_be, offset, clus;
        u64 sectors;
@@ -343,7 +342,7 @@ static int ploop_grow_update_header(struct ploop *ploop,
        size = (PLOOP_MAP_OFFSET + cmd->resize.nr_bat_entries);
        size *= sizeof(map_index_t);
        clus = DIV_ROUND_UP(size, CLU_SIZE(ploop));
-       first_block_off = clus << cluster_log;
+       first_block_off = CLU_TO_SEC(ploop, clus);
 
        hdr = kmap_atomic(piwb->bat_page);
        /* TODO: head and cylinders */
@@ -486,9 +485,9 @@ void free_pio_with_pages(struct ploop *ploop, struct pio 
*pio)
 /* @new_size is in sectors */
 static int ploop_resize(struct ploop *ploop, sector_t new_sectors)
 {
-       unsigned int hb_nr, size, old_size, cluster_log = ploop->cluster_log;
        unsigned int nr_bat_entries, nr_old_bat_clusters, nr_bat_clusters;
        struct ploop_cmd cmd = { .resize.md_pages_root = RB_ROOT };
+       unsigned int hb_nr, size, old_size;
        struct ploop_pvd_header *hdr;
        sector_t old_sectors;
        struct md_page *md0;
@@ -511,15 +510,15 @@ static int ploop_resize(struct ploop *ploop, sector_t 
new_sectors)
        if (old_sectors > new_sectors) {
                DMWARN("online shrink is not supported");
                return -EINVAL;
-       } else if ((new_sectors >> cluster_log) >= UINT_MAX - 2) {
+       } else if (SEC_TO_CLU(ploop, new_sectors) >= UINT_MAX - 2) {
                DMWARN("resize: too large size is requested");
                return -EINVAL;
-       } else if (new_sectors & ((1 << cluster_log) - 1)) {
+       } else if (new_sectors & (CLU_TO_SEC(ploop, 1) - 1)) {
                DMWARN("resize: new_sectors is not aligned");
                return -EINVAL;
        }
 
-       nr_bat_entries = new_sectors >> cluster_log;
+       nr_bat_entries = SEC_TO_CLU(ploop, new_sectors);
 
        /* Memory for new md pages */
        if (prealloc_md_pages(&cmd.resize.md_pages_root,
diff --git a/drivers/md/dm-ploop-map.c b/drivers/md/dm-ploop-map.c
index b6c134ffe503..8f53e247b778 100644
--- a/drivers/md/dm-ploop-map.c
+++ b/drivers/md/dm-ploop-map.c
@@ -296,7 +296,7 @@ void track_dst_cluster(struct ploop *ploop, u32 dst_cluster)
  */
 void __track_pio(struct ploop *ploop, struct pio *pio)
 {
-       unsigned int dst_cluster = pio->bi_iter.bi_sector >> ploop->cluster_log;
+       unsigned int dst_cluster = SEC_TO_CLU(ploop, pio->bi_iter.bi_sector);
 
        if (!op_is_write(pio->bi_op) || !bvec_iter_sectors((pio)->bi_iter))
                return;
@@ -1487,7 +1487,7 @@ static int process_one_deferred_bio(struct ploop *ploop, 
struct pio *pio,
         * ploop_advance_local_after_bat_wb(), which we start
         * and wait synchronously from *this* kwork.
         */
-       cluster = sector >> ploop->cluster_log;
+       cluster = SEC_TO_CLU(ploop, sector);
        dst_cluster = ploop_bat_entries(ploop, cluster, &level);
 
        if (postpone_if_cluster_locked(ploop, pio, cluster))
diff --git a/drivers/md/dm-ploop-target.c b/drivers/md/dm-ploop-target.c
index a33147165de3..ec0a940ebb14 100644
--- a/drivers/md/dm-ploop-target.c
+++ b/drivers/md/dm-ploop-target.c
@@ -332,7 +332,7 @@ static int ploop_ctr(struct dm_target *ti, unsigned int 
argc, char **argv)
                ti->error = "could not parse cluster_log";
                goto err;
        }
-       ret = dm_set_target_max_io_len(ti, 1 << ploop->cluster_log);
+       ret = dm_set_target_max_io_len(ti, CLU_TO_SEC(ploop, 1));
        if (ret) {
                ti->error = "could not set max_io_len";
                goto err;
@@ -369,10 +369,9 @@ static void ploop_dtr(struct dm_target *ti)
 static void ploop_io_hints(struct dm_target *ti, struct queue_limits *limits)
 {
        struct ploop *ploop = ti->private;
-       unsigned int cluster_log = ploop->cluster_log;
 
-       limits->max_discard_sectors = 1 << cluster_log;
-       limits->max_hw_discard_sectors = 1 << cluster_log;
+       limits->max_discard_sectors = CLU_TO_SEC(ploop, 1);
+       limits->max_hw_discard_sectors = CLU_TO_SEC(ploop, 1);
        limits->discard_granularity = CLU_SIZE(ploop);
        limits->discard_alignment = 0;
        limits->discard_misaligned = 0;
@@ -400,8 +399,7 @@ static void ploop_status(struct dm_target *ti, 
status_type_t type,
        if (p == stat)
                p += sprintf(p, "o");
        BUG_ON(p - stat >= sizeof(stat));
-       DMEMIT("%u v2 %u %s", ploop->nr_deltas,
-               1 << ploop->cluster_log, stat);
+       DMEMIT("%u v2 %u %s", ploop->nr_deltas, (u32)CLU_TO_SEC(ploop, 1), 
stat);
        read_unlock_irq(&ploop->bat_rwlock);
 }
 
diff --git a/drivers/md/dm-ploop.h b/drivers/md/dm-ploop.h
index a0faffe2d0e6..f9af4d59459e 100644
--- a/drivers/md/dm-ploop.h
+++ b/drivers/md/dm-ploop.h
@@ -106,6 +106,8 @@ struct ploop_cmd {
 #define CLU_OFF(ploop, pos) (pos & (to_bytes(1 << ploop->cluster_log) - 1))
 #define CLU_TO_POS(ploop, clu) to_bytes((loff_t)clu << ploop->cluster_log)
 #define POS_TO_CLU(ploop, pos) (to_sector(pos) >> ploop->cluster_log)
+#define SEC_TO_CLU(ploop, sec) (sec >> ploop->cluster_log)
+#define CLU_TO_SEC(ploop, clu) ((sector_t)clu << ploop->cluster_log)
 #define CLU_SIZE(ploop) to_bytes((u32)1 << ploop->cluster_log)
 
 enum piwb_type {
_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to