From 130144850c6d05bc69e06257a5d7219eb98697d8 Mon Sep 17 00:00:00 2001 From: Michael Meffie Date: Fri, 12 Aug 2011 14:29:48 -0400 Subject: [PATCH] xstat: cm xstat time values are 32 bit 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 Reviewed-by: Jeffrey Altman Reviewed-by: Derrick Brashear --- src/afs/afs_osi.h | 6 ++++++ src/afs/afs_stats.h | 21 ++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/afs/afs_osi.h b/src/afs/afs_osi.h index 3205a7b..6dd7e61 100644 --- a/src/afs/afs_osi.h +++ b/src/afs/afs_osi.h @@ -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 diff --git a/src/afs/afs_stats.h b/src/afs/afs_stats.h index 661e283..60f2e93 100644 --- a/src/afs/afs_stats.h +++ b/src/afs/afs_stats.h @@ -43,7 +43,10 @@ #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 */ -- 1.9.4