26#define _VENUS_COMM_H_ 1
128 friend void DoProbes(
int,
struct in_addr *);
140 static olist *conntab;
141 static char conntab_sync;
150 unsigned authenticated : 1;
174 int CheckResult(
int, VolumeId,
int TranslateEINCOMP = 1);
219 friend void DownServers(
int,
struct in_addr *,
char *,
unsigned int *);
243 static olist *srvtab;
244 static char srvtab_sync;
252 unsigned Xbinding : 1;
253 unsigned probeme : 1;
255 unsigned fetchpartial_support : 1;
257 struct timeval lastobs;
260 srvent(
struct in_addr *host, RealmId realmid);
339#define ASYNCCOP1 (COPModes & 1)
340#define ASYNCCOP2 (COPModes & 2)
341#define PIGGYCOP2 (COPModes & 4)
361void DownServers(
int, struct in_addr *,
char *,
unsigned int *);
388#define START_COMMSYNC() \
390 vproc *vp = VprocSelf(); \
392 int pri = LWP_MAX_PRIORITY; \
393 while (pri > vp->lwpri) { \
394 if (CommQueue.count[pri]) { \
395 LOG(0, ("WAITING(CommQueue) pri = %d, for %d at pri %d\n", \
396 vp->lwpri, CommQueue.count[pri], pri)); \
398 VprocWait(&CommQueue.sync); \
400 LOG(0, ("WAIT OVER, elapsed = %3.1f\n", elapsed)); \
401 pri = LWP_MAX_PRIORITY; \
407 CommQueue.count[vp->lwpri]++; \
408 LOG(10, ("CommQueue: insert pri %d count = %d\n", vp->lwpri, \
409 CommQueue.count[vp->lwpri])); \
412#define END_COMMSYNC() \
414 vproc *vp = VprocSelf(); \
415 CommQueue.count[vp->lwpri]--; \
416 LOG(10, ("CommQueue: remove pri %d count = %d\n", vp->lwpri, \
417 CommQueue.count[vp->lwpri])); \
418 VprocSignal(&CommQueue.sync); \
423#define START_COMMSTATS() \
424 RPCPktStatistics startCS, endCS; \
426#define END_COMMSTATS() \
427 if (LogLevel >= 1000) { \
429 SubCSSs(&endCS, &startCS); \
431#define MULTI_START_MESSAGE(viceop) \
433 LOG(10, ("(Multi)%s: start\n", RPCOpStats.RPCOps[viceop].name)); \
436#define UNI_START_MESSAGE(viceop) \
438 LOG(10, ("%s: start\n", RPCOpStats.RPCOps[viceop].name)); \
445#if defined(sun4) || defined(sparc)
446#define MULTI_END_MESSAGE(viceop) \
450 LOG(10, ("(Multi)%s: code = %d, elapsed = %3.1f\n", \
451 RPCOpStats.RPCOps[viceop].name, code, elapsed)); \
453 ("RPC2_SStats: Total = %d\n", endCS.RPC2_SStats_Multi.Multicasts)); \
455 ("SFTP_SStats: Starts = %d, Datas = %d, DataRetries = %d, Acks = %d\n", \
456 endCS.SFTP_SStats_Multi.Starts, endCS.SFTP_SStats_Multi.Datas, \
457 endCS.SFTP_SStats_Multi.DataRetries, endCS.SFTP_SStats_Multi.Acks)); \
459 ("RPC2_RStats: Replies = %d, Busies = %d, Naks = %d, Bogus = %d\n", \
460 endCS.RPC2_RStats_Multi.Replies, endCS.RPC2_RStats_Multi.Busies, \
461 endCS.RPC2_RStats_Multi.Naks, endCS.RPC2_RStats_Multi.Bogus)); \
462 LOG(1000, ("SFTP_RStats: Datas = %d, Acks = %d, Busies = %d\n", \
463 endCS.SFTP_RStats_Multi.Datas, endCS.SFTP_RStats_Multi.Acks, \
464 endCS.SFTP_RStats_Multi.Busies));
466#define MULTI_END_MESSAGE(viceop) \
470 LOG(10, ("(Multi)%s: code = %d, elapsed = %3.1f\n", \
471 RPCOpStats.RPCOps[viceop].name, code, elapsed)); \
473 ("RPC2_SStats: Total = %d\n", endCS.RPC2_SStats_Multi.Multicasts)); \
475 ("SFTP_SStats: Starts = %d, Datas = %d, DataRetries = %d, Acks = %d\n", \
476 endCS.SFTP_SStats_Multi.Starts, endCS.SFTP_SStats_Multi.Datas, \
477 endCS.SFTP_SStats_Multi.DataRetries, endCS.SFTP_SStats_Multi.Acks)); \
479 ("RPC2_RStats: Replies = %d, Busies = %d, Naks = %d, Bogus = %d\n", \
480 endCS.RPC2_RStats_Multi.Replies, endCS.RPC2_RStats_Multi.Busies, \
481 endCS.RPC2_RStats_Multi.Naks, endCS.RPC2_RStats_Multi.Bogus)); \
482 LOG(1000, ("SFTP_RStats: Datas = %d, Acks = %d, Busies = %d\n", \
483 endCS.SFTP_RStats_Multi.Datas, endCS.SFTP_RStats_Multi.Acks, \
484 endCS.SFTP_RStats_Multi.Busies)); \
485 if (elapsed > 1000.0) \
487 ("*** Long Running (Multi)%s: code = %d, elapsed = %3.1f ***\n", \
488 RPCOpStats.RPCOps[viceop].name, code, elapsed));
491#define UNI_END_MESSAGE(viceop) \
495 LOG(10, ("%s: code = %d, elapsed = %3.1f\n", \
496 RPCOpStats.RPCOps[viceop].name, code, elapsed)); \
497 LOG(1000, ("RPC2_SStats: Total = %d\n", endCS.RPC2_SStats_Uni.Total)); \
499 ("SFTP_SStats: Starts = %d, Datas = %d, DataRetries = %d, Acks = %d\n", \
500 endCS.SFTP_SStats_Uni.Starts, endCS.SFTP_SStats_Uni.Datas, \
501 endCS.SFTP_SStats_Uni.DataRetries, endCS.SFTP_SStats_Uni.Acks)); \
503 ("RPC2_RStats: Replies = %d, Busies = %d, Naks = %d, Bogus = %d\n", \
504 endCS.RPC2_RStats_Uni.Replies, endCS.RPC2_RStats_Uni.Busies, \
505 endCS.RPC2_RStats_Uni.Naks, endCS.RPC2_RStats_Uni.Bogus)); \
506 LOG(1000, ("SFTP_RStats: Datas = %d, Acks = %d, Busies = %d\n", \
507 endCS.SFTP_RStats_Uni.Datas, endCS.SFTP_RStats_Uni.Acks, \
508 endCS.SFTP_RStats_Uni.Busies)); \
509 if (elapsed > 1000.0) \
510 LOG(0, ("*** Long Running %s: code = %d, elapsed = %3.1f ***\n", \
511 RPCOpStats.RPCOps[viceop].name, code, elapsed));
512#define MULTI_RECORD_STATS(viceop) \
514 RPCOpStats.RPCOps[viceop].Mrpc_retries++; \
516 RPCOpStats.RPCOps[viceop].Mbad++; \
518 RPCOpStats.RPCOps[viceop].Mgood++; \
519 RPCOpStats.RPCOps[viceop].Mtime += elapsed; \
521#define UNI_RECORD_STATS(viceop) \
523 RPCOpStats.RPCOps[viceop].rpc_retries++; \
525 RPCOpStats.RPCOps[viceop].bad++; \
527 RPCOpStats.RPCOps[viceop].good++; \
528 RPCOpStats.RPCOps[viceop].time += elapsed; \
531#define MULTI_START_MESSAGE(viceop) \
533 LOG(10, ("(Multi)%s: start\n", RPCOpStats.RPCOps[viceop].name));
534#define UNI_START_MESSAGE(viceop) \
536 LOG(10, ("%s: start\n", RPCOpStats.RPCOps[viceop].name));
537#define MULTI_END_MESSAGE(viceop) \
539 LOG(10, ("(Multi)%s: code = %d\n", RPCOpStats.RPCOps[viceop].name, code));
540#define UNI_END_MESSAGE(viceop) \
542 LOG(10, ("%s: code = %d\n", RPCOpStats.RPCOps[viceop].name, code));
543#define MULTI_RECORD_STATS(viceop) \
545 RPCOpStats.RPCOps[viceop].Mrpc_retries++; \
547 RPCOpStats.RPCOps[viceop].Mbad++; \
549 RPCOpStats.RPCOps[viceop].Mgood++;
550#define UNI_RECORD_STATS(viceop) \
552 RPCOpStats.RPCOps[viceop].rpc_retries++; \
554 RPCOpStats.RPCOps[viceop].bad++; \
556 RPCOpStats.RPCOps[viceop].good++;
559#define VENUS_MAXBSLEN 1024
Definition: venusvol.h:145
Definition: refcounted.h:38
Definition: venusvol.h:260
void abort() EXCLUDES_TRANSACTION
Definition: vol_cml.cc:3679
connent * operator()()
Definition: comm.cc:423
~conn_iterator()
Definition: comm.cc:415
conn_iterator(struct ConnKey *=(struct ConnKey *) 0)
Definition: comm.cc:409
friend void PutConn(connent **)
Definition: comm.cc:232
friend void CommInit()
Definition: comm.cc:109
void PutRef(void)
Definition: comm.h:176
void print()
Definition: comm.h:183
void GetRef(void)
Definition: comm.h:175
friend void Conn_Signal()
friend void ConnPrint(int)
Definition: comm.cc:264
int CheckResult(int, VolumeId, int TranslateEINCOMP=1)
Definition: comm.cc:345
friend int GetTime(long *, long *)
int RefCount(void)
Definition: comm.h:181
friend void DoProbes(int, struct in_addr *)
Definition: comm.cc:638
void print(FILE *fp)
Definition: comm.h:184
void Suicide(void)
Definition: comm.cc:332
RPC2_Handle connid
Definition: comm.h:171
virtual void main(void) EXCLUDES_TRANSACTION
Definition: comm.cc:560
probeslave(ProbeSlaveTask, void *, void *, char *)
Definition: comm.cc:545
Definition: venusvol.h:931
Definition: rescomm.h:113
int ServerIsUp()
Definition: comm.h:287
void print()
Definition: comm.h:292
friend void CommInit()
Definition: comm.cc:109
int Connect(RPC2_Handle *, int)
Definition: rescomm.cc:432
int GetConn(connent **c, uid_t uid, int force=0) EXCLUDES_TRANSACTION
Definition: comm.cc:177
friend void MultiBind(int, struct in_addr *, connent **)
Definition: comm.cc:674
friend long VENUS_CallBack(RPC2_Handle, ViceFid *)
Definition: venuscb.cc:188
void ServerUp(RPC2_Handle)
Definition: comm.cc:1124
long GetBandwidth(unsigned long *)
Definition: comm.cc:1194
friend srvent * FindServerByCBCid(RPC2_Handle)
Definition: comm.cc:486
friend void ProbeServers(int)
Definition: comm.cc:593
friend void DownServers(char *, unsigned int *)
Definition: comm.cc:801
friend srvent * FindServer(unsigned long)
Definition: rescomm.cc:344
friend void CheckServerBW(long)
Definition: comm.cc:866
friend long HandleProbe(int, RPC2_Handle Handles[], long, long,...)
Definition: comm.cc:765
friend long VENUS_CallBackConnect(RPC2_Handle, RPC2_Integer, RPC2_Integer, RPC2_Integer, RPC2_Integer, RPC2_CountedBS *)
Definition: venuscb.cc:315
friend int FailReconnect(int, struct in_addr *)
Definition: comm.cc:1274
friend void GetServer(srvent **, unsigned long)
Definition: rescomm.cc:357
friend long VENUS_CallBackFetch(RPC2_Handle, ViceFid *, SE_Descriptor *)
Definition: venuscb.cc:223
friend void PutServer(srvent **)
Definition: rescomm.cc:373
void Reset()
Definition: rescomm.cc:486
friend int FailDisconnect(int, struct in_addr *)
Definition: comm.cc:1268
int GetStatistics(ViceStatistics *) EXCLUDES_TRANSACTION
Definition: comm.cc:1009
friend void ServerProbe(long *, long *)
Definition: comm_daemon.cc:114
int ServerIsDown()
Definition: rescomm.cc:552
friend long VENUS_RevokeWBPermit(RPC2_Handle RPCid, VolumeId Vid)
const char * Name(void)
Definition: comm.h:290
void ServerError(int *)
Definition: rescomm.cc:510
long GetLiveness(struct timeval *)
Definition: comm.cc:1158
friend void Srvr_Signal()
Definition: comm.cc:468
friend void ServerPrint(int)
Definition: rescomm.cc:390
friend void Srvr_Wait()
Definition: comm.cc:459
Definition: venusvol.h:479
Definition: venusvol.h:620
char * name
Definition: vproc.h:177
#define CODA_ASSERT(pred)
Definition: coda_assert.h:22
#define EXCLUDES_TRANSACTION
Definition: coda_tsa.h:108
const int DFLT_ST
Definition: comm.h:102
void PutConn(connent **)
Definition: comm.cc:232
void CommInit()
Definition: comm.cc:109
void ProbeServers(int) EXCLUDES_TRANSACTION
Definition: comm.cc:593
void MultiBind(int, struct in_addr *, connent **) EXCLUDES_TRANSACTION
Definition: comm.cc:674
ProbeSlaveTask
Definition: comm.h:304
@ BindToServer
Definition: comm.h:307
@ ProbeUpServers
Definition: comm.h:305
@ ProbeDownServers
Definition: comm.h:306
srvent * FindServer(struct in_addr *host)
Definition: comm.cc:474
void DoProbes(int, struct in_addr *) EXCLUDES_TRANSACTION
Definition: comm.cc:638
srvent * FindServerByCBCid(RPC2_Handle)
Definition: comm.cc:486
srvent * GetServer(struct in_addr *host, RealmId realmid)
Definition: comm.cc:501
const int DFLT_AP
Definition: comm.h:92
const int UNSET_RT
Definition: comm.h:85
void DownServers(char *, unsigned int *)
Definition: comm.cc:801
int rpc2_timeflag
Definition: comm.cc:91
int sftp_packetsize
Definition: comm.cc:90
const int UNSET_ST
Definition: comm.h:96
void CheckServerBW(long)
Definition: comm.cc:866
long HandleProbe(int, RPC2_Handle Handles[], long, long,...)
Definition: comm.cc:765
int FailReconnect(int, struct in_addr *)
Definition: comm.cc:1274
void ServerPrint()
Definition: rescomm.cc:379
const int UNSET_MT
Definition: comm.h:97
void ProbeDaemon(void) EXCLUDES_TRANSACTION
Definition: comm_daemon.cc:65
const int UNSET_AP
Definition: comm.h:93
int mrpc2_timeflag
Definition: comm.cc:92
const int DFLT_MT
Definition: comm.h:103
void ConnPrint()
Definition: comm.cc:253
const int DFLT_WS
Definition: comm.h:88
const unsigned int UNSET_WCT
Definition: comm.h:106
void ServerProbe(long *=0, long *=0) EXCLUDES_TRANSACTION
Definition: comm_daemon.cc:114
const int UNSET_TO
Definition: comm.h:87
const int DFLT_WCS
Definition: comm.h:109
void MultiProbe(int, RPC2_Handle *) EXCLUDES_TRANSACTION
Definition: comm.cc:719
void PutServer(srvent **)
Definition: rescomm.cc:373
int FailDisconnect(int, struct in_addr *)
Definition: comm.cc:1268
struct CommQueueStruct CommQueue
Definition: comm.cc:95
int sftp_windowsize
Definition: comm.cc:87
void PROD_Init(void)
Definition: comm_daemon.cc:54
const unsigned int INIT_BW
Definition: comm.h:105
const int UNSET_WCS
Definition: comm.h:108
const int DFLT_SA
Definition: comm.h:90
int sftp_ackpoint
Definition: comm.cc:89
int rpc2_timeout
Definition: comm.cc:86
const int UNSET_WS
Definition: comm.h:89
const int DFLT_TO
Definition: comm.h:86
const int DFLT_RT
Definition: comm.h:84
const unsigned int DFLT_WCT
Definition: comm.h:107
int rpc2_retries
Definition: comm.cc:85
int COPModes
Definition: comm.cc:83
const int UNSET_SA
Definition: comm.h:91
int sftp_sendahead
Definition: comm.cc:88
void Srvr_Signal()
Definition: comm.cc:468
const int UNSET_PS
Definition: comm.h:95
void Srvr_Wait() EXCLUDES_TRANSACTION
Definition: comm.cc:459
char myHostName[]
Definition: comm.cc:84
const int DFLT_PS
Definition: comm.h:94
#define LWP_MAX_PRIORITY
Definition: lwp.h:83
dictionary unused
Definition: find_unused_symbols.py:92
srv
Definition: gensrvstats.py:252
stdout
Definition: volusage.py:12
int32_t RPC2_Integer
Definition: rpc2.h:297
RPC2_Integer RPC2_Handle
Definition: rpc2.h:345
char sync
Definition: comm.h:373
struct in_addr host
Definition: comm.h:193
uid_t uid
Definition: comm.h:194
char c
Definition: tdb.c:54