* [Cluster-devel] [gfs2-utils PATCH] fsck.gfs2: time each of the passes [not found] <187372922.6308414.1405011111441.JavaMail.zimbra@redhat.com> @ 2014-07-10 16:53 ` Bob Peterson 2014-07-11 16:05 ` Steven Whitehouse 0 siblings, 1 reply; 5+ messages in thread From: Bob Peterson @ 2014-07-10 16:53 UTC (permalink / raw) To: cluster-devel.redhat.com Hi, This patch reports how much time was taken in each pass. Regards, Bob Peterson Red Hat File Systems Signed-off-by: Bob Peterson <rpeterso@redhat.com> --- gfs2/fsck/main.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/gfs2/fsck/main.c b/gfs2/fsck/main.c index 81b7dd5..785f0c4 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; 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,20 @@ 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); + hh = (after.tv_sec - before.tv_sec) / 3600; + mm = ((after.tv_sec - before.tv_sec) / 60) - (hh * 60); + ss = ((after.tv_sec - before.tv_sec)) - (hh * 3600) - (mm * 60); + ms = after.tv_usec - before.tv_usec; + if (ms < 0) + ms += 1000000; + ms /= 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; } ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Cluster-devel] [gfs2-utils PATCH] fsck.gfs2: time each of the passes 2014-07-10 16:53 ` [Cluster-devel] [gfs2-utils PATCH] fsck.gfs2: time each of the passes Bob Peterson @ 2014-07-11 16:05 ` Steven Whitehouse 2014-07-11 17:41 ` Bob Peterson 0 siblings, 1 reply; 5+ messages in thread From: Steven Whitehouse @ 2014-07-11 16:05 UTC (permalink / raw) To: cluster-devel.redhat.com Hi, On 10/07/14 17:53, Bob Peterson wrote: > Hi, > > This patch reports how much time was taken in each pass. > > Regards, > > Bob Peterson > Red Hat File Systems > > Signed-off-by: Bob Peterson <rpeterso@redhat.com> > --- > gfs2/fsck/main.c | 19 ++++++++++++++++++- > 1 file changed, 18 insertions(+), 1 deletion(-) > > diff --git a/gfs2/fsck/main.c b/gfs2/fsck/main.c > index 81b7dd5..785f0c4 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; > > 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,20 @@ 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); > + hh = (after.tv_sec - before.tv_sec) / 3600; > + mm = ((after.tv_sec - before.tv_sec) / 60) - (hh * 60); > + ss = ((after.tv_sec - before.tv_sec)) - (hh * 3600) - (mm * 60); > + ms = after.tv_usec - before.tv_usec; > + if (ms < 0) > + ms += 1000000; Use timersub() here perhaps? Otherwise looks good, Steve. > + ms /= 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; > } > > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Cluster-devel] [gfs2-utils PATCH] fsck.gfs2: time each of the passes 2014-07-11 16:05 ` Steven Whitehouse @ 2014-07-11 17:41 ` Bob Peterson 2014-07-11 17:58 ` Steven Whitehouse 0 siblings, 1 reply; 5+ messages in thread From: Bob Peterson @ 2014-07-11 17:41 UTC (permalink / raw) To: cluster-devel.redhat.com ----- 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; } ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Cluster-devel] [gfs2-utils PATCH] fsck.gfs2: time each of the passes 2014-07-11 17:41 ` Bob Peterson @ 2014-07-11 17:58 ` Steven Whitehouse 2014-07-11 19:44 ` Bob Peterson 0 siblings, 1 reply; 5+ messages in thread From: Steven Whitehouse @ 2014-07-11 17:58 UTC (permalink / raw) To: cluster-devel.redhat.com Hi, On 11/07/14 18:41, Bob Peterson wrote: > ----- Original Message ----- > (snip) >> Use timersub() here perhaps? >> >> Otherwise looks good, >> >> Steve. > Hi Steve, > > Thanks for the suggestion. How about this version? Yes, that looks better. There is probably a nicer way to do the conversion to string too... a quick google points at using a time_t to contain tv_secs, converting to tm and then appending the tv_usecs after. Should be a bit cleaner than doing it manually, Steve. > 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; > } > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Cluster-devel] [gfs2-utils PATCH] fsck.gfs2: time each of the passes 2014-07-11 17:58 ` Steven Whitehouse @ 2014-07-11 19:44 ` Bob Peterson 0 siblings, 0 replies; 5+ messages in thread From: Bob Peterson @ 2014-07-11 19:44 UTC (permalink / raw) To: cluster-devel.redhat.com ----- Original Message ----- > Hi, > > On 11/07/14 18:41, Bob Peterson wrote: > > ----- Original Message ----- > > (snip) > >> Use timersub() here perhaps? > >> > >> Otherwise looks good, > >> > >> Steve. > > Hi Steve, > > > > Thanks for the suggestion. How about this version? > Yes, that looks better. There is probably a nicer way to do the > conversion to string too... a quick google points at using a time_t to > contain tv_secs, converting to tm and then appending the tv_usecs after. > Should be a bit cleaner than doing it manually, > > Steve. Hi, I could implement your suggestion like this. I could also use strftime, but it's ugly as sin, so I'm reluctant to do so. What do you think? Regards, Bob Peterson --- diff --git a/gfs2/fsck/main.c b/gfs2/fsck/main.c index b4b1a03..ad42b0d 100644 --- a/gfs2/fsck/main.c +++ b/gfs2/fsck/main.c @@ -11,6 +11,8 @@ #include <signal.h> #include <libintl.h> #include <locale.h> +#include <sys/time.h> +#include <time.h> #define _(String) gettext(String) #include "copyright.cf" @@ -244,11 +246,15 @@ static const struct fsck_pass passes[] = { static int fsck_pass(const struct fsck_pass *p, struct gfs2_sbd *sdp) { int ret; + struct timeval before, after, diff; + time_t runtime; + struct tm *run_tm; 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); @@ -257,7 +263,16 @@ 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); + runtime = (time_t)diff.tv_sec; + run_tm = gmtime(&runtime); + log_notice( _("%s completed in "), p->name); + if (run_tm->tm_hour) + log_notice("%dh", run_tm->tm_hour); + if (run_tm->tm_min) + log_notice("%dm", run_tm->tm_min); + log_notice("%d.%03lds \n", run_tm->tm_sec, diff.tv_usec / 1000); return 0; } ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-07-11 19:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <187372922.6308414.1405011111441.JavaMail.zimbra@redhat.com>
2014-07-10 16:53 ` [Cluster-devel] [gfs2-utils PATCH] fsck.gfs2: time each of the passes Bob Peterson
2014-07-11 16:05 ` Steven Whitehouse
2014-07-11 17:41 ` Bob Peterson
2014-07-11 17:58 ` Steven Whitehouse
2014-07-11 19:44 ` Bob Peterson
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.