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.

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>

(cherry picked from commit 130144850c6d05bc69e06257a5d7219eb98697d8)

Change-Id: I8726efdd7123e9a1e0e4536bf2766c441964475d
Reviewed-on: http://gerrit.openafs.org/6386
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
This commit is contained in:
Michael Meffie 2011-08-12 14:29:48 -04:00 committed by Derrick Brashear
parent c137d24880
commit fa6aeb6106
2 changed files with 18 additions and 9 deletions

View File

@ -178,10 +178,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_SUN57_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

View File

@ -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; \
@ -886,10 +889,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 */
};
/*
@ -912,10 +915,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 */