Index: uspace/lib/ext4/libext4_directory.c
===================================================================
--- uspace/lib/ext4/libext4_directory.c	(revision fe27eb454fdeeeac38afd5ac658a4395140cae59)
+++ uspace/lib/ext4/libext4_directory.c	(revision ebeaaa0657f708565ea32f9b84ed81c2a834feb7)
@@ -49,8 +49,20 @@
 }
 
+void ext4_directory_entry_ll_set_inode(ext4_directory_entry_ll_t *de,
+		uint32_t inode)
+{
+	de->inode = host2uint32_t_le(inode);
+}
+
 uint16_t ext4_directory_entry_ll_get_entry_length(
-    ext4_directory_entry_ll_t *de)
+		ext4_directory_entry_ll_t *de)
 {
 	return uint16_t_le2host(de->entry_length);
+}
+
+void ext4_directory_entry_ll_set_entry_length(ext4_directory_entry_ll_t *de,
+		uint16_t length)
+{
+	de->entry_length = host2uint16_t_le(length);
 }
 
@@ -60,44 +72,27 @@
 	if (ext4_superblock_get_rev_level(sb) == 0 &&
 	    ext4_superblock_get_minor_rev_level(sb) < 5) {
-		return ((uint16_t)de->name_length_high) << 8 |
-		    ((uint16_t)de->name_length);
-	}
-	return de->name_length;
-}
-
-uint8_t ext4_directory_dx_root_info_get_hash_version(ext4_directory_dx_root_info_t *root_info)
-{
-	return root_info->hash_version;
-}
-
-uint8_t ext4_directory_dx_root_info_get_info_length(ext4_directory_dx_root_info_t *root_info)
-{
-	return root_info->info_length;
-}
-
-uint8_t ext4_directory_dx_root_info_get_indirect_levels(ext4_directory_dx_root_info_t *root_info)
-{
-	return root_info->indirect_levels;
-}
-
-uint16_t ext4_directory_dx_countlimit_get_limit(ext4_directory_dx_countlimit_t *countlimit)
-{
-	return uint16_t_le2host(countlimit->limit);
-}
-uint16_t ext4_directory_dx_countlimit_get_count(ext4_directory_dx_countlimit_t *countlimit)
-{
-	return uint16_t_le2host(countlimit->count);
-}
-
-uint32_t ext4_directory_dx_entry_get_hash(ext4_directory_dx_entry_t *entry)
-{
-	return uint32_t_le2host(entry->hash);
-}
-
-uint32_t ext4_directory_dx_entry_get_block(ext4_directory_dx_entry_t *entry)
-{
-	return uint32_t_le2host(entry->block);
-}
-
+
+		return de->name_length;
+	}
+
+	return ((uint16_t)de->name_length_high) << 8 |
+	    ((uint16_t)de->name_length);
+
+
+}
+
+void ext4_directory_entry_ll_set_name_length(ext4_superblock_t *sb,
+		ext4_directory_entry_ll_t *de, uint16_t length)
+{
+
+	de->name_length = (length << 8) >> 8;
+
+	if (ext4_superblock_get_rev_level(sb) > 0 ||
+		    ext4_superblock_get_minor_rev_level(sb) >= 5) {
+
+		de->name_length_high = length >> 8;
+	}
+
+}
 
 
Index: uspace/lib/ext4/libext4_directory.h
===================================================================
--- uspace/lib/ext4/libext4_directory.h	(revision fe27eb454fdeeeac38afd5ac658a4395140cae59)
+++ uspace/lib/ext4/libext4_directory.h	(revision ebeaaa0657f708565ea32f9b84ed81c2a834feb7)
@@ -63,8 +63,14 @@
 
 extern uint32_t	ext4_directory_entry_ll_get_inode(ext4_directory_entry_ll_t *);
