|
@@ -149,11 +149,12 @@ read_block_bitmap(struct super_block *sb, unsigned int block_group)
|
|
|
block_group, le32_to_cpu(desc->bg_block_bitmap));
|
|
|
return NULL;
|
|
|
}
|
|
|
- if (!ext2_valid_block_bitmap(sb, desc, block_group, bh)) {
|
|
|
- brelse(bh);
|
|
|
- return NULL;
|
|
|
- }
|
|
|
|
|
|
+ ext2_valid_block_bitmap(sb, desc, block_group, bh);
|
|
|
+ /*
|
|
|
+ * file system mounted not to panic on error, continue with corrupt
|
|
|
+ * bitmap
|
|
|
+ */
|
|
|
return bh;
|
|
|
}
|
|
|
|
|
@@ -1380,7 +1381,12 @@ allocated:
|
|
|
"Allocating block in system zone - "
|
|
|
"blocks from "E2FSBLK", length %lu",
|
|
|
ret_block, num);
|
|
|
- goto out;
|
|
|
+ /*
|
|
|
+ * ext2_try_to_allocate marked the blocks we allocated as in
|
|
|
+ * use. So we may want to selectively mark some of the blocks
|
|
|
+ * as free
|
|
|
+ */
|
|
|
+ goto retry_alloc;
|
|
|
}
|
|
|
|
|
|
performed_allocation = 1;
|