Index: uspace/lib/ext4/libext4_balloc.c
===================================================================
--- uspace/lib/ext4/libext4_balloc.c	(revision 418f21d7fc3a2f17bec66d83b6a7d87cc9ac7211)
+++ uspace/lib/ext4/libext4_balloc.c	(revision 5cc18535966067137f086bb9064ad43468b477be)
@@ -259,26 +259,19 @@
 	    sb);
 
-	r = ext4_filesystem_bg_get_backup_blocks(bg_ref);
-
-	if (ext4_filesystem_blockaddr2group(sb, bbmap) == bg_ref->index)
-		bbmap = ext4_filesystem_blockaddr2_index_in_group(sb, bbmap);
-	else
+	r = ext4_filesystem_index_in_group2blockaddr(sb, 0, bg_ref->index);
+	r += ext4_filesystem_bg_get_backup_blocks(bg_ref);
+
+	if (ext4_filesystem_blockaddr2group(sb, bbmap) != bg_ref->index)
 		bbmap = -1; /* Invalid */
 
-	if (ext4_filesystem_blockaddr2group(sb, ibmap) == bg_ref->index)
-		ibmap = ext4_filesystem_blockaddr2_index_in_group(sb, ibmap);
-	else
+	if (ext4_filesystem_blockaddr2group(sb, ibmap) != bg_ref->index)
 		ibmap = -1;
 
 	while (1) {
-		uint64_t r_abs = ext4_filesystem_index_in_group2blockaddr(sb,
-			r, bg_ref->index);
-
 		if (r == bbmap || r == ibmap)
 			r++;
-		else if (r_abs >= itable && r_abs < itable_sz) {
-			r = ext4_filesystem_blockaddr2_index_in_group(sb,
-			    itable + itable_sz);
-		} else
+		else if (r >= itable && r < (itable + itable_sz))
+			r = itable + itable_sz;
+		else
 			break;
 	}
