Index: uspace/lib/ext4/libext4_filesystem.c
===================================================================
--- uspace/lib/ext4/libext4_filesystem.c	(revision fe61181fa59a4e6299307c453129da8aa2539451)
+++ uspace/lib/ext4/libext4_filesystem.c	(revision 0b293a6aa8c56e968924d9b2ae469152bbbc1695)
@@ -47,5 +47,6 @@
  * @return					error code
  */
-int ext4_filesystem_init(ext4_filesystem_t *fs, service_id_t service_id)
+int ext4_filesystem_init(ext4_filesystem_t *fs, service_id_t service_id,
+		enum cache_mode cmode)
 {
 	int rc;
@@ -75,5 +76,5 @@
 
 	/* Initialize block caching by libblock */
-	rc = block_cache_init(service_id, block_size, 0, CACHE_MODE_WB);
+	rc = block_cache_init(service_id, block_size, 0, cmode);
 	if (rc != EOK) {
 		block_fini(fs->device);
@@ -136,4 +137,5 @@
 
 	/* Finish work with block library */
+	block_cache_fini(fs->device);
 	block_fini(fs->device);
 
@@ -878,4 +880,16 @@
 	inode_ref->dirty = true;
 
+	/* Free block with extended attributes if present */
+	uint32_t xattr_block = ext4_inode_get_file_acl(
+			inode_ref->inode, fs->superblock);
+	if (xattr_block) {
+		rc = ext4_balloc_free_block(inode_ref, xattr_block);
+		if (rc != EOK) {
+			return rc;
+		}
+
+		ext4_inode_set_file_acl(inode_ref->inode, fs->superblock, 0);
+	}
+
 	/* Free inode by allocator */
 	if (ext4_inode_is_type(fs->superblock, inode_ref->inode,
Index: uspace/lib/ext4/libext4_filesystem.h
===================================================================
--- uspace/lib/ext4/libext4_filesystem.h	(revision fe61181fa59a4e6299307c453129da8aa2539451)
+++ uspace/lib/ext4/libext4_filesystem.h	(revision 0b293a6aa8c56e968924d9b2ae469152bbbc1695)
@@ -37,5 +37,6 @@
 #include "libext4_types.h"
 
-extern int ext4_filesystem_init(ext4_filesystem_t *, service_id_t);
+extern int ext4_filesystem_init(ext4_filesystem_t *,
+		service_id_t, enum cache_mode);
 extern int ext4_filesystem_fini(ext4_filesystem_t *fs);
 extern int ext4_filesystem_check_sanity(ext4_filesystem_t *fs);
