[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