# HG changeset patch # User tytso@mit.edu # Date Tue Sep 12 14:56:18 2006 -0400 # Node ID 8be686f713b52a3fa0b5dab70980ea3ddbad27b5 # parent: 7e1e8751d2be27716166e88453b52273b7096039 Fix more rounding overflows for filesystems that have 2**32-1 blocks Signed-off-by: Eric Sandeen Index: e2fsprogs-1.39-my-patches-from-ted/e2fsck/ChangeLog =================================================================== --- e2fsprogs-1.39-my-patches-from-ted.orig/e2fsck/ChangeLog +++ e2fsprogs-1.39-my-patches-from-ted/e2fsck/ChangeLog @@ -1,5 +1,9 @@ 2006-08-30 Eric Sandeen + * pass1.c (handle_bad_fs_blocks): use blk_t, not int for first_block. + +2006-08-30 Eric Sandeen + * pass1.c (new_table_block, handle_fs_bad_blocks): * super.c (check_super_block): Use new inlines to calculate group first & last blocks. Index: e2fsprogs-1.39-my-patches-from-ted/e2fsck/pass1.c =================================================================== --- e2fsprogs-1.39-my-patches-from-ted.orig/e2fsck/pass1.c +++ e2fsprogs-1.39-my-patches-from-ted/e2fsck/pass1.c @@ -1953,7 +1953,7 @@ static void handle_fs_bad_blocks(e2fsck_ { ext2_filsys fs = ctx->fs; dgrp_t i; - int first_block; + blk_t first_block; for (i = 0; i < fs->group_desc_count; i++) { first_block = ext2fs_group_first_block(fs, i); Index: e2fsprogs-1.39-my-patches-from-ted/misc/ChangeLog =================================================================== --- e2fsprogs-1.39-my-patches-from-ted.orig/misc/ChangeLog +++ e2fsprogs-1.39-my-patches-from-ted/misc/ChangeLog @@ -1,5 +1,9 @@ 2006-08-30 Eric Sandeen + * mke2fs.c (PRS): Avoid overflow in megs calculation. + +2006-08-30 Eric Sandeen + * dumpe2fs.c (list_desc): Use new inlines to calculate group first & last blocks. Index: e2fsprogs-1.39-my-patches-from-ted/misc/mke2fs.c =================================================================== --- e2fsprogs-1.39-my-patches-from-ted.orig/misc/mke2fs.c +++ e2fsprogs-1.39-my-patches-from-ted/misc/mke2fs.c @@ -1261,7 +1261,7 @@ static void PRS(int argc, char *argv[]) } if (!fs_type) { - int megs = fs_param.s_blocks_count * + int megs = (__u64)fs_param.s_blocks_count * (EXT2_BLOCK_SIZE(&fs_param) / 1024) / 1024; if (megs <= 3) Index: e2fsprogs-1.39-my-patches-from-ted/resize/ChangeLog =================================================================== --- e2fsprogs-1.39-my-patches-from-ted.orig/resize/ChangeLog +++ e2fsprogs-1.39-my-patches-from-ted/resize/ChangeLog @@ -1,5 +1,11 @@ 2006-08-30 Eric Sandeen + * online.c (online_resize_fs): use div_ceil for r_frac calculation. + * resize2fs.c (adjust_fs_info): avoid overflow in blk calculation + when figuring new reserved blocks count. + +2006-08-30 Eric Sandeen + * resize2fs.c (adjust_fs_info): Disallow > 2^32 indoes at resize time. 2006-08-30 Eric Sandeen Index: e2fsprogs-1.39-my-patches-from-ted/resize/online.c =================================================================== --- e2fsprogs-1.39-my-patches-from-ted.orig/resize/online.c +++ e2fsprogs-1.39-my-patches-from-ted/resize/online.c @@ -59,8 +59,7 @@ errcode_t online_resize_fs(ext2_filsys f exit(1); } - r_frac = ((100 * sb->s_r_blocks_count) + sb->s_blocks_count-1) / - sb->s_blocks_count; + r_frac = ext2fs_div_ceil(100 * sb->s_r_blocks_count, sb->s_blocks_count); retval = ext2fs_read_bitmaps(fs); if (retval) Index: e2fsprogs-1.39-my-patches-from-ted/resize/resize2fs.c =================================================================== --- e2fsprogs-1.39-my-patches-from-ted.orig/resize/resize2fs.c +++ e2fsprogs-1.39-my-patches-from-ted/resize/resize2fs.c @@ -250,7 +250,7 @@ retry: /* * Adjust the number of reserved blocks */ - blk = old_fs->super->s_r_blocks_count * 100 / + blk = (__u64)old_fs->super->s_r_blocks_count * 100 / old_fs->super->s_blocks_count; fs->super->s_r_blocks_count = e2p_percent(blk, fs->super->s_blocks_count);