All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [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.