Index: uspace/lib/block/libblock.c
===================================================================
--- uspace/lib/block/libblock.c	(revision 14c29babfbbf6ce69928f4a67451bae2766ad0de)
+++ uspace/lib/block/libblock.c	(revision ccbc5b56e25856b61f48d1c5d08df98b47939062)
@@ -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;
 				}
 
