Convert all osi_timeval_t to osi_timeval32_t 15/14215/5
authorMark Vitale <mvitale@sinenomine.net>
Mon, 18 May 2020 18:19:25 +0000 (14:19 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 29 May 2020 03:09:05 +0000 (23:09 -0400)
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 <adeason@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

15 files changed:
src/afs/AIX/osi_config.c
src/afs/afs_callback.c
src/afs/afs_dcache.c
src/afs/afs_fetchstore.c
src/afs/afs_icl.c
src/afs/afs_lock.c
src/afs/afs_osi.h
src/afs/afs_prototypes.h
src/afs/afs_server.c
src/afs/afs_stats.h
src/afs/lock.h
src/rx/rx.c
src/rx/rx_clock.h
src/util/uuid.c
src/venus/kdump.c

index 6cd306d..82fe533 100644 (file)
@@ -56,7 +56,7 @@
 #include <sys/timer.h>         /* For the timer related defines                */
 #include <sys/intr.h>          /* for the serialization defines                */
 #include <sys/malloc.h>                /* 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"
 
index c186347..b441abc 100644 (file)
@@ -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;
index 4716cb7..d88b811 100644 (file)
@@ -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 =
index c24c76d..686d4b0 100644 (file)
@@ -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
 
index 558d42a..6e4ce63 100644 (file)
@@ -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 */
index f97e6ed..4489853 100644 (file)
@@ -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);
index 1e3e89e..afc4440 100644 (file)
@@ -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 */
 
index 79eea6d..d8132ff 100644 (file)
@@ -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);
index 22d9bfd..cc57f36 100644 (file)
@@ -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;
 
index 8fae196..bc9403b 100644 (file)
@@ -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]); \
index a5aeb51..9df8b99 100644 (file)
@@ -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
index 78faf26..0b548ff 100644 (file)
@@ -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 */
index e3f20a2..f2359a1 100644 (file)
@@ -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()
index 71b813a..5d44f18 100644 (file)
@@ -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;
index c7ad4d2..c5d0384 100644 (file)
@@ -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