Index: uspace/lib/ext4/src/filesystem.c
===================================================================
--- uspace/lib/ext4/src/filesystem.c	(revision 3f7fe9e91d327467121a08ebb9f0aca902ff737a)
+++ uspace/lib/ext4/src/filesystem.c	(revision 5cef3159956158dfd0a955f1af5bd8240db878b9)
@@ -703,4 +703,6 @@
 		/* One for block bitmap one for inode bitmap */
 		free_blocks = free_blocks - reserved - 2 - inode_table_blocks;
+		if (bg_index == 0)
+			++free_blocks; /* XXX Why? */
 
 		ext4_block_group_set_free_blocks_count(bg_ref->block_group,
Index: uspace/lib/ext4/src/superblock.c
===================================================================
--- uspace/lib/ext4/src/superblock.c	(revision 3f7fe9e91d327467121a08ebb9f0aca902ff737a)
+++ uspace/lib/ext4/src/superblock.c	(revision 5cef3159956158dfd0a955f1af5bd8240db878b9)
@@ -1248,5 +1248,5 @@
 uint32_t ext4_superblock_get_block_group_count(ext4_superblock_t *sb)
 {
-	uint64_t blocks_count = ext4_superblock_get_blocks_count(sb);
+	uint64_t blocks_count = ext4_superblock_get_blocks_count(sb) - 1;
 	uint32_t blocks_per_group = ext4_superblock_get_blocks_per_group(sb);
 
@@ -1274,5 +1274,5 @@
 	    ext4_superblock_get_blocks_per_group(sb);
 	uint64_t total_blocks =
-	    ext4_superblock_get_blocks_count(sb);
+	    ext4_superblock_get_blocks_count(sb) - 1;
 
 	if (bgid < block_group_count - 1)
@@ -1533,5 +1533,6 @@
 	ext4_superblock_set_magic(sb, EXT4_SUPERBLOCK_MAGIC);
 	ext4_superblock_set_inodes_count(sb, inodes_count);
-	ext4_superblock_set_blocks_count(sb, blocks_count);
+	/* This seems to include the boot block, despite the ext2fs docs */
+	ext4_superblock_set_blocks_count(sb, fs_blocks);
 	ext4_superblock_set_reserved_blocks_count(sb, res_blocks);
 	ext4_superblock_set_free_blocks_count(sb, free_blocks);
@@ -1583,4 +1584,5 @@
 	/* Compute free blocks */
 	free_blocks = blocks_count;
+	++free_blocks; // XXX Why?
 	for (idx = 0; idx < ngroups; idx++) {
 		free_blocks -= ext4_superblock_get_group_backup_blocks(sb, idx);
