From c6eff25be9fc959f666b33425c9ee2635224826e Mon Sep 17 00:00:00 2001 From: Mark Vitale Date: Mon, 18 May 2020 14:19:25 -0400 Subject: [PATCH] Convert all osi_timeval_t to osi_timeval32_t Since commit 130144850c6d05bc69e06257a5d7219eb98697d8 "xstat: cm xstat time values are 32 bit", OpenAFS has had two timeval definitions: osi_timeval_t and osi_timeval32_t. Since they are functionally equivalent, convert all references to osi_timeval_t to osi_timeval32_t. This makes clear that this struct is always expected to contain 32-bit members for tv_sec and tv_usec. There are still a few platforms where osi_timeval32_t is mistakenly defined with 64-bit members; these will be addressed in future commits. No functional change should be incurred by this commit. Change-Id: I3e8e44235e813571723fcd114194f6cb83de90e4 Reviewed-on: https://gerrit.openafs.org/14215 Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Benjamin Kaduk --- src/afs/AIX/osi_config.c | 2 +- src/afs/afs_callback.c | 2 +- src/afs/afs_dcache.c | 10 +++++----- src/afs/afs_fetchstore.c | 10 +++++----- src/afs/afs_icl.c | 2 +- src/afs/afs_lock.c | 2 +- src/afs/afs_osi.h | 19 +++++-------------- src/afs/afs_prototypes.h | 2 +- src/afs/afs_server.c | 12 ++++++------ src/afs/afs_stats.h | 2 +- src/afs/lock.h | 2 +- src/rx/rx.c | 2 +- src/rx/rx_clock.h | 4 ++-- src/util/uuid.c | 2 +- src/venus/kdump.c | 2 +- 15 files changed, 33 insertions(+), 42 deletions(-) diff --git a/src/afs/AIX/osi_config.c b/src/afs/AIX/osi_config.c index 6cd306d..82fe533 100644 --- a/src/afs/AIX/osi_config.c +++ b/src/afs/AIX/osi_config.c @@ -56,7 +56,7 @@ #include /* For the timer related defines */ #include /* for the serialization defines */ #include /* for the parameters to xmalloc() */ -#include "afs/afs_osi.h" /* pick up osi_timeval_t for afs_stats.h */ +#include "afs/afs_osi.h" /* pick up osi_timeval32_t for afs_stats.h */ #include "afs/afs_stats.h" #include "../export.h" diff --git a/src/afs/afs_callback.c b/src/afs/afs_callback.c index c186347..b441abc 100644 --- a/src/afs/afs_callback.c +++ b/src/afs/afs_callback.c @@ -66,7 +66,7 @@ static struct ltable { }; unsigned long lastCallBack_vnode; unsigned int lastCallBack_dv; -osi_timeval_t lastCallBack_time; +osi_timeval32_t lastCallBack_time; /* these are for storing alternate interface addresses */ struct interfaceAddr afs_cb_interface; diff --git a/src/afs/afs_dcache.c b/src/afs/afs_dcache.c index 4716cb7..d88b811 100644 --- a/src/afs/afs_dcache.c +++ b/src/afs/afs_dcache.c @@ -411,10 +411,10 @@ afs_MaybeWakeupTruncateDaemon(void) * struct so we need only export one symbol for AIX. */ static struct CTD_stats { - osi_timeval_t CTD_beforeSleep; - osi_timeval_t CTD_afterSleep; - osi_timeval_t CTD_sleepTime; - osi_timeval_t CTD_runTime; + osi_timeval32_t CTD_beforeSleep; + osi_timeval32_t CTD_afterSleep; + osi_timeval32_t CTD_sleepTime; + osi_timeval32_t CTD_runTime; int CTD_nSleeps; } CTD_stats; @@ -449,7 +449,7 @@ afs_WakeCacheWaitersIfDrained(void) void afs_CacheTruncateDaemon(void) { - osi_timeval_t CTD_tmpTime; + osi_timeval32_t CTD_tmpTime; u_int counter; u_int cb_lowat; u_int dc_hiwat = diff --git a/src/afs/afs_fetchstore.c b/src/afs/afs_fetchstore.c index c24c76d..686d4b0 100644 --- a/src/afs/afs_fetchstore.c +++ b/src/afs/afs_fetchstore.c @@ -25,12 +25,12 @@ extern int cacheDiskType; #ifndef AFS_NOSTATS static void -FillStoreStats(int code, int idx, osi_timeval_t xferStartTime, +FillStoreStats(int code, int idx, osi_timeval32_t xferStartTime, afs_size_t bytesToXfer, afs_size_t bytesXferred) { struct afs_stats_xferData *xferP; - osi_timeval_t xferStopTime; - osi_timeval_t elapsedTime; + osi_timeval32_t xferStopTime; + osi_timeval32_t elapsedTime; xferP = &(afs_stats_cmfullperf.rpc.fsXferTimes[idx]); osi_GetuTime(&xferStopTime); @@ -448,7 +448,7 @@ afs_CacheStoreDCaches(struct vcache *avc, struct dcache **dclist, afs_size_t bytesXferred; #ifndef AFS_NOSTATS - osi_timeval_t xferStartTime; /*FS xfer start time */ + osi_timeval32_t xferStartTime; /*FS xfer start time */ afs_size_t bytesToXfer = 10000; /* # bytes to xfer */ #endif /* AFS_NOSTATS */ XSTATS_DECLS; @@ -1114,7 +1114,7 @@ afs_CacheFetchProc(struct afs_conn *tc, struct rx_connection *rxconn, XSTATS_DECLS; #ifndef AFS_NOSTATS - osi_timeval_t xferStartTime; /*FS xfer start time */ + osi_timeval32_t xferStartTime; /*FS xfer start time */ afs_size_t bytesToXfer = 0, bytesXferred = 0; #endif diff --git a/src/afs/afs_icl.c b/src/afs/afs_icl.c index 558d42a..6e4ce63 100644 --- a/src/afs/afs_icl.c +++ b/src/afs/afs_icl.c @@ -614,7 +614,7 @@ afs_icl_AppendRecord(struct afs_icl_log *logp, afs_int32 op, { int rsize; /* record size in longs */ int tsize; /* temp size */ - osi_timeval_t tv; + osi_timeval32_t tv; int t1, t2, t3, t4; t4 = types & 0x3f; /* decode types */ diff --git a/src/afs/afs_lock.c b/src/afs/afs_lock.c index f97e6ed..4489853 100644 --- a/src/afs/afs_lock.c +++ b/src/afs/afs_lock.c @@ -122,7 +122,7 @@ ReleaseLock(struct afs_lock *lock, int how) void Afs_Lock_Obtain(struct afs_lock *lock, int how) { - osi_timeval_t tt1, tt2, et; + osi_timeval32_t tt1, tt2, et; afs_uint32 us; AFS_STATCNT(Lock_Obtain); diff --git a/src/afs/afs_osi.h b/src/afs/afs_osi.h index 1e3e89e..afc4440 100644 --- a/src/afs/afs_osi.h +++ b/src/afs/afs_osi.h @@ -178,28 +178,19 @@ extern int osi_vnhold(struct vcache *); */ #define osi_GetuTime(x) osi_GetTime(x) -/* osi_timeval_t exists because SGI 6.x has two sizes of timeval. */ -/** In 64 bit Solaris the timeval structure has members that are 64 bit - * In the GetTime() interface we expect pointers to afs_int32. So the need to - * define osi_timeval_t to have 32 bit members. To make this less ambiguous - * we now use 32 bit quantities consistently all over the code. - * In 64 bit HP-UX the timeval structure has a 64 bit member. - */ - +/* + * We use osi_timeval32_t because the native timeval varies in size on + * different platforms. We require a fixed size timeval, at least for the + * xstats. + */ #if defined(AFS_HPUX_ENV) || defined(AFS_LINUX_64BIT_KERNEL) || (defined(AFS_LINUX26_ENV) && !defined(HAVE_LINUX_TIME_T)) || (defined(AFS_SGI61_ENV) && defined(KERNEL) && defined(_K64U64)) 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 */ diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h index 79eea6d..d8132ff 100644 --- a/src/afs/afs_prototypes.h +++ b/src/afs/afs_prototypes.h @@ -55,7 +55,7 @@ extern afs_int32 afs_evenZaps; extern afs_int32 afs_connectBacks; extern unsigned long lastCallBack_vnode; extern unsigned int lastCallBack_dv; -extern osi_timeval_t lastCallBack_time; +extern osi_timeval32_t lastCallBack_time; extern struct interfaceAddr afs_cb_interface; extern int afs_RXCallBackServer(void); diff --git a/src/afs/afs_server.c b/src/afs/afs_server.c index 22d9bfd..cc57f36 100644 --- a/src/afs/afs_server.c +++ b/src/afs/afs_server.c @@ -129,7 +129,7 @@ afs_MarkServerUpOrDown(struct srvAddr *sa, int a_isDown) { struct server *a_serverP = sa->server; struct srvAddr *sap; - osi_timeval_t currTime, *currTimeP; /*Current time */ + osi_timeval32_t currTime, *currTimeP; /*Current time */ afs_int32 downTime; /*Computed downtime, in seconds */ struct afs_stats_SrvUpDownInfo *upDownP; /*Ptr to up/down info record */ @@ -354,8 +354,8 @@ afs_CountServers(void) int currIdx; /*Curr idx into srv table */ struct server *currSrvP; /*Ptr to curr server record */ afs_int32 currChainLen; /*Length of curr hash chain */ - osi_timeval_t currTime; /*Current time */ - osi_timeval_t *currTimeP; /*Ptr to above */ + osi_timeval32_t currTime; /*Current time */ + osi_timeval32_t *currTimeP; /*Ptr to above */ afs_int32 srvRecordAge; /*Age of server record, in secs */ struct afs_stats_SrvUpDownInfo *upDownP; /*Ptr to current up/down * info being manipulated */ @@ -823,7 +823,7 @@ afs_random(void) AFS_STATCNT(afs_random); if (!state) { - osi_timeval_t t; + osi_timeval32_t t; osi_GetTime(&t); /* * Clear the low nybble of tv_usec in a size-independent manner before adding @@ -1815,8 +1815,8 @@ afs_GetServer(afs_uint32 *aserverp, afs_int32 nservers, afs_int32 acell, void afs_ActivateServer(struct srvAddr *sap) { - osi_timeval_t currTime; /*Filled with current time */ - osi_timeval_t *currTimeP; /*Ptr to above */ + osi_timeval32_t currTime; /*Filled with current time */ + osi_timeval32_t *currTimeP; /*Ptr to above */ struct afs_stats_SrvUpDownInfo *upDownP; /*Ptr to up/down info record */ struct server *aserver = sap->server; diff --git a/src/afs/afs_stats.h b/src/afs/afs_stats.h index 8fae196..bc9403b 100644 --- a/src/afs/afs_stats.h +++ b/src/afs/afs_stats.h @@ -50,7 +50,7 @@ typedef struct { #endif /* !KERNEL */ #define XSTATS_DECLS struct afs_stats_opTimingData *opP = NULL; \ - osi_timeval_t opStartTime = { 0, 0}, opStopTime, elapsedTime + osi_timeval32_t opStartTime = { 0, 0}, opStopTime, elapsedTime #define XSTATS_START_TIME(arg) \ opP = &(afs_stats_cmfullperf.rpc.fsRPCTimes[arg]); \ diff --git a/src/afs/lock.h b/src/afs/lock.h index a5aeb51..9df8b99 100644 --- a/src/afs/lock.h +++ b/src/afs/lock.h @@ -120,7 +120,7 @@ struct afs_lock { unsigned short readers_reading; /* # readers actually with read locks */ unsigned short num_waiting; /* probably need this soon */ unsigned short spare; /* not used now */ - osi_timeval_t time_waiting; /* for statistics gathering */ + osi_timeval32_t time_waiting; /* for statistics gathering */ #if defined(INSTRUMENT_LOCKS) /* the following are useful for debugging ** the field 'src_indicator' is updated only by ObtainLock() and diff --git a/src/rx/rx.c b/src/rx/rx.c index 78faf26..0b548ff 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -485,7 +485,7 @@ int rx_InitHost(u_int host, u_int port) { #ifdef KERNEL - osi_timeval_t tv; + osi_timeval32_t tv; #else /* KERNEL */ struct timeval tv; #endif /* KERNEL */ diff --git a/src/rx/rx_clock.h b/src/rx/rx_clock.h index e3f20a2..f2359a1 100644 --- a/src/rx/rx_clock.h +++ b/src/rx/rx_clock.h @@ -95,7 +95,7 @@ extern void clock_UpdateTime(void); #else /* KERNEL */ #define clock_Init() #if defined(AFS_SGI61_ENV) || defined(AFS_HPUX_ENV) || defined(AFS_LINUX_64BIT_KERNEL) -#define clock_GetTime(cv) osi_GetTime((osi_timeval_t *)cv) +#define clock_GetTime(cv) osi_GetTime((osi_timeval32_t *)cv) #else #if (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) || (defined(AFS_DARWIN100_ENV) && defined(__amd64__)) || defined(AFS_XBSD_ENV) #define clock_GetTime(cv) \ @@ -106,7 +106,7 @@ extern void clock_UpdateTime(void); (cv)->usec = (afs_int32)tv.tv_usec; \ END #else /* defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) */ -#define clock_GetTime(cv) osi_GetTime((osi_timeval_t *)(cv)) +#define clock_GetTime(cv) osi_GetTime((osi_timeval32_t *)(cv)) #endif /* defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) */ #endif #define clock_Sec() osi_Time() diff --git a/src/util/uuid.c b/src/util/uuid.c index 71b813a..5d44f18 100644 --- a/src/util/uuid.c +++ b/src/util/uuid.c @@ -400,7 +400,7 @@ uuid_get_address(uuid_address_p_t addr) void uuid__get_os_time(uuid_time_t * os_time) { - osi_timeval_t tp; + osi_timeval32_t tp; osi_GetTime(&tp); os_time->hi = tp.tv_sec; diff --git a/src/venus/kdump.c b/src/venus/kdump.c index c7ad4d2..c5d0384 100644 --- a/src/venus/kdump.c +++ b/src/venus/kdump.c @@ -355,7 +355,7 @@ typedef void *afs_kcondvar_t; typedef struct { int tv_sec; int tv_usec; -} osi_timeval_t; /* Needed here since KERNEL defined. */ +} osi_timeval32_t; /* Needed here since KERNEL defined. */ /*#include "afs/volerrors.h"*/ #ifdef AFS_LINUX20_ENV -- 1.9.4