+extern void ext4_directory_entry_ll_set_inode(ext4_directory_entry_ll_t *,
+		uint32_t);
 extern uint16_t	ext4_directory_entry_ll_get_entry_length(
     ext4_directory_entry_ll_t *);
+extern void ext4_directory_entry_ll_set_entry_length(
+		ext4_directory_entry_ll_t *, uint16_t);
 extern uint16_t	ext4_directory_entry_ll_get_name_length(
     ext4_superblock_t *, ext4_directory_entry_ll_t *);
+extern void ext4_directory_entry_ll_set_name_length(ext4_superblock_t *,
+		ext4_directory_entry_ll_t *, uint16_t);
 
 extern int ext4_directory_iterator_init(ext4_directory_iterator_t *,
Index: uspace/lib/ext4/libext4_directory_index.c
===================================================================
--- uspace/lib/ext4/libext4_directory_index.c	(revision fe27eb454fdeeeac38afd5ac658a4395140cae59)
+++ uspace/lib/ext4/libext4_directory_index.c	(revision ebeaaa0657f708565ea32f9b84ed81c2a834feb7)
@@ -36,6 +36,94 @@
  */
 
+#include <byteorder.h>
 #include <errno.h>
 #include "libext4.h"
+
+
+uint8_t ext4_directory_dx_root_info_get_hash_version(
+		ext4_directory_dx_root_info_t *root_info)
+{
+	return root_info->hash_version;
+}
+
+void ext4_directory_dx_root_info_set_hash_version(
+		ext4_directory_dx_root_info_t *root_info, uint8_t version)
+{
+	root_info->hash_version = version;
+}
+
+uint8_t ext4_directory_dx_root_info_get_info_length(
+		ext4_directory_dx_root_info_t *root_info)
+{
+	return root_info->info_length;
+}
+
+void ext4_directory_dx_root_info_set_info_length(
+		ext4_directory_dx_root_info_t *root_info, uint8_t info_length)
+{
+	root_info->info_length = info_length;
+}
+
+uint8_t ext4_directory_dx_root_info_get_indirect_levels(
+		ext4_directory_dx_root_info_t *root_info)
+{
+	return root_info->indirect_levels;
+}
+
+void ext4_directory_dx_root_info_set_indirect_levels(
+		ext4_directory_dx_root_info_t *root_info, uint8_t levels)
+{
+	root_info->indirect_levels = levels;
+}
+
+uint16_t ext4_directory_dx_countlimit_get_limit(
+		ext4_directory_dx_countlimit_t *countlimit)
+{
+	return uint16_t_le2host(countlimit->limit);
+}
+
+void ext4_directory_dx_countlimit_set_limit(
+		ext4_directory_dx_countlimit_t *countlimit, uint16_t limit)
+{
+	countlimit->limit = host2uint16_t_le(limit);
+}
+
+uint16_t ext4_directory_dx_countlimit_get_count(
+		ext4_directory_dx_countlimit_t *countlimit)
+{
+	return uint16_t_le2host(countlimit->count);
+}
+
+void ext4_directory_dx_countlimit_set_count(
+		ext4_directory_dx_countlimit_t *countlimit, uint16_t count)
+{
+	countlimit->count = host2uint16_t_le(count);
+}
+
+uint32_t ext4_directory_dx_entry_get_hash(ext4_directory_dx_entry_t *entry)
+{
+	return uint32_t_le2host(entry->hash);
+}
+
+void ext4_directory_dx_entry_set_hash(ext4_directory_dx_entry_t *entry,
+		uint32_t hash)
+{
+	entry->hash = host2uint32_t_le(hash);
+}
+
+uint32_t ext4_directory_dx_entry_get_block(ext4_directory_dx_entry_t *entry)
+{
+	return uint32_t_le2host(entry->block);
+}
+
+void ext4_directory_dx_entry_set_block(ext4_directory_dx_entry_t *entry,
+		uint32_t block)
+{
+	entry->block = host2uint32_t_le(block);
+}
+
+
+/**************************************************************************/
+
 
 static int ext4_directory_hinfo_init(ext4_hash_info_t *hinfo, block_t *root_block,
Index: uspace/lib/ext4/libext4_directory_index.h
===================================================================
--- uspace/lib/ext4/libext4_directory_index.h	(revision fe27eb454fdeeeac38afd5ac658a4395140cae59)
+++ uspace/lib/ext4/libext4_directory_index.h	(revision ebeaaa0657f708565ea32f9b84ed81c2a834feb7)
@@ -91,13 +91,33 @@
 
 
-extern uint8_t ext4_directory_dx_root_info_get_hash_version(ext4_directory_dx_root_info_t *);
-extern uint8_t ext4_directory_dx_root_info_get_info_length(ext4_directory_dx_root_info_t *);
-extern uint8_t ext4_directory_dx_root_info_get_indirect_levels(ext4_directory_dx_root_info_t *);
+extern uint8_t ext4_directory_dx_root_info_get_hash_version(
+		ext4_directory_dx_root_info_t *);
+extern void ext4_directory_dx_root_info_set_hash_version(
+		ext4_directory_dx_root_info_t *, uint8_t);
+extern uint8_t ext4_directory_dx_root_info_get_info_length(
+		ext4_directory_dx_root_info_t *);
+extern void ext4_directory_dx_root_info_set_info_length(
+		ext4_directory_dx_root_info_t *, uint8_t);
+extern uint8_t ext4_directory_dx_root_info_get_indirect_levels(
+		ext4_directory_dx_root_info_t *);
+extern void ext4_directory_dx_root_info_set_indirect_levels(
+		ext4_directory_dx_root_info_t *, uint8_t);
 
-extern uint16_t ext4_directory_dx_countlimit_get_limit(ext4_directory_dx_countlimit_t *);
-extern uint16_t ext4_directory_dx_countlimit_get_count(ext4_directory_dx_countlimit_t *);
+extern uint16_t ext4_directory_dx_countlimit_get_limit(
+		ext4_directory_dx_countlimit_t *);
+extern void ext4_directory_dx_countlimit_set_limit(
+		ext4_directory_dx_countlimit_t *, uint16_t);
+extern uint16_t ext4_directory_dx_countlimit_get_count(
+		ext4_directory_dx_countlimit_t *);
+extern void ext4_directory_dx_countlimit_set_count(
+		ext4_directory_dx_countlimit_t *, uint16_t);
 
 extern uint32_t ext4_directory_dx_entry_get_hash(ext4_directory_dx_entry_t *);
+extern void ext4_directory_dx_entry_set_hash(ext4_directory_dx_entry_t *,
+		uint32_t);
 extern uint32_t ext4_directory_dx_entry_get_block(ext4_directory_dx_entry_t *);
+void ext4_directory_dx_entry_set_block(ext4_directory_dx_entry_t *, uint32_t);
+
+/*********************************************************************************/
 
 extern int ext4_directory_dx_find_entry(ext4_directory_iterator_t *,
Index: uspace/lib/ext4/libext4_extent.c
===================================================================
--- uspace/lib/ext4/libext4_extent.c	(revision fe27eb454fdeeeac38afd5ac658a4395140cae59)
+++ uspace/lib/ext4/libext4_extent.c	(revision ebeaaa0657f708565ea32f9b84ed81c2a834feb7)
@@ -44,7 +44,17 @@
 }
 
+void ext4_extent_set_first_block(ext4_extent_t *extent, uint32_t first_block)
+{
+	extent->first_block = host2uint32_t_le(first_block);
+}
+
 uint16_t ext4_extent_get_block_count(ext4_extent_t *extent)
 {
 	return uint16_t_le2host(extent->block_count);
+}
+
+void ext4_extent_set_block_count(ext4_extent_t *extent, uint16_t block_count)
+{
+	extent->block_count = host2uint16_t_le(block_count);
 }
 
@@ -53,5 +63,10 @@
 	return ((uint64_t)uint16_t_le2host(extent->start_hi)) << 32 |
 			((uint64_t)uint32_t_le2host(extent->start_lo));
+}
 
+void ext4_extent_set_start(ext4_extent_t *extent, uint64_t start)
+{
+	extent->start_lo = host2uint32_t_le((start << 32) >> 32);
+	extent->start_hi = host2uint16_t_le((uint16_t)(start >> 32));
 }
 
@@ -61,8 +76,20 @@
 }
 
