Fix header checksum after new store write-meta
This commit is contained in:
@@ -427,6 +427,9 @@ int main(int argc, char *argv[])
|
|||||||
self.dsk.open_journal();
|
self.dsk.open_journal();
|
||||||
self.dsk.calc_lengths();
|
self.dsk.calc_lengths();
|
||||||
self.dsk.close_all();
|
self.dsk.close_all();
|
||||||
|
self.new_meta_device = self.dsk.meta_device;
|
||||||
|
self.new_meta_offset = self.dsk.meta_offset;
|
||||||
|
self.new_meta_len = self.dsk.meta_area_size;
|
||||||
}
|
}
|
||||||
std::string json_err;
|
std::string json_err;
|
||||||
json11::Json meta = json11::Json::parse(read_all_fd(0), json_err);
|
json11::Json meta = json11::Json::parse(read_all_fd(0), json_err);
|
||||||
|
|||||||
@@ -589,6 +589,7 @@ int disk_tool_t::write_json_meta(json11::Json meta)
|
|||||||
|
|
||||||
int disk_tool_t::write_json_heap(json11::Json meta, json11::Json journal)
|
int disk_tool_t::write_json_heap(json11::Json meta, json11::Json journal)
|
||||||
{
|
{
|
||||||
|
assert(new_meta_len >= sizeof(blockstore_meta_header_v3_t));
|
||||||
new_meta_buf = (uint8_t*)memalign_or_die(MEM_ALIGNMENT, new_meta_len);
|
new_meta_buf = (uint8_t*)memalign_or_die(MEM_ALIGNMENT, new_meta_len);
|
||||||
memset(new_meta_buf, 0, new_meta_len);
|
memset(new_meta_buf, 0, new_meta_len);
|
||||||
new_meta_hdr = (blockstore_meta_header_v3_t *)new_meta_buf;
|
new_meta_hdr = (blockstore_meta_header_v3_t *)new_meta_buf;
|
||||||
@@ -606,9 +607,9 @@ int disk_tool_t::write_json_heap(json11::Json meta, json11::Json journal)
|
|||||||
: (meta["data_csum_type"].string_value() == "crc32c"
|
: (meta["data_csum_type"].string_value() == "crc32c"
|
||||||
? BLOCKSTORE_CSUM_CRC32C
|
? BLOCKSTORE_CSUM_CRC32C
|
||||||
: BLOCKSTORE_CSUM_NONE);
|
: BLOCKSTORE_CSUM_NONE);
|
||||||
|
new_meta_hdr->meta_area_size = new_meta_len;
|
||||||
new_meta_hdr->csum_block_size = meta["csum_block_size"].uint64_value();
|
new_meta_hdr->csum_block_size = meta["csum_block_size"].uint64_value();
|
||||||
new_meta_hdr->header_csum = crc32c(0, new_meta_hdr, sizeof(blockstore_meta_header_v3_t));
|
new_meta_hdr->header_csum = crc32c(0, new_meta_hdr, sizeof(blockstore_meta_header_v3_t));
|
||||||
new_meta_hdr->meta_area_size = new_meta_len;
|
|
||||||
new_clean_entry_bitmap_size = (new_meta_hdr->data_block_size / new_meta_hdr->bitmap_granularity + 7) / 8;
|
new_clean_entry_bitmap_size = (new_meta_hdr->data_block_size / new_meta_hdr->bitmap_granularity + 7) / 8;
|
||||||
new_clean_entry_size = 0;
|
new_clean_entry_size = 0;
|
||||||
new_entries_per_block = 0;
|
new_entries_per_block = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user