Index: uspace/lib/ext4/libext4_filesystem.c
===================================================================
--- uspace/lib/ext4/libext4_filesystem.c	(revision a9a0982571dbfb12ece912ef802a0a9ac5a71c58)
+++ uspace/lib/ext4/libext4_filesystem.c	(revision 3569955892485ec8dbf95a03cf5e481b6901cc1f)
@@ -354,4 +354,38 @@
 }
 
+
+int ext4_filesystem_release_inode_block(ext4_filesystem_t *fs, ext4_inode_t *inode, uint32_t iblock)
+{
+	int rc;
+	uint32_t fblock;
+
+	// TODO handle with extents
+
+	rc = ext4_filesystem_get_inode_data_block_index(fs, inode, iblock, &fblock);
+	if (rc != EOK) {
+		// TODO error
+		return rc;
+	}
+
+	// Sparse file
+	if (fblock == 0) {
+
+		//
+		return EOK;
+	}
+
+
+	// TODO vyhledat policko s ukazatelem a nastavit nulu
+
+
+	// TODO uvolnit blok v bitmape
+
+	// TODO return
+
+
+	return EOK;
+}
+
+
 /**
  * @}
Index: uspace/lib/ext4/libext4_filesystem.h
===================================================================
--- uspace/lib/ext4/libext4_filesystem.h	(revision a9a0982571dbfb12ece912ef802a0a9ac5a71c58)
+++ uspace/lib/ext4/libext4_filesystem.h	(revision 3569955892485ec8dbf95a03cf5e481b6901cc1f)
@@ -62,5 +62,6 @@
 extern int ext4_filesystem_get_inode_data_block_index(ext4_filesystem_t *,
 	ext4_inode_t *, aoff64_t iblock, uint32_t *);
-
+extern int ext4_filesystem_release_inode_block(ext4_filesystem_t *,
+		ext4_inode_t *, uint32_t);
 #endif
 
Index: uspace/lib/ext4/libext4_inode.c
===================================================================
--- uspace/lib/ext4/libext4_inode.c	(revision a9a0982571dbfb12ece912ef802a0a9ac5a71c58)
+++ uspace/lib/ext4/libext4_inode.c	(revision 3569955892485ec8dbf95a03cf5e481b6901cc1f)
@@ -98,4 +98,10 @@
 }
 
+void ext4_inode_set_direct_block(ext4_inode_t *inode, uint8_t idx, uint32_t fblock)
+{
+	assert(idx < EXT4_INODE_DIRECT_BLOCK_COUNT);
+	inode->blocks[idx] = host2uint32_t_le(fblock);
+}
+
 uint32_t ext4_inode_get_indirect_block(ext4_inode_t *inode, uint8_t idx)
 {
Index: uspace/lib/ext4/libext4_inode.h
===================================================================
--- uspace/lib/ext4/libext4_inode.h	(revision a9a0982571dbfb12ece912ef802a0a9ac5a71c58)
+++ uspace/lib/ext4/libext4_inode.h	(revision 3569955892485ec8dbf95a03cf5e481b6901cc1f)
@@ -166,7 +166,8 @@
 extern uint32_t ext4_inode_get_flags(ext4_inode_t *);
 
-uint32_t ext4_inode_get_direct_block(ext4_inode_t *, uint8_t);
-uint32_t ext4_inode_get_indirect_block(ext4_inode_t *, uint8_t);
-uint32_t ext4_inode_get_extent_block(ext4_inode_t *, uint64_t, service_id_t);
+extern uint32_t ext4_inode_get_direct_block(ext4_inode_t *, uint8_t);
+extern void ext4_inode_set_direct_block(ext4_inode_t *, uint8_t, uint32_t);
+extern uint32_t ext4_inode_get_indirect_block(ext4_inode_t *, uint8_t);
+extern uint32_t ext4_inode_get_extent_block(ext4_inode_t *, uint64_t, service_id_t);
 /*
 uint32_t blocks[EXT4_INODE_BLOCKS]; // Pointers to blocks