+void ext4_extent_index_set_first_block(ext4_extent_index_t *index,
+		uint32_t first)
+{
+	index->first_block = host2uint32_t_le(first);
+}
+
 uint64_t ext4_extent_index_get_leaf(ext4_extent_index_t *index)
 {
 	return ((uint64_t)uint16_t_le2host(index->leaf_hi)) << 32 |
-				((uint64_t)uint32_t_le2host(index->leaf_lo));
+		((uint64_t)uint32_t_le2host(index->leaf_lo));
+}
+
+void ext4_extent_index_set_leaf(ext4_extent_index_t *index, uint64_t leaf)
+{
+	index->leaf_lo = host2uint32_t_le((leaf << 32) >> 32);
+	index->leaf_hi = host2uint16_t_le((uint16_t)(leaf >> 32));
 }
 
@@ -72,7 +99,18 @@
 }
 
+void ext4_extent_header_set_magic(ext4_extent_header_t *header, uint16_t magic)
+{
+	header->magic = host2uint16_t_le(magic);
+}
+
 uint16_t ext4_extent_header_get_entries_count(ext4_extent_header_t *header)
 {
 	return uint16_t_le2host(header->entries_count);
+}
+
+void ext4_extent_header_set_entries_count(ext4_extent_header_t *header,
+		uint16_t count)
+{
+	header->entries_count = host2uint16_t_le(count);
 }
 
