diff --git a/src/system/kernel/cache/block_allocator.cpp b/src/system/kernel/cache/block_allocator.cpp index 9444b45ce4..e25837231d 100644 --- a/src/system/kernel/cache/block_allocator.cpp +++ b/src/system/kernel/cache/block_allocator.cpp @@ -8,9 +8,10 @@ #include -#include #include #include +#include +#include #include @@ -199,8 +200,9 @@ block_range::New(block_cache *cache, block_range **_range) memset(range, 0, sizeof(block_range) + cache->chunks_per_range * sizeof(block_chunk)); range->base = address; - // insert into free ranges list in cache + // insert into free ranges list and hash in cache cache->free_ranges.Add(range); + hash_insert(cache->ranges_hash, range); *_range = range; return B_OK; @@ -234,8 +236,9 @@ block_range::Delete(block_cache *cache, block_range *range) vm_page_set_state(range->pages[i], PAGE_STATE_FREE); } - // remove from cache free list + // remove from cache free list and hash cache->free_ranges.Remove(range); + hash_remove(cache->ranges_hash, range); free(range); } diff --git a/src/system/kernel/cache/block_cache.cpp b/src/system/kernel/cache/block_cache.cpp index 45fc2fd807..540dff1c1d 100644 --- a/src/system/kernel/cache/block_cache.cpp +++ b/src/system/kernel/cache/block_cache.cpp @@ -222,7 +222,6 @@ block_cache::GetFreeRange() return NULL; } - hash_insert(ranges_hash, range); return range; }