Support xxhash 32-bit checksums (data_csum_type=xxh3_32)
This commit is contained in:
@@ -7,7 +7,7 @@ add_executable(vitastor-disk
|
||||
disk_tool.cpp disk_simple_offsets.cpp
|
||||
disk_tool_discard.cpp disk_tool_journal.cpp disk_tool_meta.cpp disk_tool_prepare.cpp disk_tool_resize.cpp
|
||||
disk_tool_resize_auto.cpp disk_tool_udev.cpp disk_tool_utils.cpp disk_tool_upgrade.cpp
|
||||
../util/crc32c.c ../util/str_util.cpp ../util/json_util.cpp ../../json11/json11.cpp ../util/rw_blocking.cpp ../util/allocator.cpp ../util/ringloop.cpp
|
||||
../util/crc32c.c ../util/xxhash.c ../util/str_util.cpp ../util/json_util.cpp ../../json11/json11.cpp ../util/rw_blocking.cpp ../util/allocator.cpp ../util/ringloop.cpp
|
||||
../blockstore/blockstore_disk.cpp ../blockstore/blockstore_heap.cpp ../blockstore/multilist.cpp
|
||||
)
|
||||
target_link_libraries(vitastor-disk
|
||||
|
||||
@@ -135,8 +135,8 @@ struct disk_tool_t
|
||||
void choose_journal_block(uint32_t je_size);
|
||||
int resize_rebuild_journal();
|
||||
int resize_write_new_journal();
|
||||
void remap_big_write(heap_entry_t *wr);
|
||||
void remap_small_write(heap_entry_t *wr);
|
||||
void remap_big_write(blockstore_heap_t *heap, heap_entry_t *wr);
|
||||
void remap_small_write(blockstore_heap_t *heap, heap_entry_t *wr);
|
||||
int resize_rebuild_meta();
|
||||
int resize_write_new_meta();
|
||||
void free_new_meta();
|
||||
|
||||
@@ -765,7 +765,7 @@ close_err0:
|
||||
{
|
||||
*wr->get_checksum(&heap) = sscanf_json("%jx", write_entry["data_crc32c"]);
|
||||
}
|
||||
wr->crc32c = wr->calc_crc32c();
|
||||
wr->checksum = wr->calc_checksum(&heap);
|
||||
assert((uint8_t*)wr + wr->size == new_meta_buf + meta_offset + used_space);
|
||||
}
|
||||
}
|
||||
@@ -808,7 +808,7 @@ close_err:
|
||||
fromhexstr(meta_entry["ext_bitmap"].string_value(), new_clean_entry_bitmap_size, wr->get_ext_bitmap(&heap));
|
||||
if (new_data_csum_size)
|
||||
fromhexstr(meta_entry["block_csums"].string_value(), new_data_csum_size, wr->get_checksums(&heap));
|
||||
wr->crc32c = wr->calc_crc32c();
|
||||
wr->checksum = wr->calc_checksum(&heap);
|
||||
assert((uint8_t*)wr + wr->size == new_meta_buf + meta_offset + used_space);
|
||||
auto j_it = journal_by_object.find(oid);
|
||||
if (j_it != journal_by_object.end())
|
||||
@@ -874,7 +874,7 @@ close_err:
|
||||
assert(0);
|
||||
}
|
||||
wr->size = wr->get_size(&heap);
|
||||
wr->crc32c = wr->calc_crc32c();
|
||||
wr->checksum = wr->calc_checksum(&heap);
|
||||
assert((uint8_t*)wr + wr->size == new_meta_buf + meta_offset + used_space);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -526,7 +526,7 @@ int disk_tool_t::resize_write_new_journal()
|
||||
return 0;
|
||||
}
|
||||
|
||||
void disk_tool_t::remap_big_write(heap_entry_t *wr)
|
||||
void disk_tool_t::remap_big_write(blockstore_heap_t *heap, heap_entry_t *wr)
|
||||
{
|
||||
uint64_t block_num = wr->big().block_num;
|
||||
auto remap_it = data_remap.find(block_num);
|
||||
@@ -539,10 +539,10 @@ void disk_tool_t::remap_big_write(heap_entry_t *wr)
|
||||
}
|
||||
block_num += data_idx_diff;
|
||||
wr->big().block_num = block_num;
|
||||
wr->crc32c = wr->calc_crc32c();
|
||||
wr->checksum = wr->calc_checksum(heap);
|
||||
}
|
||||
|
||||
void disk_tool_t::remap_small_write(heap_entry_t *wr)
|
||||
void disk_tool_t::remap_small_write(blockstore_heap_t *heap, heap_entry_t *wr)
|
||||
{
|
||||
if (new_meta_format == BLOCKSTORE_META_FORMAT_HEAP && wr->small().len > 0)
|
||||
{
|
||||
@@ -554,7 +554,7 @@ void disk_tool_t::remap_small_write(heap_entry_t *wr)
|
||||
memcpy(new_journal_ptr, buffer_area+wr->small().location, wr->small().len);
|
||||
wr->small().location = new_journal_ptr-new_journal_buf;
|
||||
new_journal_ptr += wr->small().len;
|
||||
wr->crc32c = wr->calc_crc32c();
|
||||
wr->checksum = wr->calc_checksum(heap);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -601,11 +601,11 @@ int disk_tool_t::resize_rebuild_meta()
|
||||
{
|
||||
if (wr->type() == BS_HEAP_BIG_WRITE || wr->type() == BS_HEAP_BIG_INTENT)
|
||||
{
|
||||
remap_big_write(wr);
|
||||
remap_big_write(heap, wr);
|
||||
}
|
||||
else if (wr->type() == BS_HEAP_SMALL_WRITE)
|
||||
{
|
||||
remap_small_write(wr);
|
||||
remap_small_write(heap, wr);
|
||||
}
|
||||
// New -> New
|
||||
if ((new_meta_pos % dsk.meta_block_size) + wr->size > dsk.meta_block_size)
|
||||
@@ -666,7 +666,7 @@ int disk_tool_t::resize_rebuild_meta()
|
||||
memcpy(((uint8_t*)wr) + sizeof(heap_big_write_t) + new_clean_entry_bitmap_size, bitmap+new_clean_entry_bitmap_size, new_clean_entry_bitmap_size);
|
||||
memcpy(((uint8_t*)wr) + sizeof(heap_big_write_t) + 2*new_clean_entry_bitmap_size, bitmap+2*new_clean_entry_bitmap_size, new_data_csum_size);
|
||||
}
|
||||
wr->crc32c = wr->calc_crc32c();
|
||||
wr->checksum = wr->calc_checksum(&dsk);
|
||||
new_meta_pos += wr->size;
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user