[Cluster-devel] [gfs2-utils PATCH] fsck.gfs2: time each of the passes
Bob Peterson
rpeterso at redhat.com
Fri Jul 11 17:41:03 UTC 2014
----- Original Message -----
(snip)
> Use timersub() here perhaps?
>
> Otherwise looks good,
>
> Steve.
Hi Steve,
Thanks for the suggestion. How about this version?
Bob Peterson
Red Hat File Systems
---
diff --git a/gfs2/fsck/main.c b/gfs2/fsck/main.c
index 81b7dd5..2c51e80 100644
--- a/gfs2/fsck/main.c
+++ b/gfs2/fsck/main.c
@@ -11,6 +11,7 @@
#include <signal.h>
#include <libintl.h>
#include <locale.h>
+#include <sys/time.h>
#define _(String) gettext(String)
#include <syslog.h>
@@ -247,11 +248,14 @@ static const struct fsck_pass passes[] = {
static int fsck_pass(const struct fsck_pass *p, struct gfs2_sbd *sdp)
{
int ret;
+ long hh, mm, ss, ms;
+ struct timeval before, after, diff;
if (fsck_abort)
return FSCK_CANCELED;
pass = p->name;
log_notice( _("Starting %s\n"), p->name);
+ gettimeofday(&before, 0);
ret = p->f(sdp);
if (ret)
exit(ret);
@@ -260,7 +264,18 @@ static int fsck_pass(const struct fsck_pass *p, struct gfs2_sbd *sdp)
log_notice( _("%s interrupted \n"), p->name);
return FSCK_CANCELED;
}
- log_notice( _("%s complete \n"), p->name);
+ gettimeofday(&after, 0);
+ timersub(&after, &before, &diff);
+ hh = diff.tv_sec / 3600;
+ mm = (diff.tv_sec / 60) - (hh * 60);
+ ss = diff.tv_sec - (hh * 3600) - (mm * 60);
+ ms = diff.tv_usec / 1000;
+ log_notice( _("%s completed in "), p->name);
+ if (hh)
+ log_notice("%ldh", hh);
+ if (mm)
+ log_notice("%ldm", mm);
+ log_notice("%ld.%03lds \n", ss, ms);
return 0;
}
More information about the Cluster-devel
mailing list