Index: uspace/srv/bd/vbd/disk.c
===================================================================
--- uspace/srv/bd/vbd/disk.c	(revision e11c527196d4fd9ad3e9f116763b8eb9e0d3fcc0)
+++ uspace/srv/bd/vbd/disk.c	(revision 8f5e80be83eee36bd8401a84ab2b05b5235c1228)
@@ -452,4 +452,5 @@
 	bool block_inited = false;
 	size_t block_size;
+	aoff64_t nblocks;
 	int rc;
 
@@ -489,4 +490,12 @@
 	}
 
+	rc = block_get_nblocks(sid, &nblocks);
+	if (rc != EOK) {
+		log_msg(LOG_DEFAULT, LVL_ERROR, "Failed getting number of "
+		    "blocks of %s.", disk->svc_name);
+		rc = EIO;
+		goto error;
+	}
+
 	block_inited = true;
 
@@ -502,4 +511,5 @@
 	disk->label = label;
 	disk->block_size = block_size;
+	disk->nblocks = nblocks;
 	disk->present = true;
 
@@ -598,4 +608,5 @@
 	info->anblocks = linfo.anblocks;
 	info->block_size = disk->block_size;
+	info->nblocks = disk->nblocks;
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_disk_info - block_size=%zu",
 	    info->block_size);
Index: uspace/srv/bd/vbd/types/vbd.h
===================================================================
--- uspace/srv/bd/vbd/types/vbd.h	(revision e11c527196d4fd9ad3e9f116763b8eb9e0d3fcc0)
+++ uspace/srv/bd/vbd/types/vbd.h	(revision 8f5e80be83eee36bd8401a84ab2b05b5235c1228)
@@ -100,4 +100,6 @@
 	/** Block size */
 	size_t block_size;
+	/** Total number of blocks */
+	aoff64_t nblocks;
 	/** Used to mark disks still present during re-discovery */
 	bool present;
