Index: uspace/lib/ext4/libext4_superblock.c
===================================================================
--- uspace/lib/ext4/libext4_superblock.c	(revision ae3d4f846c765359d44016e122488a53c412adc4)
+++ uspace/lib/ext4/libext4_superblock.c	(revision ebeaaa0657f708565ea32f9b84ed81c2a834feb7)
@@ -47,4 +47,9 @@
 }
 
+void ext4_superblock_set_inodes_count(ext4_superblock_t *sb, uint32_t count)
+{
+	sb->inodes_count = host2uint32_t_le(count);
+}
+
 uint64_t ext4_superblock_get_blocks_count(ext4_superblock_t *sb)
 {
@@ -53,4 +58,10 @@
 }
 
+void ext4_superblock_set_blocks_count(ext4_superblock_t *sb, uint64_t count)
+{
+	sb->blocks_count_lo = host2uint32_t_le((count << 32) >> 32);
+	sb->blocks_count_hi = host2uint32_t_le(count >> 32);
+}
+
 uint64_t ext4_superblock_get_reserved_blocks_count(ext4_superblock_t *sb)
 {
@@ -59,4 +70,10 @@
 }
 
+void ext4_superblock_set_reserved_blocks_count(ext4_superblock_t *sb, uint64_t count)
+{
+	sb->reserved_blocks_count_lo = host2uint32_t_le((count << 32) >> 32);
+	sb->reserved_blocks_count_hi = host2uint32_t_le(count >> 32);
+}
+
 uint64_t ext4_superblock_get_free_blocks_count(ext4_superblock_t *sb)
 {
@@ -76,4 +93,9 @@
 }
 
+void ext4_superblock_set_free_inodes_count(ext4_superblock_t *sb, uint32_t count)
+{
+	sb->free_inodes_count = host2uint32_t_le(count);
+}
+
 uint32_t ext4_superblock_get_first_data_block(ext4_superblock_t *sb)
 {
@@ -81,4 +103,9 @@
 }
 
+void ext4_superblock_set_first_data_block(ext4_superblock_t *sb, uint32_t first)
+{
+	sb->first_data_block = host2uint32_t_le(first);
+}
+
 uint32_t ext4_superblock_get_log_block_size(ext4_superblock_t *sb)
 {
@@ -86,4 +113,9 @@
 }
 
+void ext4_superblock_set_log_block_size(ext4_superblock_t *sb, uint32_t log_size)
+{
+	sb->log_block_size = host2uint32_t_le(log_size);
+}
+
 uint32_t ext4_superblock_get_block_size(ext4_superblock_t *sb)
 {
@@ -91,4 +123,17 @@
 }
 
+void ext4_superblock_set_block_size(ext4_superblock_t *sb, uint32_t size)
+{
+	uint32_t log = 0;
+	uint32_t tmp = size / EXT4_MIN_BLOCK_SIZE;
+
+	tmp >>= 1;
+	while (tmp) {
+		log++;
+		tmp >>= 1;
+	}
+
+	ext4_superblock_set_log_block_size(sb, log);
+}
 
 uint32_t ext4_superblock_get_blocks_per_group(ext4_superblock_t *sb)
@@ -97,4 +142,9 @@
 }
 
+void ext4_superblock_set_blocks_per_group(ext4_superblock_t *sb, uint32_t blocks)
+{
+	sb->blocks_per_group = host2uint32_t_le(blocks);
+}
+
 uint32_t ext4_superblock_get_inodes_per_group(ext4_superblock_t *sb)
 {
@@ -102,4 +152,9 @@
 }
 
+void ext4_superblock_set_inodes_per_group(ext4_superblock_t *sb, uint32_t inodes)
+{
+	sb->inodes_per_group = host2uint32_t_le(inodes);
+}
+
 uint32_t ext4_superblock_get_mount_time(ext4_superblock_t *sb)
 {
@@ -107,4 +162,9 @@
 }
 
+void ext4_superblock_set_mount_time(ext4_superblock_t *sb, uint32_t time)
+{
+	sb->mount_time = host2uint32_t_le(time);
+}
+
 uint32_t ext4_superblock_get_write_time(ext4_superblock_t *sb)
 {
@@ -112,4 +172,9 @@
 }
 
+void ext4_superblock_set_write_time(ext4_superblock_t *sb, uint32_t time)
+{
+	sb->write_time = host2uint32_t_le(time);
+}
+
 uint16_t ext4_superblock_get_mount_count(ext4_superblock_t *sb)
 {
@@ -117,4 +182,9 @@
 }
 
+void ext4_superblock_set_mount_count(ext4_superblock_t *sb, uint16_t count)
+{
+	sb->mount_count = host2uint16_t_le(count);
+}
+
 uint16_t ext4_superblock_get_max_mount_count(ext4_superblock_t *sb)
 {
@@ -122,4 +192,9 @@
 }
 
+void ext4_superblock_set_max_mount_count(ext4_superblock_t *sb, uint16_t count)
+{
+	sb->max_mount_count = host2uint16_t_le(count);
+}
+
 uint16_t ext4_superblock_get_magic(ext4_superblock_t *sb)
 {
@@ -132,4 +207,9 @@
 }
 
