ext2fs_unmark_valid(fs);
}
}
+ free_blocks = EXT2FS_C2B(fs, free_blocks);
if (free_blocks != ext2fs_free_blocks_count(fs->super)) {
pctx.group = 0;
pctx.blk = ext2fs_free_blocks_count(fs->super);
return;
}
- ctx->free_blocks = free_blocks;
+ ctx->free_blocks = EXT2FS_C2B(fs, free_blocks);
ctx->free_inodes = free_inodes;
if ((ext2fs_free_blocks_count(sb) > ext2fs_blocks_count(sb)) ||
unsigned int overhead = 0;
unsigned int ipg;
dgrp_t i;
+ blk64_t free_blocks;
blk_t numblocks;
int rsv_gdt;
int csum_flag;
* superblock and group descriptors (the inode tables and
* bitmaps will be accounted for when allocated).
*/
- ext2fs_free_blocks_count_set(super, 0);
+ free_blocks = 0;
csum_flag = EXT2_HAS_RO_COMPAT_FEATURE(fs->super,
EXT4_FEATURE_RO_COMPAT_GDT_CSUM);
for (i = 0; i < fs->group_desc_count; i++) {
if (fs->super->s_log_groups_per_flex)
numblocks += 2 + fs->inode_blocks_per_group;
- ext2fs_free_blocks_count_set(super,
- ext2fs_free_blocks_count(super) +
- numblocks);
+ free_blocks += numblocks;
ext2fs_bg_free_blocks_count_set(fs, i, numblocks);
ext2fs_bg_free_inodes_count_set(fs, i, fs->super->s_inodes_per_group);
ext2fs_bg_used_dirs_count_set(fs, i, 0);
ext2fs_group_desc_csum_set(fs, i);
}
+ free_blocks &= ~EXT2FS_CLUSTER_MASK(fs);
+ ext2fs_free_blocks_count_set(super, free_blocks);
c = (char) 255;
if (((int) c) == -1) {
group++;
}
}
- ext2fs_free_blocks_count_set(fs->super, tot_free);
+ ext2fs_free_blocks_count_set(fs->super, EXT2FS_C2B(fs, tot_free));
}
int main (int argc, char *argv[])
group = ext2fs_group_of_blk2(fs, block);
ext2fs_bg_free_blocks_count_set(fs, group, ext2fs_bg_free_blocks_count(fs, group) + 1);
ext2fs_group_desc_csum_set(fs, group);
- ext2fs_free_blocks_count_add(fs->super, 1);
+ ext2fs_free_blocks_count_add(fs->super, EXT2FS_CLUSTER_RATIO(fs));
return 0;
}
group_free = 0;
}
}
+ total_free = EXT2FS_C2B(fs, total_free);
ext2fs_free_blocks_count_set(fs->super, total_free);
/*