@@ -82,7 +120,18 @@
 }
 
+void ext4_extent_header_set_max_entries_count(ext4_extent_header_t *header,
+		uint16_t max_count)
+{
+	header->max_entries_count = host2uint16_t_le(max_count);
+}
+
 uint16_t ext4_extent_header_get_depth(ext4_extent_header_t *header)
 {
 	return uint16_t_le2host(header->depth);
+}
+
+void ext4_extent_header_set_depth(ext4_extent_header_t *header, uint16_t depth)
+{
+	header->depth = host2uint16_t_le(depth);
 }
 
@@ -92,4 +141,10 @@
 }
 
+void ext4_extent_header_set_generation(ext4_extent_header_t *header,
+		uint32_t generation)
+{
+	header->generation = host2uint32_t_le(generation);
+}
+
 /**
  * @}
Index: uspace/lib/ext4/libext4_extent.h
===================================================================
--- uspace/lib/ext4/libext4_extent.h	(revision fe27eb454fdeeeac38afd5ac658a4395140cae59)
+++ uspace/lib/ext4/libext4_extent.h	(revision ebeaaa0657f708565ea32f9b84ed81c2a834feb7)
@@ -75,15 +75,27 @@
 
 extern uint32_t ext4_extent_get_first_block(ext4_extent_t *);
+extern void ext4_extent_set_first_block(ext4_extent_t *, uint32_t);
 extern uint16_t ext4_extent_get_block_count(ext4_extent_t *);
+extern void ext4_extent_set_block_count(ext4_extent_t *, uint16_t);
 extern uint64_t ext4_extent_get_start(ext4_extent_t *);
+extern void ext4_extent_set_start(ext4_extent_t *, uint64_t);
 
 extern uint32_t ext4_extent_index_get_first_block(ext4_extent_index_t *);
+extern void ext4_extent_index_set_first_block(ext4_extent_index_t *, uint32_t);
 extern uint64_t ext4_extent_index_get_leaf(ext4_extent_index_t *);
+extern void ext4_extent_index_set_leaf(ext4_extent_index_t *, uint64_t);
 
 extern uint16_t ext4_extent_header_get_magic(ext4_extent_header_t *);
+extern void ext4_extent_header_set_magic(ext4_extent_header_t *, uint16_t);
 extern uint16_t ext4_extent_header_get_entries_count(ext4_extent_header_t *);
+extern void ext4_extent_header_set_entries_count(ext4_extent_header_t *,
+		uint16_t);
 extern uint16_t ext4_extent_header_get_max_entries_count(ext4_extent_header_t *);
+extern void ext4_extent_header_set_max_entries_count(ext4_extent_header_t *,
+		uint16_t);
 extern uint16_t ext4_extent_header_get_depth(ext4_extent_header_t *);
+extern void ext4_extent_header_set_depth(ext4_extent_header_t *, uint16_t);
 extern uint32_t ext4_extent_header_get_generation(ext4_extent_header_t *);
+extern void ext4_extent_header_set_generation(ext4_extent_header_t *, uint32_t);
 
 #endif
Index: uspace/lib/ext4/libext4_inode.c
===================================================================
--- uspace/lib/ext4/libext4_inode.c	(revision fe27eb454fdeeeac38afd5ac658a4395140cae59)
+++ uspace/lib/ext4/libext4_inode.c	(revision ebeaaa0657f708565ea32f9b84ed81c2a834feb7)
@@ -236,4 +236,24 @@
 }
 
+uint64_t ext4_get_inode_file_acl(ext4_inode_t *inode, ext4_superblock_t *sb)
+{
+	if (ext4_superblock_get_creator_os(sb) == EXT4_SUPERBLOCK_OS_LINUX) {
+		return ((uint32_t)uint16_t_le2host(inode->osd2.linux2.file_acl_high)) << 16 |
+		    (uint32_t_le2host(inode->file_acl_lo));
+	}
+
+	return uint32_t_le2host(inode->file_acl_lo);
+}
+
+void ext4_set_inode_file_acl(ext4_inode_t *inode, ext4_superblock_t *sb,
+		uint64_t file_acl)
+{
+	inode->file_acl_lo = host2uint32_t_le((file_acl << 32) >> 32);
+
+	if (ext4_superblock_get_creator_os(sb) == EXT4_SUPERBLOCK_OS_LINUX) {
+		inode->osd2.linux2.file_acl_high = host2uint16_t_le(file_acl >> 32);
+	}
+}
+
 /***********************************************************************/
 
