mirror of https://github.com/vitalif/e2fsprogs
e2fsck: add resource tracking for passes 1[b-d]
On ext2, time tracking for pass1 includes both error detection and specific type of fs fix-up phase (e.g. block referenced by multiple inodes). The multi-reference fix-up phase some time take significant amount of time to complete. We would like to track time spent in sub component of pass1 by having a finer granularity during pass1b through pass1d phase. Signed-off-by: Ken Chen <kenchen@google.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>bitmap-optimize
parent
312c2a404c
commit
fea390e253
|
@ -208,6 +208,9 @@ void e2fsck_pass1_dupblocks(e2fsck_t ctx, char *block_buf)
|
||||||
{
|
{
|
||||||
ext2_filsys fs = ctx->fs;
|
ext2_filsys fs = ctx->fs;
|
||||||
struct problem_context pctx;
|
struct problem_context pctx;
|
||||||
|
#ifdef RESOURCE_TRACK
|
||||||
|
struct resource_track rtrack;
|
||||||
|
#endif
|
||||||
|
|
||||||
clear_problem_context(&pctx);
|
clear_problem_context(&pctx);
|
||||||
|
|
||||||
|
@ -224,10 +227,39 @@ void e2fsck_pass1_dupblocks(e2fsck_t ctx, char *block_buf)
|
||||||
dict_set_allocator(&ino_dict, NULL, inode_dnode_free, NULL);
|
dict_set_allocator(&ino_dict, NULL, inode_dnode_free, NULL);
|
||||||
dict_set_allocator(&blk_dict, NULL, block_dnode_free, NULL);
|
dict_set_allocator(&blk_dict, NULL, block_dnode_free, NULL);
|
||||||
|
|
||||||
|
#ifdef RESOURCE_TRACK
|
||||||
|
init_resource_track(&rtrack, ctx->fs->io);
|
||||||
|
#endif
|
||||||
|
|
||||||
pass1b(ctx, block_buf);
|
pass1b(ctx, block_buf);
|
||||||
|
|
||||||
|
#ifdef RESOURCE_TRACK
|
||||||
|
if (ctx->options & E2F_OPT_TIME2) {
|
||||||
|
e2fsck_clear_progbar(ctx);
|
||||||
|
print_resource_track("Pass 1b", &rtrack, ctx->fs->io);
|
||||||
|
}
|
||||||
|
init_resource_track(&rtrack, ctx->fs->io);
|
||||||
|
#endif
|
||||||
|
|
||||||
pass1c(ctx, block_buf);
|
pass1c(ctx, block_buf);
|
||||||
|
|
||||||
|
#ifdef RESOURCE_TRACK
|
||||||
|
if (ctx->options & E2F_OPT_TIME2) {
|
||||||
|
e2fsck_clear_progbar(ctx);
|
||||||
|
print_resource_track("Pass 1c", &rtrack, ctx->fs->io);
|
||||||
|
}
|
||||||
|
init_resource_track(&rtrack, ctx->fs->io);
|
||||||
|
#endif
|
||||||
|
|
||||||
pass1d(ctx, block_buf);
|
pass1d(ctx, block_buf);
|
||||||
|
|
||||||
|
#ifdef RESOURCE_TRACK
|
||||||
|
if (ctx->options & E2F_OPT_TIME2) {
|
||||||
|
e2fsck_clear_progbar(ctx);
|
||||||
|
print_resource_track("Pass 1d", &rtrack, ctx->fs->io);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Time to free all of the accumulated data structures that we
|
* Time to free all of the accumulated data structures that we
|
||||||
* don't need anymore.
|
* don't need anymore.
|
||||||
|
|
Loading…
Reference in New Issue