mkfs7: Fixed a bug in indirect blocks.

This commit is contained in:
Warren Toomey
2016-03-23 21:15:07 +10:00
parent 99a33c8dde
commit 851f03a50a
+3 -1
View File
@@ -158,14 +158,16 @@ sub build_indirect_blocks {
# Divide the number of data blocks by WORDSPERBLK and round up, so # Divide the number of data blocks by WORDSPERBLK and round up, so
# we know how many indirect blocks to allocate. # we know how many indirect blocks to allocate.
my $indcount = int( ( $blkcount + WORDSPERBLK - 1 ) / WORDSPERBLK ); my $indcount = int( ( $blkcount + WORDSPERBLK - 1 ) / WORDSPERBLK );
dprint("Allocating $indcount indirect blks for $blkcount direct blks\n");
# Get enough indirect blocks # Get enough indirect blocks
my @indlist = allocate_blocks($indcount); my @indlist = allocate_blocks(WORDSPERBLK * $indcount);
# Now fill in the pointers # Now fill in the pointers
my $indblock = $indlist[0]; my $indblock = $indlist[0];
my $offset = 0; my $offset = 0;
foreach my $datablock (@blklist) { foreach my $datablock (@blklist) {
# dprint("$indblock $offset -> $datablock\n");
$Block[$indblock][ $offset++ ] = $datablock; $Block[$indblock][ $offset++ ] = $datablock;
if ( $offset == WORDSPERBLK ) { if ( $offset == WORDSPERBLK ) {
$offset = 0; $offset = 0;