Index: uspace/srv/bd/hr/superblock.c
===================================================================
--- uspace/srv/bd/hr/superblock.c	(revision 7fba1460fce4fbe7ba78460f6556cfc3bd08f204)
+++ uspace/srv/bd/hr/superblock.c	(revision aaf741ff297c52b299e30bf30b37ec6ea32c8ec9)
@@ -68,5 +68,5 @@
 };
 
-hr_superblock_ops_t *get_type_ops(hr_metadata_type_t type)
+hr_superblock_ops_t *hr_get_meta_type_ops(hr_metadata_type_t type)
 {
 	assert(type >= HR_METADATA_NATIVE && type < HR_METADATA_LAST_DUMMY);
@@ -75,5 +75,5 @@
 }
 
-errno_t find_metadata(service_id_t svc_id, void **rmetadata,
+errno_t hr_find_metadata(service_id_t svc_id, void **rmetadata,
     hr_metadata_type_t *rtype)
 {
@@ -82,5 +82,4 @@
 	errno_t rc;
 	hr_superblock_ops_t *meta_ops;
-	void *meta_block;
 	void *metadata_struct;
 
@@ -94,28 +93,8 @@
 		meta_ops = hr_superblock_ops_all[type];
 
-		metadata_struct = meta_ops->alloc_struct();
-		if (metadata_struct == NULL)
-			return ENOMEM;
-
-		rc = meta_ops->get_block(svc_id, &meta_block);
-		if (rc == ENOMEM) {
-			free(metadata_struct);
-			return ENOMEM;
-		} else if (rc != EOK) {
-			free(metadata_struct);
-			continue;
-		}
-
-		rc = meta_ops->decode(meta_block, metadata_struct);
-
-		free(meta_block);
-
+		rc = meta_ops->probe(svc_id, &metadata_struct);
 		if (rc != EOK) {
-			free(metadata_struct);
-			continue;
-		}
-
-		if (!meta_ops->has_valid_magic(metadata_struct)) {
-			free(metadata_struct);
+			if (rc != ENOFS)
+				return rc;
 			continue;
 		}
