diff options
-rw-r--r-- | e2fsck/pass1.c | 8 | ||||
-rw-r--r-- | lib/ext2fs/expanddir.c | 2 | ||||
-rw-r--r-- | lib/ext2fs/i_block.c | 3 | ||||
-rw-r--r-- | lib/ext2fs/mkjournal.c | 2 |
4 files changed, 10 insertions, 5 deletions
diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index cf184c50..dbf3c942 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -1804,8 +1804,10 @@ static void scan_extent_node(e2fsck_t ctx, struct problem_context *pctx, (EXT2FS_B2C(ctx->fs, blk) == EXT2FS_B2C(ctx->fs, pb->previous_block)) && (blk & EXT2FS_CLUSTER_MASK(ctx->fs)) == - (blockcnt & EXT2FS_CLUSTER_MASK(ctx->fs)))) + (blockcnt & EXT2FS_CLUSTER_MASK(ctx->fs)))) { mark_block_used(ctx, blk); + pb->num_blocks++; + } pb->previous_block = blk; @@ -1824,7 +1826,6 @@ static void scan_extent_node(e2fsck_t ctx, struct problem_context *pctx, } if (is_dir && extent.e_len > 0) pb->last_db_block = blockcnt - 1; - pb->num_blocks += extent.e_len; pb->previous_block = extent.e_pblk + extent.e_len - 1; start_block = pb->last_block = extent.e_lblk + extent.e_len - 1; next: @@ -1981,8 +1982,9 @@ static void check_blocks(e2fsck_t ctx, struct problem_context *pctx, EXT4_FEATURE_RO_COMPAT_HUGE_FILE) || !(inode->i_flags & EXT4_HUGE_FILE_FL)) pb.num_blocks *= (fs->blocksize / 512); + pb.num_blocks *= EXT2FS_CLUSTER_RATIO(fs); #if 0 - printf("inode %u, i_size = %lu, last_block = %lld, i_blocks=%lu, num_blocks = %lu\n", + printf("inode %u, i_size = %u, last_block = %lld, i_blocks=%llu, num_blocks = %llu\n", ino, inode->i_size, pb.last_block, ext2fs_inode_i_blocks(fs, inode), pb.num_blocks); #endif diff --git a/lib/ext2fs/expanddir.c b/lib/ext2fs/expanddir.c index 47af3a55..8f738c8c 100644 --- a/lib/ext2fs/expanddir.c +++ b/lib/ext2fs/expanddir.c @@ -52,6 +52,7 @@ static int expand_dir_proc(ext2_filsys fs, es->err = retval; return BLOCK_ABORT; } + es->newblocks++; } if (blockcnt > 0) { retval = ext2fs_new_dir_block(fs, 0, 0, &block); @@ -79,7 +80,6 @@ static int expand_dir_proc(ext2_filsys fs, ext2fs_free_mem(&block); *blocknr = new_blk; ext2fs_block_alloc_stats2(fs, new_blk, +1); - es->newblocks++; if (es->done) return (BLOCK_CHANGED | BLOCK_ABORT); diff --git a/lib/ext2fs/i_block.c b/lib/ext2fs/i_block.c index 39d93eec..f36c3c47 100644 --- a/lib/ext2fs/i_block.c +++ b/lib/ext2fs/i_block.c @@ -38,6 +38,7 @@ errcode_t ext2fs_iblk_add_blocks(ext2_filsys fs, struct ext2_inode *inode, EXT4_FEATURE_RO_COMPAT_HUGE_FILE) || !(inode->i_flags & EXT4_HUGE_FILE_FL)) num_blocks *= fs->blocksize / 512; + num_blocks *= EXT2FS_CLUSTER_RATIO(fs); b += num_blocks; @@ -61,6 +62,7 @@ errcode_t ext2fs_iblk_sub_blocks(ext2_filsys fs, struct ext2_inode *inode, EXT4_FEATURE_RO_COMPAT_HUGE_FILE) || !(inode->i_flags & EXT4_HUGE_FILE_FL)) num_blocks *= fs->blocksize / 512; + num_blocks *= EXT2FS_CLUSTER_RATIO(fs); if (num_blocks > b) return EOVERFLOW; @@ -79,6 +81,7 @@ errcode_t ext2fs_iblk_set(ext2_filsys fs, struct ext2_inode *inode, blk64_t b) EXT4_FEATURE_RO_COMPAT_HUGE_FILE) || !(inode->i_flags & EXT4_HUGE_FILE_FL)) b *= fs->blocksize / 512; + b *= EXT2FS_CLUSTER_RATIO(fs); inode->i_blocks = b & 0xFFFFFFFF; if (fs->super->s_feature_ro_compat & EXT4_FEATURE_RO_COMPAT_HUGE_FILE) diff --git a/lib/ext2fs/mkjournal.c b/lib/ext2fs/mkjournal.c index 5113ced8..aaad2f60 100644 --- a/lib/ext2fs/mkjournal.c +++ b/lib/ext2fs/mkjournal.c @@ -249,11 +249,11 @@ static int mkjournal_proc(ext2_filsys fs, es->err = retval; return BLOCK_ABORT; } + es->newblocks++; } if (blockcnt >= 0) es->num_blocks--; - es->newblocks++; retval = 0; if (blockcnt <= 0) retval = io_channel_write_blk64(fs->io, new_blk, 1, es->buf); |