Index: uspace/lib/label/src/mbr.c
===================================================================
--- uspace/lib/label/src/mbr.c	(revision 6439741620402fb497bcd0eb81871ad3a7ab81f5)
+++ uspace/lib/label/src/mbr.c	(revision 22747e8f9a0648b7f01a6e1c3ef290d4b2dec36e)
@@ -237,5 +237,5 @@
 		rc = mbr_pte_to_log_part(label, ebr_b0, ethis);
 		if (rc != EOK) {
-			rc= EIO;
+			rc = EIO;
 			goto error;
 		}
@@ -627,4 +627,6 @@
 	mbr_pte_t pte;
 	label_part_t *prev;
+	label_part_t *next;
+	uint64_t ep_b0;
 	int rc;
 
@@ -659,10 +661,37 @@
 				return EIO;
 			}
+
+			/* Delete EBR */
+			rc = mbr_ebr_delete(part->label, part);
+			if (rc != EOK)
+				return EIO;
 		} else {
+			next = mbr_log_part_next(part);
 			list_remove(&part->llog);
-		}
-
-		/* Delete EBR */
-		mbr_ebr_delete(part->label, part);
+
+			if (next != NULL) {
+				/*
+				 * Relocate next partitions EBR to the beginning
+				 * of extended partition. This also overwrites
+				 * the EBR of the former first partition.
+				 */
+
+				/* First block of extended partition */
+				ep_b0 = part->label->ext_part->block0;
+
+				next->hdr_blocks = next->block0 - ep_b0;
+
+				rc = mbr_ebr_create(part->label, next);
+				if (rc != EOK) {
+					list_prepend(&part->llog, &part->label->log_parts);
+					return EIO;
+				}
+			} else {
+				/* Delete EBR */
+				rc = mbr_ebr_delete(part->label, part);
+				if (rc != EOK)
+					return EIO;
+			}
+		}
 
 		/* Update indices */
@@ -768,5 +797,5 @@
 	return EOK;
 }
-#include <stdio.h>
+
 static void mbr_log_part_to_ptes(label_part_t *part, mbr_pte_t *pthis,
     mbr_pte_t *pnext)
@@ -781,7 +810,4 @@
 	assert(link_used(&part->llog));
 	assert(part->block0 >= ep_b0);
-	printf("part->hdr_blocks = %" PRIu64 "\n", part->hdr_blocks);
-	printf("part->block0 = %" PRIu64 "\n", part->block0);
-	printf("ep_b0 = %" PRIu64 "\n", ep_b0);
 	assert(part->hdr_blocks <= part->block0 - ep_b0);
 
@@ -796,5 +822,5 @@
 	/* 'Next' EBR entry */
 	if (pnext != NULL) {
-		next = mbr_part_next(part);
+		next = mbr_log_part_next(part);
 
 		memset(pnext, 0, sizeof(mbr_pte_t));
