+56
−26
Loading
When there is no free cache buffers, we need to free some cache buffers based on very simple algorithm for now, when deleting a file or unload the blobfs, there must no dirty caches, there is no cache buffers after calling spdk_tree_free_buffers(), so we will create another cache free buffers function which only used in file read/write path. When testing blobfs with db_bench, there maybe multiple threads will call alloc_cache_memory_buffer() at same time, and spdk_fs_delete_file_async() maybe called at same time, and it may release file->tree and file structure without holding g_caches_lock, so here we will change the alloc_cache_memory_buffer() to hold the g_caches_lock while releasing the file cache buffers. Fix issue #1133. Change-Id: I115ff97113915630f539c3458c57116d9ff16179 Signed-off-by:Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/668 Tested-by:
SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by:
Jim Harris <james.r.harris@intel.com> Reviewed-by:
Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>