xstat: cm xstat time values are 32 bit
authorMichael Meffie <mmeffie@sinenomine.net>
Fri, 12 Aug 2011 18:29:48 +0000 (14:29 -0400)
committerDerrick Brashear <shadow@dementix.org>
Mon, 29 Aug 2011 21:17:19 +0000 (14:17 -0700)
The kernel space cm xstat time structures are implemented as 32
bit values in memory and on the wire.  Define the client side
xstat userspace structures as 32 bit time values as well to avoid
size mismatches on systems with native 64 bit time values.

Change-Id: I857ea48bf8e12ec006ef24affb2e65a105ce27bb
Reviewed-on: http://gerrit.openafs.org/5237
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

src/afs/afs_osi.h
src/afs/afs_stats.h

index 3205a7b..6dd7e61 100644 (file)
@@ -179,10 +179,16 @@ typedef struct {
     afs_int32 tv_sec;
     afs_int32 tv_usec;
 } osi_timeval_t;
+typedef struct {
+    afs_int32 tv_sec;
+    afs_int32 tv_usec;
+} osi_timeval32_t;
 #elif defined(AFS_SUN5_ENV)
 typedef struct timeval32 osi_timeval_t;
+typedef struct timeval32 osi_timeval32_t;
 #else
 typedef struct timeval osi_timeval_t;
+typedef struct timeval osi_timeval32_t;
 #endif /* AFS_SGI61_ENV */
 
 #ifndef UKERNEL
index 661e283..60f2e93 100644 (file)
 #define AFS_STATS(arg) arg
 #ifndef KERNEL
 /* NOTE: Ensure this is the same size in user and kernel mode. */
-typedef struct timeval osi_timeval_t;
+typedef struct {
+    afs_int32 tv_sec;
+    afs_int32 tv_usec;
+} osi_timeval32_t;
 #endif /* !KERNEL */
 
 #define XSTATS_DECLS struct afs_stats_opTimingData *opP = NULL; \
@@ -888,10 +891,10 @@ struct afs_stats_CMPerf {
 struct afs_stats_opTimingData {
     afs_int32 numOps;          /*Number of operations executed */
     afs_int32 numSuccesses;    /*Number of successful ops */
-    osi_timeval_t sumTime;     /*Sum of sample timings */
-    osi_timeval_t sqrTime;     /*Sum of squares of sample timings */
-    osi_timeval_t minTime;     /*Minimum timing value observed */
-    osi_timeval_t maxTime;     /*Minimum timing value observed */
+    osi_timeval32_t sumTime;   /*Sum of sample timings */
+    osi_timeval32_t sqrTime;   /*Sum of squares of sample timings */
+    osi_timeval32_t minTime;   /*Minimum timing value observed */
+    osi_timeval32_t maxTime;   /*Minimum timing value observed */
 };
 
 /*
@@ -914,10 +917,10 @@ struct afs_stats_opTimingData {
 struct afs_stats_xferData {
     afs_int32 numXfers;                /*Number of successful xfers */
     afs_int32 numSuccesses;    /*Number of successful xfers */
-    osi_timeval_t sumTime;     /*Sum of timing values */
-    osi_timeval_t sqrTime;     /*Sum of squares of timing values */
-    osi_timeval_t minTime;     /*Minimum xfer time recorded */
-    osi_timeval_t maxTime;     /*Maximum xfer time recorded */
+    osi_timeval32_t sumTime;   /*Sum of timing values */
+    osi_timeval32_t sqrTime;   /*Sum of squares of timing values */
+    osi_timeval32_t minTime;   /*Minimum xfer time recorded */
+    osi_timeval32_t maxTime;   /*Maximum xfer time recorded */
     afs_int32 sumBytes;                /*Sum of KBytes transferred */
     afs_int32 minBytes;                /*Minimum value observed */
     afs_int32 maxBytes;                /*Maximum value observed */