Index: uspace/srv/bd/vbd/disk.c
===================================================================
--- uspace/srv/bd/vbd/disk.c	(revision e89a06a6551f1dacee7bb5fa05a9eaa8901612d6)
+++ uspace/srv/bd/vbd/disk.c	(revision e2625b1a1e5a2895b86f0e39c2d70a39e49e042a)
@@ -244,5 +244,5 @@
 {
 	log_msg(LOG_DEFAULT, LVL_DEBUG2, "vbds_part_add_ref");
-	atomic_inc(&part->refcnt);
+	refcount_up(&part->refcnt);
 }
 
@@ -250,5 +250,5 @@
 {
 	log_msg(LOG_DEFAULT, LVL_DEBUG2, "vbds_part_del_ref");
-	if (atomic_predec(&part->refcnt) == 0) {
+	if (refcount_down(&part->refcnt)) {
 		log_msg(LOG_DEFAULT, LVL_DEBUG2, " - free part");
 		free(part);
@@ -328,5 +328,5 @@
 	part->block0 = lpinfo.block0;
 	part->nblocks = lpinfo.nblocks;
-	atomic_set(&part->refcnt, 1);
+	refcount_init(&part->refcnt);
 
 	bd_srvs_init(&part->bds);
Index: uspace/srv/bd/vbd/types/vbd.h
===================================================================
--- uspace/srv/bd/vbd/types/vbd.h	(revision e89a06a6551f1dacee7bb5fa05a9eaa8901612d6)
+++ uspace/srv/bd/vbd/types/vbd.h	(revision e2625b1a1e5a2895b86f0e39c2d70a39e49e042a)
@@ -39,8 +39,8 @@
 
 #include <adt/list.h>
-#include <atomic.h>
 #include <bd_srv.h>
 #include <label/label.h>
 #include <loc.h>
+#include <refcount.h>
 #include <stdbool.h>
 #include <stddef.h>
@@ -83,5 +83,5 @@
 	aoff64_t nblocks;
 	/** Reference count */
-	atomic_t refcnt;
+	atomic_refcount_t refcnt;
 } vbds_part_t;
 
