From c696a820832142e3acb95ffd3fd25f4294f3668e Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sat, 17 Oct 2020 22:40:19 +0000 Subject: [PATCH] Replace assert with if + error message (may happen on metadata corruption) --- blockstore_flush.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/blockstore_flush.cpp b/blockstore_flush.cpp index 16199c57..35dec441 100644 --- a/blockstore_flush.cpp +++ b/blockstore_flush.cpp @@ -418,7 +418,12 @@ resume_1: else { clean_disk_entry *new_entry = (clean_disk_entry*)(meta_new.buf + meta_new.pos*bs->clean_entry_size); - assert(new_entry->oid.inode == 0 || new_entry->oid == cur.oid); + if (new_entry->oid.inode != 0 && new_entry->oid != cur.oid) + { + printf("Fatal error (metadata corruption or bug): tried to overwrite non-zero metadata entry %lx (%lx:%lx) with %lx:%lx\n", + clean_loc, new_entry->oid.inode, new_entry->oid.stripe, cur.oid.inode, cur.oid.stripe); + exit(1); + } new_entry->oid = cur.oid; new_entry->version = cur.version; if (!bs->inmemory_meta)