diff --git a/src/bees-context.cc b/src/bees-context.cc index 1c82bd7..ada5a1c 100644 --- a/src/bees-context.cc +++ b/src/bees-context.cc @@ -55,6 +55,12 @@ BeesFdCache::open_root(shared_ptr ctx, uint64_t root) Fd BeesFdCache::open_root_ino(shared_ptr ctx, uint64_t root, uint64_t ino) { + if (m_file_cache_timer.age() > BEES_COMMIT_INTERVAL) { + BEESINFO("Clearing open FD cache to enable file delete"); + m_file_cache.clear(); + m_file_cache_timer.reset(); + BEESCOUNT(open_clear); + } return m_file_cache(ctx, root, ino); } diff --git a/src/bees.h b/src/bees.h index 8a17960..8c74ca2 100644 --- a/src/bees.h +++ b/src/bees.h @@ -659,6 +659,7 @@ class BeesFdCache { LRUCache, uint64_t> m_root_cache; LRUCache, uint64_t, uint64_t> m_file_cache; Timer m_root_cache_timer; + Timer m_file_cache_timer; public: BeesFdCache();