Make block_sizes uint64_t to prevent other integer overflow errors in the future
This commit is contained in:
@@ -26,14 +26,14 @@ class allocator_t;
|
|||||||
struct blockstore_disk_t
|
struct blockstore_disk_t
|
||||||
{
|
{
|
||||||
std::string data_device, meta_device, journal_device;
|
std::string data_device, meta_device, journal_device;
|
||||||
uint32_t data_block_size;
|
uint64_t data_block_size;
|
||||||
uint64_t cfg_journal_size, cfg_data_size;
|
uint64_t cfg_journal_size, cfg_data_size;
|
||||||
// Required write alignment and journal/metadata/data areas' location alignment
|
// Required write alignment and journal/metadata/data areas' location alignment
|
||||||
uint32_t disk_alignment = 4096;
|
uint32_t disk_alignment = 4096;
|
||||||
// Journal block size - minimum_io_size of the journal device is the best choice
|
// Journal block size - minimum_io_size of the journal device is the best choice
|
||||||
uint32_t journal_block_size = 4096;
|
uint64_t journal_block_size = 4096;
|
||||||
// Metadata block size - minimum_io_size of the metadata device is the best choice
|
// Metadata block size - minimum_io_size of the metadata device is the best choice
|
||||||
uint32_t meta_block_size = 4096;
|
uint64_t meta_block_size = 4096;
|
||||||
// Atomic write size of the data block device
|
// Atomic write size of the data block device
|
||||||
uint32_t atomic_write_size = 4096;
|
uint32_t atomic_write_size = 4096;
|
||||||
// Whether we should set RWF_ATOMIC on atomic writes
|
// Whether we should set RWF_ATOMIC on atomic writes
|
||||||
|
|||||||
@@ -301,7 +301,7 @@ int blockstore_heap_t::read_blocks(uint64_t disk_offset, uint64_t disk_size, uin
|
|||||||
heap_entry_t *wr = (heap_entry_t*)data;
|
heap_entry_t *wr = (heap_entry_t*)data;
|
||||||
if (wr->size > dsk->meta_block_size-block_offset)
|
if (wr->size > dsk->meta_block_size-block_offset)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Error: entry is too large in metadata block %u at %u (%u > max %u bytes). ",
|
fprintf(stderr, "Error: entry is too large in metadata block %u at %u (%u > max %ju bytes). ",
|
||||||
block_num, block_offset, wr->size, dsk->meta_block_size-block_offset);
|
block_num, block_offset, wr->size, dsk->meta_block_size-block_offset);
|
||||||
corrupted_block:
|
corrupted_block:
|
||||||
if (allow_corrupted)
|
if (allow_corrupted)
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ resume_1:
|
|||||||
printf(
|
printf(
|
||||||
"Configuration stored in metadata superblock"
|
"Configuration stored in metadata superblock"
|
||||||
" (meta_block_size=%u, data_block_size=%u, bitmap_granularity=%u, data_csum_type=%u, csum_block_size=%u, meta_area_size=%ju)"
|
" (meta_block_size=%u, data_block_size=%u, bitmap_granularity=%u, data_csum_type=%u, csum_block_size=%u, meta_area_size=%ju)"
|
||||||
" differs from OSD configuration (%u/%u/%u, %u/%u, %ju).\n",
|
" differs from OSD configuration (%ju/%ju/%u, %u/%u, %ju).\n",
|
||||||
hdr->meta_block_size, hdr->data_block_size, hdr->bitmap_granularity,
|
hdr->meta_block_size, hdr->data_block_size, hdr->bitmap_granularity,
|
||||||
hdr->data_csum_type, hdr->csum_block_size, hdr->meta_area_size,
|
hdr->data_csum_type, hdr->csum_block_size, hdr->meta_area_size,
|
||||||
bs->dsk.meta_block_size, bs->dsk.data_block_size, bs->dsk.bitmap_granularity,
|
bs->dsk.meta_block_size, bs->dsk.data_block_size, bs->dsk.bitmap_granularity,
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ resume_1:
|
|||||||
printf(
|
printf(
|
||||||
"Configuration stored in metadata superblock"
|
"Configuration stored in metadata superblock"
|
||||||
" (meta_block_size=%u, data_block_size=%u, bitmap_granularity=%u, data_csum_type=%u, csum_block_size=%u)"
|
" (meta_block_size=%u, data_block_size=%u, bitmap_granularity=%u, data_csum_type=%u, csum_block_size=%u)"
|
||||||
" differs from OSD configuration (%u/%u/%u, %u/%u).\n",
|
" differs from OSD configuration (%ju/%ju/%u, %u/%u).\n",
|
||||||
hdr->meta_block_size, hdr->data_block_size, hdr->bitmap_granularity,
|
hdr->meta_block_size, hdr->data_block_size, hdr->bitmap_granularity,
|
||||||
hdr->data_csum_type, hdr->csum_block_size,
|
hdr->data_csum_type, hdr->csum_block_size,
|
||||||
bs->dsk.meta_block_size, bs->dsk.data_block_size, bs->dsk.bitmap_granularity,
|
bs->dsk.meta_block_size, bs->dsk.data_block_size, bs->dsk.bitmap_granularity,
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ void disk_tool_t::dump_meta_header(blockstore_meta_header_v3_t *hdr)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("{\"version\":\"0.5\",\"meta_block_size\":%u,\"entries\":[\n", dsk.meta_block_size);
|
printf("{\"version\":\"0.5\",\"meta_block_size\":%ju,\"entries\":[\n", dsk.meta_block_size);
|
||||||
}
|
}
|
||||||
first_entry = true;
|
first_entry = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -212,11 +212,11 @@ void disk_tool_t::resize_init(blockstore_meta_header_v3_t *hdr)
|
|||||||
dsk.calc_lengths();
|
dsk.calc_lengths();
|
||||||
if (((new_data_offset-dsk.data_offset) % dsk.data_block_size))
|
if (((new_data_offset-dsk.data_offset) % dsk.data_block_size))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Data alignment mismatch: old data offset is 0x%jx, new is 0x%jx, but alignment on %x should be equal\n",
|
fprintf(stderr, "Data alignment mismatch: old data offset is 0x%jx, new is 0x%jx, but alignment on %jx should be equal\n",
|
||||||
dsk.data_offset, new_data_offset, dsk.data_block_size);
|
dsk.data_offset, new_data_offset, dsk.data_block_size);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
data_idx_diff = ((int64_t)(dsk.data_offset-new_data_offset)) / dsk.data_block_size;
|
data_idx_diff = ((int64_t)(dsk.data_offset-new_data_offset))/((int64_t)dsk.data_block_size);
|
||||||
free_first = new_data_offset > dsk.data_offset ? (new_data_offset-dsk.data_offset) / dsk.data_block_size : 0;
|
free_first = new_data_offset > dsk.data_offset ? (new_data_offset-dsk.data_offset) / dsk.data_block_size : 0;
|
||||||
free_last = (new_data_offset+new_data_len < dsk.data_offset+dsk.data_len)
|
free_last = (new_data_offset+new_data_len < dsk.data_offset+dsk.data_len)
|
||||||
? (dsk.data_offset+dsk.data_len-new_data_offset-new_data_len) / dsk.data_block_size
|
? (dsk.data_offset+dsk.data_len-new_data_offset-new_data_len) / dsk.data_block_size
|
||||||
@@ -351,7 +351,7 @@ int disk_tool_t::resize_copy_data()
|
|||||||
if (data->res != dsk.data_block_size)
|
if (data->res != dsk.data_block_size)
|
||||||
{
|
{
|
||||||
fprintf(
|
fprintf(
|
||||||
stderr, "Failed to read %u bytes at %ju from %s: %s\n", dsk.data_block_size,
|
stderr, "Failed to read %ju bytes at %ju from %s: %s\n", dsk.data_block_size,
|
||||||
dsk.data_offset + moving_blocks[i].old_loc*dsk.data_block_size, dsk.data_device.c_str(),
|
dsk.data_offset + moving_blocks[i].old_loc*dsk.data_block_size, dsk.data_device.c_str(),
|
||||||
data->res < 0 ? strerror(-data->res) : "short read"
|
data->res < 0 ? strerror(-data->res) : "short read"
|
||||||
);
|
);
|
||||||
@@ -376,7 +376,7 @@ int disk_tool_t::resize_copy_data()
|
|||||||
if (data->res != dsk.data_block_size)
|
if (data->res != dsk.data_block_size)
|
||||||
{
|
{
|
||||||
fprintf(
|
fprintf(
|
||||||
stderr, "Failed to write %u bytes at %ju to %s: %s\n", dsk.data_block_size,
|
stderr, "Failed to write %ju bytes at %ju to %s: %s\n", dsk.data_block_size,
|
||||||
dsk.data_offset + moving_blocks[i].new_loc*dsk.data_block_size, dsk.data_device.c_str(),
|
dsk.data_offset + moving_blocks[i].new_loc*dsk.data_block_size, dsk.data_device.c_str(),
|
||||||
data->res < 0 ? strerror(-data->res) : "short write"
|
data->res < 0 ? strerror(-data->res) : "short write"
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user