Index: uspace/lib/fdisk/include/fdisk.h
===================================================================
--- uspace/lib/fdisk/include/fdisk.h	(revision 603c1d1f2f250c70a6ee5b7b75494f1ed4c16e1a)
+++ uspace/lib/fdisk/include/fdisk.h	(revision b7a4d06b6d03da11c24ad8eee4f374f7b8a7dc13)
@@ -72,4 +72,5 @@
 extern int fdisk_ltype_format(label_type_t, char **);
 extern int fdisk_fstype_format(fdisk_fstype_t, char **);
+extern int fdisk_pkind_format(label_pkind_t, char **);
 
 #endif
Index: uspace/lib/fdisk/include/types/fdisk.h
===================================================================
--- uspace/lib/fdisk/include/types/fdisk.h	(revision 603c1d1f2f250c70a6ee5b7b75494f1ed4c16e1a)
+++ uspace/lib/fdisk/include/types/fdisk.h	(revision b7a4d06b6d03da11c24ad8eee4f374f7b8a7dc13)
@@ -119,4 +119,6 @@
 	/** Label type */
 	label_type_t ltype;
+	/** Label flags */
+	label_flags_t flags;
 } fdisk_label_info_t;
 
@@ -131,4 +133,6 @@
 	/** Capacity */
 	fdisk_cap_t capacity;
+	/** Partition kind */
+	label_pkind_t pkind;
 	/** File system type */
 	fdisk_fstype_t fstype;
@@ -147,4 +151,6 @@
 	/** Desired capacity */
 	fdisk_cap_t capacity;
+	/** Partition kind */
+	label_pkind_t pkind;
 	/** File system type */
 	fdisk_fstype_t fstype;
@@ -153,5 +159,8 @@
 /** Partition info */
 typedef struct {
+	/** Capacity */
 	fdisk_cap_t capacity;
+	/** Partition kind */
+	label_pkind_t pkind;
 	/** File system type */
 	fdisk_fstype_t fstype;
Index: uspace/lib/fdisk/src/fdisk.c
===================================================================
--- uspace/lib/fdisk/src/fdisk.c	(revision 603c1d1f2f250c70a6ee5b7b75494f1ed4c16e1a)
+++ uspace/lib/fdisk/src/fdisk.c	(revision b7a4d06b6d03da11c24ad8eee4f374f7b8a7dc13)
@@ -271,4 +271,5 @@
 	part->block0 = pinfo.block0;
 	part->nblocks = pinfo.nblocks;
+	part->pkind = pinfo.pkind;
 
 	/* Insert to list by block address */
@@ -442,4 +443,5 @@
 	info->dcnt = vinfo.dcnt;
 	info->ltype = vinfo.ltype;
+	info->flags = vinfo.flags;
 	return EOK;
 error:
@@ -497,4 +499,5 @@
 	info->capacity = part->capacity;
 	info->fstype = part->fstype;
+	info->pkind = part->pkind;
 	return EOK;
 }
@@ -671,4 +674,30 @@
 }
 
+int fdisk_pkind_format(label_pkind_t pkind, char **rstr)
+{
+	const char *spkind;
+	char *s;
+
+	spkind = NULL;
+	switch (pkind) {
+	case lpk_primary:
+		spkind = "Primary";
+		break;
+	case lpk_extended:
+		spkind = "Extended";
+		break;
+	case lpk_logical:
+		spkind = "Logical";
+		break;
+	}
+
+	s = str_dup(spkind);
+	if (s == NULL)
+		return ENOMEM;
+
+	*rstr = s;
+	return EOK;
+}
+
 /** Get free partition index. */
 static int fdisk_part_get_free_idx(fdisk_dev_t *dev, int *rindex)
@@ -765,8 +794,12 @@
 		return EIO;
 
+	memset(vpspec, 0, sizeof(vbd_part_spec_t));
 	vpspec->index = index;
 	vpspec->block0 = fblock0;
 	vpspec->nblocks = req_blocks;
-	vpspec->ptype = 42;
+	vpspec->pkind = pspec->pkind;
+	if (pspec->pkind != lpk_extended)
+		vpspec->ptype = 42;
+
 	return EOK;
 }
