Index: uspace/lib/ext4/libext4_extent.c
===================================================================
--- uspace/lib/ext4/libext4_extent.c	(revision 847f2cbfbdf523ed314bbc2f8d289197aa84fb54)
+++ uspace/lib/ext4/libext4_extent.c	(revision 936132ff0b54d1b2bd6bd546cb86e46059b5eedf)
@@ -550,18 +550,4 @@
 	uint64_t inode_size = ext4_inode_get_size(sb, inode_ref->inode);
 
-	ext4_extent_header_t *header =
-			ext4_inode_get_extent_header(inode_ref->inode);
-
-	// Initialize if empty inode
-	if (inode_size == 0) {
-		ext4_extent_t *first = EXT4_EXTENT_FIRST(header);
-		ext4_extent_set_block_count(first, 0);
-		ext4_extent_set_first_block(first, 0);
-		ext4_extent_set_start(first, 0);
-
-		ext4_extent_header_set_depth(header, 0);
-		ext4_extent_header_set_entries_count(header, 1);
-	}
-
 	uint32_t block_size = ext4_superblock_get_block_size(sb);
 	uint32_t new_block_idx = inode_size / block_size;
@@ -579,6 +565,13 @@
 	}
 
-	// Check if extent exists
-	assert(path_ptr->extent != NULL);
+	// if extent == NULL -> add extent to leaf
+	if (path_ptr->extent == NULL) {
+		ext4_extent_t *ext = EXT4_EXTENT_FIRST(path_ptr->header);
+		ext4_extent_set_block_count(ext, 0);
+
+		ext4_extent_header_set_entries_count(path_ptr->header, 1);
+
+		path_ptr->extent = ext;
+	}
 
 	uint32_t phys_block;
Index: uspace/lib/ext4/libext4_filesystem.c
===================================================================
--- uspace/lib/ext4/libext4_filesystem.c	(revision 847f2cbfbdf523ed314bbc2f8d289197aa84fb54)
+++ uspace/lib/ext4/libext4_filesystem.c	(revision 936132ff0b54d1b2bd6bd546cb86e46059b5eedf)
@@ -342,9 +342,4 @@
 	}
 
-	if (ext4_superblock_has_feature_incompatible(
-			fs->superblock, EXT4_FEATURE_INCOMPAT_EXTENTS)) {
-		ext4_inode_set_flag(inode, EXT4_INODE_FLAG_EXTENTS);
-	}
-
 	ext4_inode_set_uid(inode, 0);
 	ext4_inode_set_gid(inode, 0);
@@ -358,6 +353,25 @@
 	ext4_inode_set_generation(inode, 0);
 
+	// Reset blocks array
 	for (uint32_t i = 0; i < EXT4_INODE_BLOCKS; i++) {
 		inode->blocks[i] = 0;
+	}
+
+	if (ext4_superblock_has_feature_incompatible(
+			fs->superblock, EXT4_FEATURE_INCOMPAT_EXTENTS)) {
+
+		ext4_inode_set_flag(inode, EXT4_INODE_FLAG_EXTENTS);
+
+		// Initialize extent root header
+		ext4_extent_header_t *header = ext4_inode_get_extent_header(inode);
+		ext4_extent_header_set_depth(header, 0);
+		ext4_extent_header_set_entries_count(header, 0);
+		ext4_extent_header_set_generation(header, 0);
+		ext4_extent_header_set_magic(header, EXT4_EXTENT_MAGIC);
+
+		uint16_t max_entries = (EXT4_INODE_BLOCKS * sizeof (uint32_t) - sizeof(ext4_extent_header_t))
+				/ sizeof(ext4_extent_t);
+
+		ext4_extent_header_set_max_entries_count(header, max_entries);
 	}
 
