From 088dd15449522ab043d72cb8d8b7c65c07804708 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sat, 4 Jun 2022 00:18:17 +0300 Subject: [PATCH] Exclude empty inodes from stats --- src/blockstore_init.cpp | 6 +++++- src/blockstore_stable.cpp | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/blockstore_init.cpp b/src/blockstore_init.cpp index 506a36cd..dd848e24 100644 --- a/src/blockstore_init.cpp +++ b/src/blockstore_init.cpp @@ -912,7 +912,11 @@ void blockstore_init_journal::erase_dirty_object(blockstore_dirty_db_t::iterator ? clean_it->second.location : UINT64_MAX; if (exists && clean_loc == UINT64_MAX) { - bs->inode_space_stats[oid.inode] -= bs->block_size; + auto & sp = bs->inode_space_stats[oid.inode]; + if (sp > bs->block_size) + sp -= bs->block_size; + else + bs->inode_space_stats.erase(oid.inode); } bs->erase_dirty(dirty_it, dirty_end, clean_loc); // Remove it from the flusher's queue, too diff --git a/src/blockstore_stable.cpp b/src/blockstore_stable.cpp index ca2ba8db..c6f205da 100644 --- a/src/blockstore_stable.cpp +++ b/src/blockstore_stable.cpp @@ -200,7 +200,11 @@ void blockstore_impl_t::mark_stable(const obj_ver_id & v, bool forget_dirty) } else if (IS_DELETE(dirty_it->second.state)) { - inode_space_stats[dirty_it->first.oid.inode] -= block_size; + auto & sp = inode_space_stats[dirty_it->first.oid.inode]; + if (sp > block_size) + sp -= block_size; + else + inode_space_stats.erase(dirty_it->first.oid.inode); } } if (forget_dirty && (IS_BIG_WRITE(dirty_it->second.state) ||