Index: uspace/srv/fs/minixfs/mfs_balloc.c
===================================================================
--- uspace/srv/fs/minixfs/mfs_balloc.c	(revision fdc05caa5ec595b61b01ab074716e0c099d64638)
+++ uspace/srv/fs/minixfs/mfs_balloc.c	(revision 40949d588eb8649659f772a422e8fe6f3c21f791)
@@ -128,6 +128,8 @@
 		on_error(r, goto out);
 
+		unsigned tmp = *search % bits_per_block;
+
 		freebit = find_free_bit_and_set(b->data, sbi->block_size,
-						sbi->native, *search);
+						sbi->native, tmp);
 		if (freebit == -1) {
 			/*No free bit in this block*/
@@ -138,5 +140,5 @@
 		/*Free bit found in this block, compute the real index*/
 		*idx = freebit + bits_per_block * i;
-		*idx += (bid == BMAP_INODE);
+		*idx += (bid == BMAP_INODE) ? 1 : 0;
 		mfsdebug("alloc index %d %d\n", (int) *idx, i);
 		if (*idx > limit) {
@@ -175,6 +177,6 @@
 	const size_t chunk_bits = sizeof(bitchunk_t) * 8;
 
-	for (i = start_bit / sizeof(uint32_t);
-	     i < bsize / sizeof(uint32_t); ++i) {
+	for (i = start_bit / chunk_bits;
+	     i < bsize / sizeof(bitchunk_t); ++i) {
 		if (!(~b[i])) {
 			/*No free bit in this chunk*/
