Index: uspace/lib/c/generic/vbd.c
===================================================================
--- uspace/lib/c/generic/vbd.c	(revision 1626cd4d3269f272038f96a6fa17c3536f1b084c)
+++ uspace/lib/c/generic/vbd.c	(revision 6bc542bfcd4de3d747e25cc6e0894f9581445ca1)
@@ -107,5 +107,4 @@
 }
 
-#include <io/log.h>
 /** Get disk information. */
 int vbd_disk_info(vbd_t *vbd, service_id_t sid, vbd_disk_info_t *vinfo)
@@ -115,10 +114,7 @@
 	ipc_call_t answer;
 
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbd_disk_info() begin exchange");
 	exch = async_exchange_begin(vbd->sess);
 	aid_t req = async_send_1(exch, VBD_DISK_INFO, sid, &answer);
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbd_disk_info() read start");
 	int rc = async_data_read_start(exch, vinfo, sizeof(vbd_disk_info_t));
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbd_disk_info() end exch");
 	async_exchange_end(exch);
 
@@ -128,10 +124,8 @@
 	}
 
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbd_disk_info() wait fore req reply");
 	async_wait_for(req, &retval);
 	if (retval != EOK)
 		return EIO;
 
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "vbd_disk_info() done");
 	return EOK;
 }
@@ -293,24 +287,32 @@
 {
 	async_exch_t *exch;
-	sysarg_t part;
+	sysarg_t retval;
+	ipc_call_t answer;
+
+	exch = async_exchange_begin(vbd->sess);
+	aid_t req = async_send_1(exch, VBD_PART_CREATE, disk, &answer);
+	int rc = async_data_write_start(exch, pspec, sizeof(vbd_part_spec_t));
+	async_exchange_end(exch);
+
+	if (rc != EOK) {
+		async_forget(req);
+		return EIO;
+	}
+
+	async_wait_for(req, &retval);
+	if (retval != EOK)
+		return EIO;
+
+	*rpart = (vbd_part_id_t)IPC_GET_ARG1(answer);
+	return EOK;
+
+}
+
+int vbd_part_delete(vbd_t *vbd, vbd_part_id_t part)
+{
+	async_exch_t *exch;
 	int retval;
 
 	exch = async_exchange_begin(vbd->sess);
-	retval = async_req_1_1(exch, VBD_PART_CREATE, disk, &part);
-	async_exchange_end(exch);
-
-	if (retval != EOK)
-		return EIO;
-
-	*rpart = (vbd_part_id_t)part;
-	return EOK;
-}
-
-int vbd_part_delete(vbd_t *vbd, vbd_part_id_t part)
-{
-	async_exch_t *exch;
-	int retval;
-
-	exch = async_exchange_begin(vbd->sess);
 	retval = async_req_1_0(exch, VBD_PART_DELETE, part);
 	async_exchange_end(exch);
Index: uspace/lib/c/include/vbd.h
===================================================================
--- uspace/lib/c/include/vbd.h	(revision 1626cd4d3269f272038f96a6fa17c3536f1b084c)
+++ uspace/lib/c/include/vbd.h	(revision 6bc542bfcd4de3d747e25cc6e0894f9581445ca1)
@@ -59,7 +59,17 @@
 } vbd_disk_info_t;
 
+/** Specification of new partition */
 typedef struct {
+	/** Partition index */
+	int index;
+	/** First block */
+	aoff64_t block0;
+	/** Number of blocks */
+	aoff64_t nblocks;
+	/** Partition type */
+	uint64_t ptype;
 } vbd_part_spec_t;
 
+/** Partition info */
 typedef struct {
 	/** Partition index */
