Index: uspace/lib/ext4/libext4_block_group.c
===================================================================
--- uspace/lib/ext4/libext4_block_group.c	(revision 3711e7ecc46c08bafffe8145e4284827e7a1deb0)
+++ uspace/lib/ext4/libext4_block_group.c	(revision 3712434180942faca7a9305462e63eaffa18debb)
@@ -39,8 +39,54 @@
 #include "libext4.h"
 
+uint64_t ext4_block_group_get_block_bitmap(ext4_block_group_t *bg)
+{
+	return ((uint64_t)uint32_t_le2host(bg->block_bitmap_hi) << 32) |
+		uint32_t_le2host(bg->block_bitmap_lo);
+}
+
+uint64_t ext4_block_group_get_inode_bitmap(ext4_block_group_t *bg)
+{
+	return ((uint64_t)uint32_t_le2host(bg->inode_bitmap_hi) << 32) |
+		uint32_t_le2host(bg->inode_bitmap_lo);
+}
+
 uint64_t ext4_block_group_get_inode_table_first_block(ext4_block_group_t *bg)
 {
-	return ((uint64_t)uint32_t_le2host(bg->inode_table_first_hi) << 32) |
-			uint32_t_le2host(bg->inode_table_first_lo);
+	return ((uint64_t)uint32_t_le2host(bg->inode_table_first_block_hi) << 32) |
+		uint32_t_le2host(bg->inode_table_first_block_lo);
+}
+
+uint32_t ext4_block_group_get_free_blocks_count(ext4_block_group_t *bg)
+{
+	return ((uint32_t)uint16_t_le2host(bg->free_blocks_count_hi) << 16) |
+		uint16_t_le2host(bg->free_blocks_count_lo);
+}
+
+uint32_t ext4_block_group_get_free_inodes_count(ext4_block_group_t *bg)
+{
+	return ((uint32_t)uint16_t_le2host(bg->free_inodes_count_hi) << 16) |
+		uint16_t_le2host(bg->free_inodes_count_lo);
+}
+
+uint32_t ext4_block_group_get_used_dirs_count(ext4_block_group_t *bg)
+{
+	return ((uint32_t)uint16_t_le2host(bg->used_dirs_count_hi) << 16) |
+		uint16_t_le2host(bg->used_dirs_count_lo);
+}
+
+uint16_t ext4_block_group_get_flags(ext4_block_group_t *bg)
+{
+	return uint16_t_le2host(bg->flags);
+}
+
+uint32_t ext4_block_group_get_itable_unused(ext4_block_group_t *bg)
+{
+	return ((uint32_t)uint16_t_le2host(bg->itable_unused_hi) << 16) |
+		uint16_t_le2host(bg->itable_unused_lo);
+}
+
+uint16_t ext4_block_group_get_checksum(ext4_block_group_t *bg)
+{
+	return uint16_t_le2host(bg->checksum);
 }
 
Index: uspace/lib/ext4/libext4_block_group.h
===================================================================
--- uspace/lib/ext4/libext4_block_group.h	(revision 3711e7ecc46c08bafffe8145e4284827e7a1deb0)
+++ uspace/lib/ext4/libext4_block_group.h	(revision 3712434180942faca7a9305462e63eaffa18debb)
@@ -43,5 +43,5 @@
 	uint32_t block_bitmap_lo; // Blocks bitmap block
 	uint32_t inode_bitmap_lo; // Inodes bitmap block
-	uint32_t inode_table_first_lo; // Inodes table block
+	uint32_t inode_table_first_block_lo; // Inodes table block
 	uint16_t free_blocks_count_lo; // Free blocks count
 	uint16_t free_inodes_count_lo; // Free inodes count
@@ -53,5 +53,5 @@
 	uint32_t block_bitmap_hi; // Blocks bitmap block MSB
 	uint32_t inode_bitmap_hi; // Inodes bitmap block MSB
-	uint32_t inode_table_first_hi; // Inodes table block MSB
+	uint32_t inode_table_first_block_hi; // Inodes table block MSB
 	uint16_t free_blocks_count_hi; // Free blocks count MSB
 	uint16_t free_inodes_count_hi; // Free inodes count MSB
