Index: uspace/srv/bd/hr/util.c
===================================================================
--- uspace/srv/bd/hr/util.c	(revision d1d355f9820c7738d073714c023e911fa335637a)
+++ uspace/srv/bd/hr/util.c	(revision c2f016024f0758994190e57db1b2f69bb231a150)
@@ -1018,4 +1018,13 @@
 	}
 
+	for (size_t i = 0; i < vol->hotspare_no; i++) {
+		if (vol->hotspares[i].svc_id == hotspare) {
+			HR_ERROR("%s(): hotspare (%" PRIun ") already used in "
+			    "%s\n", __func__, hotspare, vol->devname);
+			rc = EEXIST;
+			goto error;
+		}
+	}
+
 	rc = block_init(hotspare);
 	if (rc != EOK)
@@ -1029,5 +1038,8 @@
 	}
 
-	if (hs_blkno < vol->truncated_blkno - vol->meta_ops->get_size()) {
+	if (hs_blkno - vol->meta_ops->get_size() < vol->truncated_blkno) {
+		HR_ERROR("%s(): hotspare (%" PRIun ") doesn't have enough "
+		    "blocks\n", __func__, hotspare);
+
 		rc = EINVAL;
 		block_fini(hotspare);
