Index: uspace/lib/ext4/libext4_block_group.c
===================================================================
--- uspace/lib/ext4/libext4_block_group.c	(revision 001307cf739bf07517cf923a8ed5eaf6da6121e7)
+++ uspace/lib/ext4/libext4_block_group.c	(revision 81092ce09ffeee54114d8c0a2ddfffc2cfeda3e3)
@@ -200,4 +200,13 @@
 }
 
+// Flags operations
+bool ext4_block_group_has_flag(ext4_block_group_t *bg, uint32_t flag)
+{
+	if (ext4_block_group_get_flags(bg) & flag) {
+		return true;
+	}
+	return false;
+}
+
 /**
  * @}
Index: uspace/lib/ext4/libext4_block_group.h
===================================================================
--- uspace/lib/ext4/libext4_block_group.h	(revision 001307cf739bf07517cf923a8ed5eaf6da6121e7)
+++ uspace/lib/ext4/libext4_block_group.h	(revision 81092ce09ffeee54114d8c0a2ddfffc2cfeda3e3)
@@ -73,4 +73,5 @@
 extern void ext4_block_group_set_checksum(ext4_block_group_t *, uint16_t);
 
+extern bool ext4_block_group_has_flag(ext4_block_group_t *, uint32_t);
 #endif
 
Index: uspace/lib/ext4/libext4_ialloc.c
===================================================================
--- uspace/lib/ext4/libext4_ialloc.c	(revision 001307cf739bf07517cf923a8ed5eaf6da6121e7)
+++ uspace/lib/ext4/libext4_ialloc.c	(revision 81092ce09ffeee54114d8c0a2ddfffc2cfeda3e3)
@@ -112,9 +112,10 @@
 			sb, free_inodes);
 
-	uint32_t unused_inodes = ext4_block_group_get_itable_unused(
-			bg_ref->block_group, sb);
-	unused_inodes++;
-	ext4_block_group_set_itable_unused(bg_ref->block_group, sb, unused_inodes);
-
+	if (ext4_block_group_has_flag(bg_ref->block_group, EXT4_BLOCK_GROUP_INODE_UNINIT)) {
+		uint32_t unused_inodes = ext4_block_group_get_itable_unused(
+				bg_ref->block_group, sb);
+		unused_inodes++;
+		ext4_block_group_set_itable_unused(bg_ref->block_group, sb, unused_inodes);
+	}
 
 	bg_ref->dirty = true;
@@ -193,7 +194,9 @@
 			ext4_block_group_set_free_inodes_count(bg, sb, free_inodes);
 
-			uint16_t unused_inodes = ext4_block_group_get_itable_unused(bg, sb);
-			unused_inodes--;
-			ext4_block_group_set_itable_unused(bg, sb, unused_inodes);
+			if (ext4_block_group_has_flag(bg, EXT4_BLOCK_GROUP_INODE_UNINIT)) {
+				uint16_t unused_inodes = ext4_block_group_get_itable_unused(bg, sb);
+				unused_inodes--;
+				ext4_block_group_set_itable_unused(bg, sb, unused_inodes);
+			}
 
 			if (is_dir) {
Index: uspace/lib/ext4/libext4_types.h
===================================================================
--- uspace/lib/ext4/libext4_types.h	(revision 001307cf739bf07517cf923a8ed5eaf6da6121e7)
+++ uspace/lib/ext4/libext4_types.h	(revision 81092ce09ffeee54114d8c0a2ddfffc2cfeda3e3)
@@ -205,4 +205,7 @@
 /*****************************************************************************/
 
+#define EXT4_BLOCK_GROUP_INODE_UNINIT	0x0001 /* Inode table/bitmap not in use */
+#define EXT4_BLOCK_GROUP_BLOCK_UNINIT	0x0002 /* Block bitmap not in use */
+#define EXT4_BLOCK_GROUP_INODE_ZEROED	0x0004 /* On-disk itable initialized to zero */
 
 /*