@@ -69,5 +69,13 @@
 #define EXT4_BLOCK_GROUP_DESCRIPTOR_SIZE 32
 
+extern uint64_t ext4_block_group_get_block_bitmap(ext4_block_group_t *);
+extern uint64_t ext4_block_group_get_inode_bitmap(ext4_block_group_t *);
 extern uint64_t ext4_block_group_get_inode_table_first_block(ext4_block_group_t *);
+extern uint32_t ext4_block_group_get_free_blocks_count(ext4_block_group_t *);
+extern uint32_t ext4_block_group_get_free_inodes_count(ext4_block_group_t *);
+extern uint32_t ext4_block_group_get_used_dirs_count(ext4_block_group_t *);
+extern uint16_t ext4_block_group_get_flags(ext4_block_group_t *);
+extern uint32_t ext4_block_group_get_itable_unused(ext4_block_group_t *);
+extern uint16_t ext4_block_group_get_checksum(ext4_block_group_t *);
 
 #endif
Index: uspace/lib/ext4/libext4_filesystem.c
===================================================================
--- uspace/lib/ext4/libext4_filesystem.c	(revision 3711e7ecc46c08bafffe8145e4284827e7a1deb0)
+++ uspace/lib/ext4/libext4_filesystem.c	(revision 3712434180942faca7a9305462e63eaffa18debb)
@@ -159,5 +159,5 @@
 
 	/* Block group descriptor table starts at the next block after superblock */
-	block_id = ext4_superblock_get_first_block(fs->superblock) + 1;
+	block_id = ext4_superblock_get_first_data_block(fs->superblock) + 1;
 
 	/* Find the block containing the descriptor we are looking for */
Index: uspace/lib/ext4/libext4_inode.c
===================================================================
--- uspace/lib/ext4/libext4_inode.c	(revision 3711e7ecc46c08bafffe8145e4284827e7a1deb0)
+++ uspace/lib/ext4/libext4_inode.c	(revision 3712434180942faca7a9305462e63eaffa18debb)
@@ -39,13 +39,32 @@
 #include "libext4.h"
 
-// TODO check return type
-/**
- * TODO doxy
- */
-uint16_t ext4_inode_get_usage_count(ext4_inode_t *inode)
+/*
+uint32_t ext4_inode_get_mode(ext4_inode_t *inode)
+uint32_t ext4_inode_get_uid(ext4_inode_t *inode)
+*/
+
+uint64_t ext4_inode_get_size(ext4_inode_t *inode)
+{
+	return ((uint64_t)uint32_t_le2host(inode->size_hi)) << 32 |
+			((uint64_t)uint32_t_le2host(inode->size_lo));
+}
+
+/*
+extern uint32_t ext4_inode_get_access_time(ext4_inode_t *);
+extern uint32_t ext4_inode_get_change_inode_time(ext4_inode_t *);
+extern uint32_t ext4_inode_get_modification_time(ext4_inode_t *);
+extern uint32_t ext4_inode_get_deletion_time(ext4_inode_t *);
+extern uint32_t ext4_inode_get_gid(ext4_inode_t *);
+*/
+
+uint16_t ext4_inode_get_links_count(ext4_inode_t *inode)
 {
 	return uint16_t_le2host(inode->links_count);
 }
 
