From 0ca9fc789f235ca7697e76d3707d34266a32cf1c Mon Sep 17 00:00:00 2001 From: Tom Marshall Date: Wed, 9 Oct 2019 11:32:36 -0700 Subject: [PATCH] Rename some stuff and limit LBLK_SHIFT_MAX --- dm-compress/dm-compress.c | 36 ++++++++++----------- include/linux/dm-compress.h | 62 ++++++++++++++++++------------------- libcbd/check.c | 18 +++++------ 3 files changed, 58 insertions(+), 58 deletions(-) diff --git a/dm-compress/dm-compress.c b/dm-compress/dm-compress.c index f877b5b..0a1c8c1 100644 --- a/dm-compress/dm-compress.c +++ b/dm-compress/dm-compress.c @@ -75,7 +75,7 @@ struct dm_compress /* Currently cached lblk data (if any) */ u64 lblk_num; bool lblk_dirty; - struct lblk_alloc* lblk_alloc; + struct lblk_alloc_elem* lblk_alloc; void* lblk; @@ -197,8 +197,8 @@ zone_pblk_alloc_write(struct dm_compress* dc) u32 count; BUG_ON(dc->zone_pblk_alloc_idx == ZONE_NONE); - pblk = zone_pblk_alloc_off(&dc->params, dc->zone_pblk_alloc_idx); - count = zone_pblk_alloc_len(&dc->params); + pblk = pblk_alloc_off(&dc->params, dc->zone_pblk_alloc_idx); + count = pblk_alloc_len(&dc->params); ret = blkdev_pblk_write(dc->dev->bdev, pblk, count, dc->zone_pblk_alloc); if (ret != 0) { @@ -241,8 +241,8 @@ zone_pblk_alloc_read(struct dm_compress* dc, u32 idx) return ret; } - pblk = zone_pblk_alloc_off(&dc->params, idx); - count = zone_pblk_alloc_len(&dc->params); + pblk = pblk_alloc_off(&dc->params, idx); + count = pblk_alloc_len(&dc->params); ret = blkdev_pblk_read(dc->dev->bdev, pblk, count, dc->zone_pblk_alloc); if (ret) { @@ -261,7 +261,7 @@ zone_pblk_alloc_read(struct dm_compress* dc, u32 idx) static u64 zone_pblk_alloc_get(struct dm_compress* dc, u32 zone_hint) { - u32 zone_pblk_count = zone_pblk_alloc_len(&dc->params) * PBLK_SIZE_BITS; + u32 zone_pblk_count = pblk_alloc_len(&dc->params) * PBLK_SIZE_BITS; u32 zone; u32 idx; @@ -295,7 +295,7 @@ zone_pblk_alloc_get(struct dm_compress* dc, u32 zone_hint) static int zone_pblk_alloc_put(struct dm_compress* dc, u64 pblk) { - u32 zone_pblk_count = zone_pblk_alloc_len(&dc->params) * PBLK_SIZE_BITS; + u32 zone_pblk_count = pblk_alloc_len(&dc->params) * PBLK_SIZE_BITS; u32 zone; u32 idx; int ret; @@ -345,8 +345,8 @@ zone_lblk_alloc_write(struct dm_compress* dc) } BUG_ON(dc->zone_lblk_alloc_idx == ZONE_NONE); - pblk = zone_lblk_alloc_off(&dc->params, dc->zone_lblk_alloc_idx); - count = zone_lblk_alloc_len(&dc->params); + pblk = lblk_alloc_off(&dc->params, dc->zone_lblk_alloc_idx); + count = lblk_alloc_len(&dc->params); ret = blkdev_pblk_write(dc->dev->bdev, pblk, count, dc->zone_lblk_alloc); if (ret != 0) { @@ -371,8 +371,8 @@ zone_lblk_alloc_read(struct dm_compress* dc, u32 idx) return 0; } - pblk = zone_lblk_alloc_off(&dc->params, idx); - count = zone_lblk_alloc_len(&dc->params); + pblk = lblk_alloc_off(&dc->params, idx); + count = lblk_alloc_len(&dc->params); ret = blkdev_pblk_read(dc->dev->bdev, pblk, count, dc->zone_lblk_alloc); if (ret == 0) { dc->zone_lblk_alloc_idx = idx; @@ -504,7 +504,7 @@ lblk_write(struct dm_compress* dc) } } - cbd_lblk_alloc_put(&dc->params, + lblk_alloc_elem_put(&dc->params, dc->zone_lblk_alloc, zone_lblk, dc->lblk_alloc); ret = zone_lblk_alloc_write(dc); if (ret != 0) { @@ -562,7 +562,7 @@ lblk_read(struct dm_compress* dc, u64 idx) printk(KERN_ERR " zone_lblk_alloc_read failed\n"); return ret; } - cbd_lblk_alloc_get(&dc->params, + lblk_alloc_elem_get(&dc->params, dc->zone_lblk_alloc, zone_lblk, dc->lblk_alloc); c_len = dc->lblk_alloc->len; @@ -663,10 +663,10 @@ compress_free_buffers(struct dm_compress* dc) kfree(dc->lblk_alloc); dc->lblk_alloc = NULL; - compress_free_pages(dc->zone_lblk_alloc, PBLK_SIZE * zone_lblk_alloc_len(&dc->params)); + compress_free_pages(dc->zone_lblk_alloc, PBLK_SIZE * lblk_alloc_len(&dc->params)); dc->zone_lblk_alloc = NULL; - compress_free_pages(dc->zone_pblk_alloc, PBLK_SIZE * zone_pblk_alloc_len(&dc->params)); + compress_free_pages(dc->zone_pblk_alloc, PBLK_SIZE * pblk_alloc_len(&dc->params)); dc->zone_pblk_alloc = NULL; compress_free_pages(dc->lz4_cbuf, PBLK_SIZE * lblk_per_pblk(&dc->params)); @@ -696,20 +696,20 @@ compress_alloc_buffers(struct dm_compress* dc) } dc->zone_pblk_alloc_idx = ZONE_NONE; dc->zone_pblk_alloc_dirty = false; - dc->zone_pblk_alloc = compress_alloc_pages(PBLK_SIZE * zone_pblk_alloc_len(&dc->params)); + dc->zone_pblk_alloc = compress_alloc_pages(PBLK_SIZE * pblk_alloc_len(&dc->params)); if (!dc->zone_pblk_alloc) { printk(KERN_ERR "%s: Failed to alloc zone_pblk_alloc\n", __func__); goto out_nomem; } dc->zone_lblk_alloc_idx = ZONE_NONE; - dc->zone_lblk_alloc = compress_alloc_pages(PBLK_SIZE * zone_lblk_alloc_len(&dc->params)); + dc->zone_lblk_alloc = compress_alloc_pages(PBLK_SIZE * lblk_alloc_len(&dc->params)); if (!dc->zone_lblk_alloc) { printk(KERN_ERR "%s: Failed to alloc zone_lblk_alloc\n", __func__); goto out_nomem; } dc->lblk_num = LBLK_NONE; dc->lblk_dirty = false; - dc->lblk_alloc = kmalloc(offsetof(struct lblk_alloc, pblk[lblk_per_pblk(&dc->params)]), GFP_KERNEL); + dc->lblk_alloc = kmalloc(offsetof(struct lblk_alloc_elem, pblk[lblk_per_pblk(&dc->params)]), GFP_KERNEL); if (!dc->lblk_alloc) { printk(KERN_ERR "%s: Failed to alloc lblk_alloc\n", __func__); goto out_nomem; diff --git a/include/linux/dm-compress.h b/include/linux/dm-compress.h index ecc30df..5214ceb 100644 --- a/include/linux/dm-compress.h +++ b/include/linux/dm-compress.h @@ -11,7 +11,7 @@ #define PBLK_PER_SECTOR (1 << (PBLK_SHIFT - SECTOR_SHIFT)) #define LBLK_SHIFT_MIN 1 -#define LBLK_SHIFT_MAX (30 - PBLK_SHIFT) +#define LBLK_SHIFT_MAX (20 - PBLK_SHIFT) #define CBD_HEADER_BLOCKS 1 @@ -45,7 +45,7 @@ struct cbd_header { struct cbd_params params; }; -struct lblk_alloc +struct lblk_alloc_elem { u32 len; /* Compressed length */ u64 pblk[1]; /* Vector of physical blocks */ @@ -157,13 +157,13 @@ lblk_per_pblk(const struct cbd_params* params) } static inline u32 -zone_pblk_alloc_len(const struct cbd_params* params) +pblk_alloc_len(const struct cbd_params* params) { return 1; } static inline u32 -zone_lblk_alloc_elem_len(const struct cbd_params* params) +lblk_alloc_elem_len(const struct cbd_params* params) { u32 elem_len_bytes = (params->lblk_shift + PBLK_SHIFT > 16) ? 4 : 2; u32 elem_pblk_bytes = (params->nr_pblk <= 0xffff ? 2 : @@ -172,22 +172,22 @@ zone_lblk_alloc_elem_len(const struct cbd_params* params) } static inline u32 -zone_lblk_alloc_len(const struct cbd_params* params) +lblk_alloc_len(const struct cbd_params* params) { - return DIV_ROUND_UP(params->lblk_per_zone * zone_lblk_alloc_elem_len(params), PBLK_SIZE); + return DIV_ROUND_UP(params->lblk_per_zone * lblk_alloc_elem_len(params), PBLK_SIZE); } static inline u32 zone_metadata_len(const struct cbd_params* params) { - return zone_pblk_alloc_len(params) + - zone_lblk_alloc_len(params); + return pblk_alloc_len(params) + + lblk_alloc_len(params); } static inline u32 zone_data_len(const struct cbd_params* params) { - return zone_pblk_alloc_len(params) * PBLK_SIZE * BITS_PER_BYTE; + return pblk_alloc_len(params) * PBLK_SIZE * BITS_PER_BYTE; } static inline u32 @@ -204,24 +204,24 @@ zone_off(const struct cbd_params* params, u32 idx) } static inline u64 -zone_pblk_alloc_off(const struct cbd_params* params, u32 idx) +pblk_alloc_off(const struct cbd_params* params, u32 idx) { return zone_off(params, idx) + 0; } static inline u64 -zone_lblk_alloc_off(const struct cbd_params* params, u32 idx) +lblk_alloc_off(const struct cbd_params* params, u32 idx) { return zone_off(params, idx) + - zone_pblk_alloc_len(params); + pblk_alloc_len(params); } static inline u64 zone_data_off(const struct cbd_params* params, u32 idx) { return zone_off(params, idx) + - zone_pblk_alloc_len(params) + - zone_lblk_alloc_len(params); + pblk_alloc_len(params) + + lblk_alloc_len(params); } static inline void @@ -254,7 +254,7 @@ cbd_header_put(u8* buf, const struct cbd_header* header) /* * XXX: - * nr_bits = zone_pblk_alloc_len(params) * PBLK_SIZE; + * nr_bits = pblk_alloc_len(params) * PBLK_SIZE; * bit = find_next_zero_bit_le(buf, nr_bits); * if (bit < nr_bits) { * set_bit_le(bit, buf); @@ -294,61 +294,61 @@ cbd_bitmap_free(u8* buf, u32 idx) } static inline void -cbd_lblk_alloc_get(const struct cbd_params* params, - const u8* buf, u32 idx, struct lblk_alloc* alloc) +lblk_alloc_elem_get(const struct cbd_params* params, + const u8* buf, u32 idx, struct lblk_alloc_elem* elem) { - const u8* raw = buf + idx * zone_lblk_alloc_elem_len(params); + const u8* raw = buf + idx * lblk_alloc_elem_len(params); u32 n; if (params->lblk_shift + PBLK_SHIFT > 16) { - alloc->len = get32_le(&raw); + elem->len = get32_le(&raw); } else { - alloc->len = get16_le(&raw); + elem->len = get16_le(&raw); } if (params->nr_pblk <= 0xffff) { for (n = 0; n < lblk_per_pblk(params); ++n) { - alloc->pblk[n] = get16_le(&raw); + elem->pblk[n] = get16_le(&raw); } } else if (params->nr_pblk <= 0xffffffff) { for (n = 0; n < lblk_per_pblk(params); ++n) { - alloc->pblk[n] = get32_le(&raw); + elem->pblk[n] = get32_le(&raw); } } else { for (n = 0; n < lblk_per_pblk(params); ++n) { - alloc->pblk[n] = get48_le(&raw); + elem->pblk[n] = get48_le(&raw); } } } static inline void -cbd_lblk_alloc_put(const struct cbd_params* params, - void* buf, u32 idx, const struct lblk_alloc* alloc) +lblk_alloc_elem_put(const struct cbd_params* params, + void* buf, u32 idx, const struct lblk_alloc_elem* elem) { - u8* raw = buf + idx * zone_lblk_alloc_elem_len(params); + u8* raw = buf + idx * lblk_alloc_elem_len(params); u32 n; if (params->lblk_shift + PBLK_SHIFT > 16) { - put32_le(&raw, alloc->len); + put32_le(&raw, elem->len); } else { - put16_le(&raw, alloc->len); + put16_le(&raw, elem->len); } if (params->nr_pblk <= 0xffff) { for (n = 0; n < lblk_per_pblk(params); ++n) { - put16_le(&raw, alloc->pblk[n]); + put16_le(&raw, elem->pblk[n]); } } else if (params->nr_pblk <= 0xffffffff) { for (n = 0; n < lblk_per_pblk(params); ++n) { - put32_le(&raw, alloc->pblk[n]); + put32_le(&raw, elem->pblk[n]); } } else { for (n = 0; n < lblk_per_pblk(params); ++n) { - put48_le(&raw, alloc->pblk[n]); + put48_le(&raw, elem->pblk[n]); } } } diff --git a/libcbd/check.c b/libcbd/check.c index 2c4d9d9..8158d80 100644 --- a/libcbd/check.c +++ b/libcbd/check.c @@ -63,13 +63,13 @@ check_one_lblk(const struct cbd_params* params, const struct zone_metadata* zm, u8** pblk_used) { - struct lblk_alloc* alloc; + struct lblk_alloc_elem* alloc; u32 n; u64 pblk; u32 rel_pblk; - alloc = calloc(1, offsetof(struct lblk_alloc, pblk[lblk_per_pblk(params)])); - cbd_lblk_alloc_get(params, zm->lblk_alloc, lblk, alloc); + alloc = calloc(1, offsetof(struct lblk_alloc_elem, pblk[lblk_per_pblk(params)])); + lblk_alloc_elem_get(params, zm->lblk_alloc, lblk, alloc); printf(" lblk[%u]: len=%u\n", lblk, alloc->len); for (n = 0; n < lblk_per_pblk(params); ++n) { pblk = alloc->pblk[n]; @@ -128,7 +128,7 @@ check_zone_metadata(const struct cbd_params* params, pblk_used = calloc(params->nr_zones, sizeof(void*)); for (zone = 0; zone < params->nr_zones; ++zone) { - pblk_used[zone] = calloc(1, zone_pblk_alloc_len(params)); + pblk_used[zone] = calloc(1, pblk_alloc_len(params)); } for (zone = 0; zone < params->nr_zones; ++zone) { @@ -164,13 +164,13 @@ cbd_check(const char* dev, for (zone = 0; zone < header.params.nr_zones; ++zone) { zmvec[zone].pblk_alloc = calloc(1, PBLK_SIZE); pblk_read(devfd, - zone_pblk_alloc_off(&header.params, zone), - zone_pblk_alloc_len(&header.params), + pblk_alloc_off(&header.params, zone), + pblk_alloc_len(&header.params), zmvec[zone].pblk_alloc); - zmvec[zone].lblk_alloc = calloc(zone_lblk_alloc_len(&header.params), PBLK_SIZE); + zmvec[zone].lblk_alloc = calloc(lblk_alloc_len(&header.params), PBLK_SIZE); pblk_read(devfd, - zone_lblk_alloc_off(&header.params, zone), - zone_lblk_alloc_len(&header.params), + lblk_alloc_off(&header.params, zone), + lblk_alloc_len(&header.params), zmvec[zone].lblk_alloc); }