From: Theodore Ts'o Date: Fri, 4 Jan 2019 03:27:37 +0000 (-0500) Subject: Revert "e4defrag: use 64-bit counters to track # files defragged" X-Git-Tag: v1.44.6~16 X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fe2fsprogs.git;a=commitdiff_plain;h=9fac506ef7582d246998fdbfc3291dccb6f82e75 Revert "e4defrag: use 64-bit counters to track # files defragged" This reverts commit 3293ea9ecbe1d622f9cf6c41d705d82fbae6a3e3. This wasn't really the right fix, since there can't be more than 2**32 files in a file system. The real issue is when the number of files in a directory change during the e4defrag run. Signed-off-by: Theodore Ts'o --- diff --git a/misc/e4defrag.c b/misc/e4defrag.c index fd2b6268c..9d237da24 100644 --- a/misc/e4defrag.c +++ b/misc/e4defrag.c @@ -169,13 +169,13 @@ static int block_size; static int extents_before_defrag; static int extents_after_defrag; static int mode_flag; -static uid_t current_uid; -static unsigned long long defraged_file_count; -static unsigned long long frag_files_before_defrag; -static unsigned long long frag_files_after_defrag; -static unsigned long long regular_count; -static unsigned long long succeed_cnt; -static unsigned long long total_count; +static unsigned int current_uid; +static unsigned int defraged_file_count; +static unsigned int frag_files_before_defrag; +static unsigned int frag_files_after_defrag; +static unsigned int regular_count; +static unsigned int succeed_cnt; +static unsigned int total_count; static __u8 log_groups_per_flex; static __u32 blocks_per_group; static __u32 feature_incompat; @@ -1912,9 +1912,9 @@ int main(int argc, char *argv[]) } /* File tree walk */ nftw64(dir_name, file_defrag, FTW_OPEN_FD, flags); - printf("\n\tSuccess:\t\t\t[ %llu/%llu ]\n", - succeed_cnt, total_count); - printf("\tFailure:\t\t\t[ %llu/%llu ]\n", + printf("\n\tSuccess:\t\t\t[ %u/%u ]\n", succeed_cnt, + total_count); + printf("\tFailure:\t\t\t[ %u/%u ]\n", total_count - succeed_cnt, total_count); if (mode_flag & DETAIL) { printf("\tTotal extents:\t\t\t%4d->%d\n", @@ -1923,10 +1923,12 @@ int main(int argc, char *argv[]) printf("\tFragmented percentage:\t\t" "%3llu%%->%llu%%\n", !regular_count ? 0 : - (frag_files_before_defrag * 100) / + ((unsigned long long) + frag_files_before_defrag * 100) / regular_count, !regular_count ? 0 : - (frag_files_after_defrag * 100) / + ((unsigned long long) + frag_files_after_defrag * 100) / regular_count); } break;