+/*
+extern uint64_t ext4_inode_get_blocks_count(ext4_inode_t *);
+extern uint32_t ext4_inode_get_flags(ext4_inode_t *);
+*/
 
 /**
Index: uspace/lib/ext4/libext4_inode.h
===================================================================
--- uspace/lib/ext4/libext4_inode.h	(revision 3711e7ecc46c08bafffe8145e4284827e7a1deb0)
+++ uspace/lib/ext4/libext4_inode.h	(revision 3712434180942faca7a9305462e63eaffa18debb)
@@ -50,14 +50,11 @@
 	uint16_t uid; // Low 16 bits of owner uid
 	uint32_t size_lo; // Size in bytes
-
-	// TODO Used in HelenOS ???
-	uint32_t atime; // Access time
-	uint32_t ctime; // Inode change time
-	uint32_t mtime; // Modification time
-	uint32_t dtime; // Deletion time
-
+	uint32_t acess_time; // Access time
+	uint32_t change_inode_time; // Inode change time
+	uint32_t modification_time; // Modification time
+	uint32_t deletion_time; // Deletion time
 	uint16_t gid; // Low 16 bits of group id
 	uint16_t links_count; // Links count
-	uint32_t blocks_lo; // Blocks count
+	uint32_t blocks_count_lo; // Blocks count
 	uint32_t flags; // File flags
 	uint32_t unused_osd1; // OS dependent - not used in HelenOS
@@ -87,5 +84,34 @@
 } ext4_inode_ref_t;
 
-extern uint16_t ext4_inode_get_usage_count(ext4_inode_t *);
+/*
+extern uint16_t ext4_inode_get_mode(ext4_inode_t *);
+extern uint32_t ext4_inode_get_uid(ext4_inode_t *);
+*/
+extern uint64_t ext4_inode_get_size(ext4_inode_t *);
+/*
+extern uint32_t ext4_inode_get_access_time(ext4_inode_t *);
+extern uint32_t ext4_inode_get_change_inode_time(ext4_inode_t *);
+extern uint32_t ext4_inode_get_modification_time(ext4_inode_t *);
+extern uint32_t ext4_inode_get_deletion_time(ext4_inode_t *);
+extern uint32_t ext4_inode_get_gid(ext4_inode_t *);
+*/
+extern uint16_t ext4_inode_get_links_count(ext4_inode_t *);
+/*
+extern uint64_t ext4_inode_get_blocks_count(ext4_inode_t *);
+extern uint32_t ext4_inode_get_flags(ext4_inode_t *);
+*/
+
+/*
+uint32_t blocks[EXT4_INODE_BLOCKS]; // Pointers to blocks
+uint32_t generation;
+uint32_t file_acl_lo; // File ACL
+uint16_t extra_isize;
+uint32_t ctime_extra; // Extra change time (nsec << 2 | epoch)
+uint32_t mtime_extra; // Extra Modification time (nsec << 2 | epoch)
+uint32_t atime_extra; // Extra Access time (nsec << 2 | epoch)
+uint32_t crtime; // File creation time
+uint32_t crtime_extra; // Extra file creation time (nsec << 2 | epoch)
+uint32_t version_hi;   // High 32 bits for 64-bit version
+*/
 
 #endif
Index: uspace/lib/ext4/libext4_superblock.c
===================================================================
--- uspace/lib/ext4/libext4_superblock.c	(revision 3711e7ecc46c08bafffe8145e4284827e7a1deb0)
+++ uspace/lib/ext4/libext4_superblock.c	(revision 3712434180942faca7a9305462e63eaffa18debb)
@@ -42,7 +42,78 @@
 #include "libext4.h"
 
-/**
- * TODO doxy
- */
+uint32_t ext4_superblock_get_inodes_count(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->inodes_count);
+}
+
+uint64_t ext4_superblock_get_blocks_count(ext4_superblock_t *sb)
+{
+	return ((uint64_t)uint32_t_le2host(sb->blocks_count_hi) << 32) |
+			uint32_t_le2host(sb->blocks_count_lo);
+}
+
+uint64_t ext4_superblock_get_reserved_blocks_count(ext4_superblock_t *sb)
+{
+	return ((uint64_t)uint32_t_le2host(sb->reserved_blocks_count_hi) << 32) |
+			uint32_t_le2host(sb->reserved_blocks_count_lo);
+}
+
+uint64_t ext4_superblock_get_free_blocks_count(ext4_superblock_t *sb)
+{
+	return ((uint64_t)uint32_t_le2host(sb->free_blocks_count_hi) << 32) |
+			uint32_t_le2host(sb->free_blocks_count_lo);
+}
+
+uint32_t ext4_superblock_get_free_inodes_count(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->free_inodes_count);
+}
+
+uint32_t ext4_superblock_get_first_data_block(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->first_data_block);
+}
+
+uint32_t ext4_superblock_get_log_block_size(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->log_block_size);
+}
+
+uint32_t ext4_superblock_get_block_size(ext4_superblock_t *sb)
+{
+	return 1024 << ext4_superblock_get_log_block_size(sb);
+}
+
+
+uint32_t ext4_superblock_get_blocks_per_group(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->blocks_per_group);
+}
+
+uint32_t ext4_superblock_get_inodes_per_group(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->inodes_per_group);
+}
+
+uint32_t ext4_superblock_get_mount_time(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->mount_time);
+}
+
+uint32_t ext4_superblock_get_write_time(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->write_time);
+}
+
+uint16_t ext4_superblock_get_mount_count(ext4_superblock_t *sb)
+{
+	return uint16_t_le2host(sb->mount_count);
+}
+
+uint16_t ext4_superblock_get_max_mount_count(ext4_superblock_t *sb)
+{
+	return uint16_t_le2host(sb->max_mount_count);
+}
+
 uint16_t ext4_superblock_get_magic(ext4_superblock_t *sb)
 {
@@ -50,31 +121,34 @@
 }
 