+void ext4_superblock_set_state(ext4_superblock_t *sb, uint16_t state)
+{
+	sb->state = host2uint16_t_le(state);
+}
+
 uint16_t ext4_superblock_get_errors(ext4_superblock_t *sb)
 {
@@ -137,4 +217,8 @@
 }
 
+void ext4_superblock_set_errors(ext4_superblock_t *sb, uint16_t errors)
+{
+	sb->errors = host2uint16_t_le(errors);
+}
 
 uint16_t ext4_superblock_get_minor_rev_level(ext4_superblock_t *sb)
@@ -143,7 +227,17 @@
 }
 
+void ext4_superblock_set_minor_rev_level(ext4_superblock_t *sb, uint16_t level)
+{
+	sb->minor_rev_level = host2uint16_t_le(level);
+}
+
 uint32_t ext4_superblock_get_last_check_time(ext4_superblock_t *sb)
 {
 	return uint32_t_le2host(sb->last_check_time);
+}
+
+void ext4_superblock_set_last_check_time(ext4_superblock_t *sb, uint32_t time)
+{
+	sb->state = host2uint32_t_le(time);
 }
 
@@ -152,4 +246,9 @@
 }
 
+void ext4_superblock_set_check_interval(ext4_superblock_t *sb, uint32_t interval)
+{
+	sb->check_interval = host2uint32_t_le(interval);
+}
+
 uint32_t ext4_superblock_get_creator_os(ext4_superblock_t *sb)
 {
@@ -157,7 +256,47 @@
 }
 
+void ext4_superblock_set_creator_os(ext4_superblock_t *sb, uint32_t os)
+{
+	sb->creator_os = host2uint32_t_le(os);
+}
+
 uint32_t ext4_superblock_get_rev_level(ext4_superblock_t *sb)
 {
 	return uint32_t_le2host(sb->rev_level);
+}
+
+void ext4_superblock_set_rev_level(ext4_superblock_t *sb, uint32_t level)
+{
+	sb->rev_level = host2uint32_t_le(level);
+}
+
+uint16_t ext4_superblock_get_def_resuid(ext4_superblock_t *sb)
+{
+	return uint16_t_le2host(sb->def_resuid);
+}
+
+void ext4_superblock_set_def_resuid(ext4_superblock_t *sb, uint16_t uid)
+{
+	sb->def_resuid = host2uint16_t_le(uid);
+}
+
+uint16_t ext4_superblock_get_def_resgid(ext4_superblock_t *sb)
+{
+	return uint16_t_le2host(sb->def_resgid);
+}
+
+void ext4_superblock_set_def_resgid(ext4_superblock_t *sb, uint16_t gid)
+{
+	sb->def_resgid = host2uint16_t_le(gid);
+}
+
+uint32_t ext4_superblock_get_first_inode(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->first_inode);
+}
+
+void ext4_superblock_set_first_inode(ext4_superblock_t *sb, uint32_t first_inode)
+{
+	sb->first_inode = host2uint32_t_le(first_inode);
 }
 
@@ -170,4 +309,9 @@
 }
 
+void ext4_superblock_set_inode_size(ext4_superblock_t *sb, uint16_t size)
+{
+	sb->inode_size = host2uint16_t_le(size);
+}
+
 uint16_t ext4_superblock_get_block_group_number(ext4_superblock_t *sb)
 {
@@ -175,4 +319,9 @@
 }
 
+void ext4_superblock_set_block_group_number(ext4_superblock_t *sb, uint16_t bg)
+{
+	sb->block_group_number = host2uint16_t_le(bg);
+}
+
 uint32_t ext4_superblock_get_features_compatible(ext4_superblock_t *sb)
 {
@@ -180,4 +329,9 @@
 }
 
+void ext4_superblock_set_features_compatible(ext4_superblock_t *sb, uint32_t features)
+{
+	sb->features_compatible = host2uint32_t_le(features);
+}
+
 uint32_t ext4_superblock_get_features_incompatible(ext4_superblock_t *sb)
 {
@@ -185,4 +339,9 @@
 }
 
+void ext4_superblock_set_features_incompatible(ext4_superblock_t *sb, uint32_t features)
+{
+	sb->features_incompatible = host2uint32_t_le(features);
+}
+
 uint32_t ext4_superblock_get_features_read_only(ext4_superblock_t *sb)
 {
@@ -190,4 +349,8 @@
 }
 
+void ext4_superblock_set_features_read_only(ext4_superblock_t *sb, uint32_t features)
+{
+	sb->features_read_only = host2uint32_t_le(features);
+}
 
 uint32_t* ext4_superblock_get_hash_seed(ext4_superblock_t *sb)
@@ -207,7 +370,17 @@
 }
 
+void ext4_superblock_set_desc_size(ext4_superblock_t *sb, uint16_t size)
+{
+	sb->desc_size = host2uint16_t_le(size);
+}
+
 uint32_t ext4_superblock_get_flags(ext4_superblock_t *sb)
 {
 	return uint32_t_le2host(sb->flags);
+}
+
+void ext4_superblock_set_flags(ext4_superblock_t *sb, uint32_t flags)
+{
+	sb->flags = host2uint32_t_le(flags);
 }
 
@@ -307,4 +480,8 @@
 	}
 
+	// block size
+	// desc size
+
+
 	// TODO more checks !!!
 
