From c3d0a688212d42f0ad6f028f900eb838646119cc Mon Sep 17 00:00:00 2001 From: Jim Rees Date: Tue, 8 Jun 2004 17:09:09 +0000 Subject: [PATCH] temp-fix-PCallBackAddr-20040608 temporary fix for compiler warning in PCallBackAddr --- src/afs/afs_pioctl.c | 58 +++++++++++++++++++++++--------------------- src/afs/afs_server.c | 4 +-- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/src/afs/afs_pioctl.c b/src/afs/afs_pioctl.c index d47fce0be..4b6da0c2f 100644 --- a/src/afs/afs_pioctl.c +++ b/src/afs/afs_pioctl.c @@ -189,7 +189,7 @@ static int (*(CpioctlSw[])) () = { PBogus, /* 0 */ PNewAlias, /* 1 -- create new cell alias */ PListAliases, /* 2 -- list cell aliases */ - PCallBackAddr, /* 3 -- request addr for callback rxcon */ + PCallBackAddr, /* 3 -- request addr for callback rxcon */ }; #define PSetClientContext 99 /* Special pioctl to setup caller's creds */ @@ -3758,75 +3758,79 @@ DECL_PIOCTL(PCallBackAddr) afs_int32 i, j; struct unixuser *tu; struct srvAddr **addrs; - + extern int afs_HaveCallBacksFrom(struct server *aserver); + /*AFS_STATCNT(PCallBackAddr);*/ if ( !afs_resourceinit_flag ) /* afs deamons havn't started yet */ return EIO; /* Inappropriate ioctl for device */ - + if (!afs_osi_suser(acred)) return EACCES; - + if ( ainSize < sizeof(afs_int32) ) return EINVAL; - + memcpy(&addr, ain, sizeof(afs_int32)); - + ObtainReadLock(&afs_xinterface); for ( i=0; (unsigned short)i < afs_cb_interface.numberOfInterfaces; i++) { if (afs_cb_interface.addr_in[i] == addr) break; } - + ReleaseWriteLock(&afs_xinterface); - - if (afs_cb_interface.addr_in[i] != addr) return EINVAL; - + + if (afs_cb_interface.addr_in[i] != addr) + return EINVAL; + ObtainReadLock(&afs_xserver); /* Necessary? */ - ObtainReadLock(&afs_xsrvAddr); - + ObtainReadLock(&afs_xsrvAddr); + srvAddrCount = 0; for (i=0;inext_bkt) { + for (sa = afs_srvAddrs[i]; sa; sa = sa->next_bkt) { srvAddrCount++; } } - + addrs = afs_osi_Alloc(srvAddrCount * sizeof(*addrs)); j = 0; for (i=0;inext_bkt) { + for (sa = afs_srvAddrs[i]; sa; sa = sa->next_bkt) { if (j >= srvAddrCount) break; addrs[j++] = sa; } } - - ReleaseReadLock(&afs_xsrvAddr); + + ReleaseReadLock(&afs_xsrvAddr); ReleaseReadLock(&afs_xserver); - + for (i=0; iserver; if (!ts) continue; - + /* vlserver has no callback conn */ if (sa->sa_portal == AFS_VLPORT) { continue; } - + if (!ts->cell) /* not really an active server, anyway, it must */ - continue; /* have just been added by setsprefs */ - + continue; /* have just been added by setsprefs */ + /* get a connection, even if host is down; bumps conn ref count */ tu = afs_GetUser(areq->uid, ts->cell->cellNum, SHARED_LOCK); - tc = afs_ConnBySA(sa, ts->cell->fsport, ts->cell->cellNum, tu, 1/*force*/, 1/*create*/, SHARED_LOCK); + tc = afs_ConnBySA(sa, ts->cell->fsport, ts->cell->cellNum, tu, + 1/*force*/, 1/*create*/, SHARED_LOCK); afs_PutUser(tu, SHARED_LOCK); - if (!tc) continue; - - if ((sa->sa_flags & SRVADDR_ISDOWN) || HaveCallBacksFrom(ts)) { + if (!tc) + continue; + + if ((sa->sa_flags & SRVADDR_ISDOWN) || afs_HaveCallBacksFrom(ts)) { if (sa->sa_flags & SRVADDR_ISDOWN) { rx_SetConnDeadTime(tc->id, 3); } - + #ifdef RX_ENABLE_LOCKS AFS_GUNLOCK(); #endif /* RX_ENABLE_LOCKS */ diff --git a/src/afs/afs_server.c b/src/afs/afs_server.c index b70a8abf2..b453f8aa8 100644 --- a/src/afs/afs_server.c +++ b/src/afs/afs_server.c @@ -260,7 +260,7 @@ afs_ServerDown(struct srvAddr *sa) /* return true if we have any callback promises from this server */ int -HaveCallBacksFrom(struct server *aserver) +afs_HaveCallBacksFrom(struct server *aserver) { register afs_int32 now; register int i; @@ -583,7 +583,7 @@ afs_CheckServers(int adown, struct cell *acellp) if (!tc) continue; - if ((sa->sa_flags & SRVADDR_ISDOWN) || HaveCallBacksFrom(sa->server) + if ((sa->sa_flags & SRVADDR_ISDOWN) || afs_HaveCallBacksFrom(sa->server) || (tc->srvr->server == afs_setTimeHost)) { conns[nconns]=tc; rxconns[nconns]=tc->id; -- 2.39.5