-/**
- * TODO doxy
- */
-uint32_t ext4_superblock_get_first_block(ext4_superblock_t *sb)
-{
-	return uint32_t_le2host(sb->first_data_block);
-}
-
-/**
- * TODO doxy
- */
-uint32_t ext4_superblock_get_block_size_log2(ext4_superblock_t *sb)
-{
-	return uint32_t_le2host(sb->log_block_size);
-}
-
-/**
- * TODO doxy
- */
-uint32_t ext4_superblock_get_block_size(ext4_superblock_t *sb)
-{
-	return 1024 << ext4_superblock_get_block_size_log2(sb);
-}
-
-/**
- * TODO doxy
- */
+uint16_t ext4_superblock_get_state(ext4_superblock_t *sb)
+{
+	return uint16_t_le2host(sb->state);
+}
+
+uint16_t ext4_superblock_get_errors(ext4_superblock_t *sb)
+{
+	return uint16_t_le2host(sb->errors);
+}
+
+
+uint16_t ext4_superblock_get_minor_rev_level(ext4_superblock_t *sb)
+{
+	return uint16_t_le2host(sb->minor_rev_level);
+}
+
+uint32_t ext4_superblock_get_last_check_time(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->last_check_time);
+}
+
+uint32_t ext4_superblock_get_check_interval(ext4_superblock_t *sb){
+	return uint32_t_le2host(sb->check_interval);
+}
+
+uint32_t ext4_superblock_get_creator_os(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->creator_os);
+}
+
 uint32_t ext4_superblock_get_rev_level(ext4_superblock_t *sb)
 {
@@ -82,7 +156,4 @@
 }
 
-/**
- * TODO doxy
- */
 uint16_t ext4_superblock_get_inode_size(ext4_superblock_t *sb)
 {
@@ -93,40 +164,29 @@
 }
 
-/**
- * TODO doxy
+uint16_t ext4_superblock_get_block_group_number(ext4_superblock_t *sb)
+{
+	return uint16_t_le2host(sb->block_group_number);
+}
+
+uint32_t ext4_superblock_get_features_compatible(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->features_compatible);
+}
+
+uint32_t ext4_superblock_get_features_incompatible(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->features_incompatible);
+}
+
+uint32_t ext4_superblock_get_features_read_only(ext4_superblock_t *sb)
+{
+	return uint32_t_le2host(sb->features_read_only);
+}
+
+
+/*
+ * More complex superblock functions
  */
-uint32_t ext4_superblock_get_inodes_per_group(ext4_superblock_t *sb)
-{
-	return uint32_t_le2host(sb->inodes_per_group);
-}
-
-/**
- * TODO doxy
- */
-uint32_t ext4_superblock_get_features_compatible(ext4_superblock_t *sb)
-{
-	return uint32_t_le2host(sb->features_compatible);
-}
-
-/**
- * TODO doxy
- */
-uint32_t ext4_superblock_get_features_incompatible(ext4_superblock_t *sb)
-{
-	return uint32_t_le2host(sb->features_incompatible);
-}
-
-/**
- * TODO doxy
- */
-uint32_t ext4_superblock_get_features_read_only(ext4_superblock_t *sb)
-{
-	return uint32_t_le2host(sb->features_read_only);
-}
-
-
-/**
- * TODO doxy
- */
+
 int ext4_superblock_read_direct(service_id_t service_id,
     ext4_superblock_t **superblock)
