* [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.