Index: uspace/srv/fs/ext4fs/ext4fs_ops.c
===================================================================
--- uspace/srv/fs/ext4fs/ext4fs_ops.c	(revision 06d85e53f2ba96bd2ea9eae7bc274870ba1e1a85)
+++ uspace/srv/fs/ext4fs/ext4fs_ops.c	(revision d510ac01958d4700bf385efabc80c465fb7baaa1)
@@ -1344,7 +1344,7 @@
 				(ext4_inode_has_flag(inode_ref->inode, EXT4_INODE_FLAG_EXTENTS))) {
 
-			uint32_t tmp_iblock = 0;
-			do {
-				rc = ext4_filesystem_append_inode_block(inode_ref, &fblock, &tmp_iblock);
+			uint32_t last_iblock = ext4_inode_get_size(fs->superblock, inode_ref->inode) / block_size;
+			while (last_iblock < iblock) {
+				rc = ext4_extent_append_block(inode_ref, &last_iblock, &fblock, true);
 				if (rc != EOK) {
 					ext4fs_node_put(fn);
@@ -1352,5 +1352,12 @@
 					return rc;
 				}
-			} while (tmp_iblock < iblock);
+			}
+
+			rc = ext4_extent_append_block(inode_ref, &last_iblock, &fblock, false);
+			if (rc != EOK) {
+				ext4fs_node_put(fn);
+				async_answer_0(callid, rc);
+				return rc;
+			}
 
 		} else {
