Index: uspace/app/fdisk/fdisk.c
===================================================================
--- uspace/app/fdisk/fdisk.c	(revision b598460af2662df4c20ccda2b3de00d8057bcacd)
+++ uspace/app/fdisk/fdisk.c	(revision 852664b9efd94a3f59595e0ce9fb3cf053be39e1)
@@ -513,8 +513,10 @@
 	fdisk_part_info_t pinfo;
 	fdisk_cap_t cap;
+	fdisk_cap_t mcap;
 	fdisk_dev_flags_t dflags;
 	char *sltype = NULL;
 	char *sdcap = NULL;
 	char *scap = NULL;
+	char *smcap = NULL;
 	char *sfstype = NULL;
 	char *svcname = NULL;
@@ -646,4 +648,82 @@
 
 		part = fdisk_part_next(part);
+	}
+
+	/* Display available space */
+	if ((linfo.flags & lf_can_create_pri) != 0) {
+		rc = fdisk_part_get_max_avail(dev, spc_pri, &mcap);
+		if (rc != EOK) {
+			rc = EIO;
+			goto error;
+		}
+
+		rc = fdisk_cap_format(&mcap, &smcap);
+		if (rc != EOK) {
+			rc = ENOMEM;
+			goto error;
+		}
+
+		if ((linfo.flags & lf_ext_supp) != 0)
+			printf("Maximum free primary block: %s\n", smcap);
+		else
+			printf("Maximum free block: %s\n", smcap);
+
+		free(smcap);
+		smcap = NULL;
+
+		rc = fdisk_part_get_tot_avail(dev, spc_pri, &mcap);
+		if (rc != EOK) {
+			rc = EIO;
+			goto error;
+		}
+
+		rc = fdisk_cap_format(&mcap, &smcap);
+		if (rc != EOK) {
+			rc = ENOMEM;
+			goto error;
+		}
+
+		if ((linfo.flags & lf_ext_supp) != 0)
+			printf("Total free primary space: %s\n", smcap);
+		else
+			printf("Total free space: %s\n", smcap);
+
+		free(smcap);
+		smcap = NULL;
+	}
+
+	/* Display available space */
+	if ((linfo.flags & lf_can_create_log) != 0) {
+		rc = fdisk_part_get_max_avail(dev, spc_log, &mcap);
+		if (rc != EOK) {
+			rc = EIO;
+			goto error;
+		}
+
+		rc = fdisk_cap_format(&mcap, &smcap);
+		if (rc != EOK) {
+			rc = ENOMEM;
+			goto error;
+		}
+
+		printf("Maximum free logical block: %s\n", smcap);
+		free(smcap);
+		smcap = NULL;
+
+		rc = fdisk_part_get_tot_avail(dev, spc_log, &mcap);
+		if (rc != EOK) {
+			rc = EIO;
+			goto error;
+		}
+
+		rc = fdisk_cap_format(&mcap, &smcap);
+		if (rc != EOK) {
+			rc = ENOMEM;
+			goto error;
+		}
+
+		printf("Total free logical space: %s\n", smcap);
+		free(smcap);
+		smcap = NULL;
 	}
 
@@ -785,4 +865,5 @@
 	free(sdcap);
 	free(scap);
+	free(smcap);
 	free(sfstype);
 	free(svcname);
Index: uspace/lib/fdisk/include/fdisk.h
===================================================================
--- uspace/lib/fdisk/include/fdisk.h	(revision b598460af2662df4c20ccda2b3de00d8057bcacd)
+++ uspace/lib/fdisk/include/fdisk.h	(revision 852664b9efd94a3f59595e0ce9fb3cf053be39e1)
@@ -65,4 +65,5 @@
 extern int fdisk_part_get_info(fdisk_part_t *, fdisk_part_info_t *);
 extern int fdisk_part_get_max_avail(fdisk_dev_t *, fdisk_spc_t, fdisk_cap_t *);
+extern int fdisk_part_get_tot_avail(fdisk_dev_t *, fdisk_spc_t, fdisk_cap_t *);
 extern int fdisk_part_create(fdisk_dev_t *, fdisk_part_spec_t *,
     fdisk_part_t **);
Index: uspace/lib/fdisk/src/fdisk.c
===================================================================
--- uspace/lib/fdisk/src/fdisk.c	(revision b598460af2662df4c20ccda2b3de00d8057bcacd)
+++ uspace/lib/fdisk/src/fdisk.c	(revision 852664b9efd94a3f59595e0ce9fb3cf053be39e1)
@@ -763,4 +763,5 @@
 }
 
+/** Get size of largest free block. */
 int fdisk_part_get_max_avail(fdisk_dev_t *dev, fdisk_spc_t spc, fdisk_cap_t *cap)
 {
@@ -783,4 +784,33 @@
 
 	cap->value = nb * dev->dinfo.block_size;
+	cap->cunit = cu_byte;
+	return EOK;
+}
+
+/** Get total free space capacity. */
+int fdisk_part_get_tot_avail(fdisk_dev_t *dev, fdisk_spc_t spc,
+    fdisk_cap_t *cap)
+{
+	fdisk_free_range_t fr;
+	uint64_t hdrb;
+	uint64_t b0;
+	uint64_t nb;
+	uint64_t totb;
+
+	if (spc == spc_log)
+		hdrb = max(1, dev->align);
+	else
+		hdrb = 0;
+
+	totb = 0;
+	fdisk_free_range_first(dev, spc, &fr);
+	do {
+		if (fdisk_free_range_get(&fr, &b0, &nb)) {
+			if (nb > hdrb)
+				totb += nb - hdrb;
+		}
+	} while (fdisk_free_range_next(&fr));
+
+	cap->value = totb * dev->dinfo.block_size;
 	cap->cunit = cu_byte;
 	return EOK;
