From cbde49e73d4b91f186a9468df0fb227f7599911a Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Tue, 14 Dec 2021 02:09:36 +0300 Subject: [PATCH] Double-check for double-alloc bugs --- src/blockstore_write.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/blockstore_write.cpp b/src/blockstore_write.cpp index 07a3b61f..784efc9c 100644 --- a/src/blockstore_write.cpp +++ b/src/blockstore_write.cpp @@ -268,6 +268,16 @@ int blockstore_impl_t::dequeue_write(blockstore_op_t *op) cancel_all_writes(op, dirty_it, -ENOSPC); return 2; } +#ifndef NDEBUG + // Double-check to not overwrite anything if easily possible + if (inmemory_meta) + { + uint64_t sector = (loc / (meta_block_size / clean_entry_size)) * meta_block_size; + uint64_t pos = (loc % (meta_block_size / clean_entry_size)); + clean_disk_entry *meta_entry = (clean_disk_entry*)(metadata_buffer + sector + pos*clean_entry_size); + assert(!meta_entry->oid.inode); + } +#endif write_iodepth++; BS_SUBMIT_GET_SQE(sqe, data); dirty_it->second.location = loc << block_order;