Index: uspace/lib/block/libblock.c
===================================================================
--- uspace/lib/block/libblock.c	(revision 956d4df8bbb63353196c417c07c85c56831416c2)
+++ uspace/lib/block/libblock.c	(revision 5a58ae29904f03f93a69c9830e1f9cd515ff5d56)
@@ -411,4 +411,5 @@
 	l = hash_table_find(&cache->block_hash, &key);
 	if (l) {
+found:
 		/*
 		 * We found the block in the cache.
@@ -493,4 +494,18 @@
 					fibril_mutex_unlock(&b->lock);
 					goto retry;
+				}
+				l = hash_table_find(&cache->block_hash, &key);
+				if (l) {
+					/*
+					 * Someone else must have already
+					 * instantiated the block while we were
+					 * not holding the cache lock.
+					 * Leave the recycled block on the
+					 * freelist and continue as if we
+					 * found the block of interest during
+					 * the first try.
+					 */
+					fibril_mutex_unlock(&b->lock);
+					goto found;
 				}
 