Index: uspace/lib/ext4/libext4_inode.h
===================================================================
--- uspace/lib/ext4/libext4_inode.h	(revision fe27eb454fdeeeac38afd5ac658a4395140cae59)
+++ uspace/lib/ext4/libext4_inode.h	(revision ebeaaa0657f708565ea32f9b84ed81c2a834feb7)
@@ -84,9 +84,4 @@
     		uint32_t author;
     	} hurd2;
-    	struct {
-    		uint16_t reserved1;  /* Obsoleted fragment number/size which are removed in ext4 */
-    		uint16_t file_acl_high;
-    		uint32_t reserved2[2];
-    	} masix2;
     } __attribute__ ((packed)) osd2;
 
@@ -173,6 +168,7 @@
 extern uint32_t ext4_inode_get_generation(ext4_inode_t *);
 extern void ext4_inode_set_generation(ext4_inode_t *, uint32_t);
-/*
-uint32_t file_acl_lo; // File ACL
+extern uint64_t ext4_get_inode_file_acl(ext4_inode_t *, ext4_superblock_t *);
+extern void ext4_set_inode_file_acl(ext4_inode_t *, ext4_superblock_t *, uint64_t);
+/*
 uint16_t extra_isize;
 uint32_t ctime_extra; // Extra change time (nsec << 2 | epoch)
