I am trying to understand the assertion failure. Here it is again: Assertion failed: (!entry->fh_hk.inavl), function _mdcache_lru_unref, file mdcache_lru.c, line 1971. I think mdcache_entry_t is always allocated by alloc_cache_entry, and I think that zero initializes every field. inavl is set to true in cih_set_latched, which happens in the /* We won the race. */ /* nentry not reachable yet; no need to lock */ case inside mdcache_new_entry. I think that means mdcache_find_keyed_reason returned ERR_FSAL_NOENT, then mdcache_alloc_handle allocates the entry, then cih_get_by_key_latch returns null. But something is wrong?? mdcache_lru_get does make a chain of calls that ends up in cih_remove_checked, which sets inavl=false, but only if entry->fh_hk.inavl && node !!!!!! Maybe node happens to be null? Maybe in this execution path we happened to be using /** New style LRU link */ (see mdcache_fsal_obj_handle).