@@ -153,7 +213,4 @@
 }
 
-/**
- * TODO doxy
- */
 int ext4_superblock_check_sanity(ext4_superblock_t *sb)
 {
Index: uspace/lib/ext4/libext4_superblock.h
===================================================================
--- uspace/lib/ext4/libext4_superblock.h	(revision 3711e7ecc46c08bafffe8145e4284827e7a1deb0)
+++ uspace/lib/ext4/libext4_superblock.h	(revision 3712434180942faca7a9305462e63eaffa18debb)
@@ -42,16 +42,16 @@
 typedef struct ext4_superblock {
 	uint32_t inodes_count; // Inodes count
-	uint32_t s_blocks_count_lo; // Blocks count
-	uint32_t s_r_blocks_count_lo; // Reserved blocks count
+	uint32_t blocks_count_lo; // Blocks count
+	uint32_t reserved_blocks_count_lo; // Reserved blocks count
 	uint32_t free_blocks_count_lo; // Free blocks count
 	uint32_t free_inodes_count; // Free inodes count
 	uint32_t first_data_block; // First Data Block
 	uint32_t log_block_size; // Block size
-	uint32_t s_obso_log_frag_size; // Obsoleted fragment size
-	uint32_t s_blocks_per_group; // Number of blocks per group
-	uint32_t s_obso_frags_per_group; // Obsoleted fragments per group
+	uint32_t obso_log_frag_size; // Obsoleted fragment size
+	uint32_t blocks_per_group; // Number of blocks per group
+	uint32_t obso_frags_per_group; // Obsoleted fragments per group
 	uint32_t inodes_per_group; // Number of inodes per group
-	uint32_t s_mtime; // Mount time
-	uint32_t s_wtime; // Write time
+	uint32_t mount_time; // Mount time
+	uint32_t write_time; // Write time
 	uint16_t mount_count; // Mount count
 	uint16_t max_mount_count; // Maximal mount count
@@ -60,22 +60,22 @@
 	uint16_t errors; // Behaviour when detecting errors
 	uint16_t minor_rev_level; // Minor revision level
-	uint32_t last_check; // Time of last check
-	uint32_t checkinterval; // Maximum time between checks
+	uint32_t last_check_time; // Time of last check
+	uint32_t check_interval; // Maximum time between checks
 	uint32_t creator_os; // Creator OS
 	uint32_t rev_level; // Revision level
-	uint16_t s_def_resuid; // Default uid for reserved blocks
-	uint16_t s_def_resgid; // Default gid for reserved blocks
+	uint16_t def_resuid; // Default uid for reserved blocks
+	uint16_t def_resgid; // Default gid for reserved blocks
 
 	// Fields for EXT4_DYNAMIC_REV superblocks only.
-	uint32_t s_first_ino; // First non-reserved inode
+	uint32_t first_inode; // First non-reserved inode
 	uint16_t inode_size; // Size of inode structure
-	uint16_t s_block_group_nr; // Block group number of this superblock
+	uint16_t block_group_number; // Block group number of this superblock
 	uint32_t features_compatible; // Compatible feature set
 	uint32_t features_incompatible; // Incompatible feature set
 	uint32_t features_read_only; // Readonly-compatible feature set
-	uint8_t s_uuid[16]; // 128-bit uuid for volume
-	char s_volume_name[16]; // Volume name
-	char s_last_mounted[64]; // Directory where last mounted
-	uint32_t s_algorithm_usage_bitmap; // For compression
+	uint8_t uuid[16]; // 128-bit uuid for volume
+	char volume_name[16]; // Volume name
+	char last_mounted[64]; // Directory where last mounted
+	uint32_t algorithm_usage_bitmap; // For compression
 
 	/*
@@ -90,50 +90,49 @@
 	 * Journaling support valid if EXT4_FEATURE_COMPAT_HAS_JOURNAL set.
 	 */
-	uint8_t s_journal_uuid[16]; // UUID of journal superblock
-	uint32_t s_journal_inum; // Inode number of journal file
-	uint32_t s_journal_dev; // Device number of journal file
-	uint32_t s_last_orphan; // Head of list of inodes to delete
-	uint32_t s_hash_seed[4]; // HTREE hash seed
-	uint8_t s_def_hash_version; // Default hash version to use
-	uint8_t s_jnl_backup_type;
-	uint16_t s_desc_size; // Size of group descriptor
-	uint32_t s_default_mount_opts; // Default mount options
-	uint32_t s_first_meta_bg; // First metablock block group
-	uint32_t s_mkfs_time; // When the filesystem was created
-	uint32_t s_jnl_blocks[17]; // Backup of the journal inode
+	uint8_t journal_uuid[16]; // UUID of journal superblock
+	uint32_t journal_inode_number; // Inode number of journal file
+	uint32_t journal_dev; // Device number of journal file
+	uint32_t last_orphan; // Head of list of inodes to delete
+	uint32_t hash_seed[4]; // HTREE hash seed
+	uint8_t default_hash_version; // Default hash version to use
+	uint8_t journal_backup_type;
+	uint16_t desc_size; // Size of group descriptor
+	uint32_t default_mount_opts; // Default mount options
+	uint32_t first_meta_bg; // First metablock block group
+	uint32_t mkfs_time; // When the filesystem was created
+	uint32_t journal_blocks[17]; // Backup of the journal inode
 
 	/* 64bit support valid if EXT4_FEATURE_COMPAT_64BIT */
-	uint32_t s_blocks_count_hi; // Blocks count
-	uint32_t s_r_blocks_count_hi; // Reserved blocks count
-	uint32_t s_free_blocks_count_hi; // Free blocks count
-	uint16_t s_min_extra_isize; // All inodes have at least # bytes
-	uint16_t s_want_extra_isize; // New inodes should reserve # bytes
-	uint32_t s_flags; // Miscellaneous flags
-	uint16_t s_raid_stride; // RAID stride
-	uint16_t s_mmp_interval; // # seconds to wait in MMP checking
-	uint64_t s_mmp_block; // Block for multi-mount protection
-	uint32_t s_raid_stripe_width; // blocks on all data disks (N*stride)
-	uint8_t s_log_groups_per_flex; // FLEX_BG group size
-	uint8_t s_reserved_char_pad;
-	uint16_t s_reserved_pad;
-	uint64_t s_kbytes_written; // Number of lifetime kilobytes written
-	uint32_t s_snapshot_inum; // Inode number of active snapshot
-	uint32_t s_snapshot_id; // Sequential ID of active snapshot
-	uint64_t s_snapshot_r_blocks_count; /* reserved blocks for active snapshot's future use */
-	uint32_t s_snapshot_list; // inode number of the head of the on-disk snapshot list
-	uint32_t s_error_count; // number of fs errors
-	uint32_t s_first_error_time; // First time an error happened
-	uint32_t s_first_error_ino; // Inode involved in first error
-	uint64_t s_first_error_block; // block involved of first error
-	uint8_t s_first_error_func[32]; // Function where the error happened
-	uint32_t s_first_error_line; // Line number where error happened
-	uint32_t s_last_error_time; // Most recent time of an error
-	uint32_t s_last_error_ino; // Inode involved in last error
-	uint32_t s_last_error_line; // Line number where error happened
-	uint64_t s_last_error_block;     /* block involved of last error */
-	uint8_t s_last_error_func[32];  /* function where the error happened */
-	uint8_t s_mount_opts[64];
-	uint32_t s_reserved[112]; // Padding to the end of the block
-
+	uint32_t blocks_count_hi; // Blocks count
+	uint32_t reserved_blocks_count_hi; // Reserved blocks count
+	uint32_t free_blocks_count_hi; // Free blocks count
+	uint16_t min_extra_isize; // All inodes have at least # bytes
+	uint16_t want_extra_isize; // New inodes should reserve # bytes
+	uint32_t lags; // Miscellaneous flags
+	uint16_t raid_stride; // RAID stride
+	uint16_t mmp_interval; // # seconds to wait in MMP checking
+	uint64_t mmp_block; // Block for multi-mount protection
+	uint32_t raid_stripe_width; // blocks on all data disks (N*stride)
+	uint8_t log_groups_per_flex; // FLEX_BG group size
+	uint8_t reserved_char_pad;
+	uint16_t reserved_pad;
+	uint64_t kbytes_written; // Number of lifetime kilobytes written
+	uint32_t snapshot_inum; // Inode number of active snapshot
+	uint32_t snapshot_id; // Sequential ID of active snapshot
+	uint64_t snapshot_r_blocks_count; /* reserved blocks for active snapshot's future use */
+	uint32_t snapshot_list; // inode number of the head of the on-disk snapshot list
+	uint32_t error_count; // number of fs errors
+	uint32_t first_error_time; // First time an error happened
+	uint32_t first_error_ino; // Inode involved in first error
+	uint64_t first_error_block; // block involved of first error
+	uint8_t first_error_func[32]; // Function where the error happened
+	uint32_t first_error_line; // Line number where error happened
+	uint32_t last_error_time; // Most recent time of an error
+	uint32_t last_error_ino; // Inode involved in last error
+	uint32_t last_error_line; // Line number where error happened
+	uint64_t last_error_block;     // Block involved of last error
+	uint8_t last_error_func[32];  // Function where the error happened
+	uint8_t mount_opts[64];
+	uint32_t padding[112]; // Padding to the end of the block
 } __attribute__((packed)) ext4_superblock_t;
 
@@ -142,15 +141,89 @@
 #define EXT4_SUPERBLOCK_OFFSET		1024
 
+extern uint32_t ext4_superblock_get_inodes_count(ext4_superblock_t *);
+extern uint64_t ext4_superblock_get_blocks_count(ext4_superblock_t *);
+extern uint64_t ext4_superblock_get_reserved_blocks_count(ext4_superblock_t *);
+extern uint64_t ext4_superblock_get_free_blocks_count(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_free_inodes_count(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_first_data_block(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_log_block_size(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_block_size(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_blocks_per_group(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_inodes_per_group(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_mount_time(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_write_time(ext4_superblock_t *);
+extern uint16_t ext4_superblock_get_mount_count(ext4_superblock_t *);
+extern uint16_t ext4_superblock_get_max_mount_count(ext4_superblock_t *);
 extern uint16_t ext4_superblock_get_magic(ext4_superblock_t *);
-extern uint32_t ext4_superblock_get_first_block(ext4_superblock_t *);
-extern uint32_t ext4_superblock_get_block_size_log2(ext4_superblock_t *);
-extern uint32_t ext4_superblock_get_block_size(ext4_superblock_t *);
-extern uint32_t	ext4_superblock_get_rev_level(ext4_superblock_t *);
-extern uint16_t	ext4_superblock_get_inode_size(ext4_superblock_t *);
-extern uint32_t	ext4_superblock_get_inodes_per_group(ext4_superblock_t *);
+extern uint16_t ext4_superblock_get_state(ext4_superblock_t *);
+extern uint16_t ext4_superblock_get_errors(ext4_superblock_t *);
+extern uint16_t ext4_superblock_get_minor_rev_level(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_last_check_time(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_check_interval(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_creator_os(ext4_superblock_t *);
+extern uint32_t ext4_superblock_get_rev_level(ext4_superblock_t *);
+
+/*
+uint16_t s_def_resuid; // Default uid for reserved blocks
+uint16_t s_def_resgid; // Default gid for reserved blocks
+*/
+
+extern uint32_t ext4_superblock_get_first_inode(ext4_superblock_t *);
+extern uint16_t ext4_superblock_get_inode_size(ext4_superblock_t *);
+extern uint16_t ext4_superblock_get_block_group_number(ext4_superblock_t *);
 extern uint32_t	ext4_superblock_get_features_compatible(ext4_superblock_t *);
 extern uint32_t	ext4_superblock_get_features_incompatible(ext4_superblock_t *);
 extern uint32_t	ext4_superblock_get_features_read_only(ext4_superblock_t *);
 
+/*
+uint8_t s_uuid[16]; // 128-bit uuid for volume
+char volume_name[16]; // Volume name
+char last_mounted[64]; // Directory where last mounted
+uint32_t s_algorithm_usage_bitmap; // For compression
+uint8_t s_prealloc_blocks; // Number of blocks to try to preallocate
+uint8_t s_prealloc_dir_blocks; // Number to preallocate for dirs
+uint16_t s_reserved_gdt_blocks; // Per group desc for online growth
+uint8_t s_journal_uuid[16]; // UUID of journal superblock
+uint32_t s_journal_inum; // Inode number of journal file
+uint32_t s_journal_dev; // Device number of journal file
+uint32_t s_last_orphan; // Head of list of inodes to delete
+uint32_t s_hash_seed[4]; // HTREE hash seed
+uint8_t s_def_hash_version; // Default hash version to use
+uint8_t s_jnl_backup_type;
+uint16_t s_desc_size; // Size of group descriptor
+uint32_t s_default_mount_opts; // Default mount options
+uint32_t s_first_meta_bg; // First metablock block group
+uint32_t s_mkfs_time; // When the filesystem was created
+uint32_t s_jnl_blocks[17]; // Backup of the journal inode
+uint16_t s_min_extra_isize; // All inodes have at least # bytes
+uint16_t s_want_extra_isize; // New inodes should reserve # bytes
+uint32_t s_flags; // Miscellaneous flags
+uint16_t s_raid_stride; // RAID stride
+uint16_t s_mmp_interval; // # seconds to wait in MMP checking
+uint64_t s_mmp_block; // Block for multi-mount protection
+uint32_t s_raid_stripe_width; // blocks on all data disks (N*stride)
+uint8_t s_log_groups_per_flex; // FLEX_BG group size
+uint8_t s_reserved_char_pad;
+uint16_t s_reserved_pad;
+uint64_t s_kbytes_written; // Number of lifetime kilobytes written
+uint32_t s_snapshot_inum; // Inode number of active snapshot
+uint32_t s_snapshot_id; // Sequential ID of active snapshot
+uint64_t s_snapshot_r_blocks_count; // reserved blocks for active snapshot's future use
+uint32_t s_snapshot_list; // inode number of the head of the on-disk snapshot list
+uint32_t s_error_count; // number of fs errors
+uint32_t s_first_error_time; // First time an error happened
+uint32_t s_first_error_ino; // Inode involved in first error
+uint64_t s_first_error_block; // block involved of first error
+uint8_t s_first_error_func[32]; // Function where the error happened
+uint32_t s_first_error_line; // Line number where error happened
+uint32_t s_last_error_time; // Most recent time of an error
+uint32_t s_last_error_ino; // Inode involved in last error
+uint32_t s_last_error_line; // Line number where error happened
+uint64_t s_last_error_block;     // block involved of last error
+uint8_t s_last_error_func[32];  // function where the error happened
+uint8_t s_mount_opts[64];
+*/
+
+/* More complex superblock functions */
 extern int ext4_superblock_read_direct(service_id_t, ext4_superblock_t **);
 extern int ext4_superblock_check_sanity(ext4_superblock_t *);
Index: uspace/srv/fs/ext4fs/ext4fs_ops.c
===================================================================
--- uspace/srv/fs/ext4fs/ext4fs_ops.c	(revision 3711e7ecc46c08bafffe8145e4284827e7a1deb0)
+++ uspace/srv/fs/ext4fs/ext4fs_ops.c	(revision 3712434180942faca7a9305462e63eaffa18debb)
@@ -501,5 +501,5 @@
 	*index = EXT4_INODE_ROOT_INDEX;
 	*size = 0;
-	*lnkcnt = ext4_inode_get_usage_count(enode->inode_ref->inode);
+	*lnkcnt = ext4_inode_get_links_count(enode->inode_ref->inode);
 
 	ext4fs_node_put(root_node);
