Coda Distributed File System
Classes | Macros | Typedefs | Enumerations | Functions | Variables
venus.private.h File Reference
#include <stdio.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/param.h>
#include <ctype.h>
#include <errno.h>
#include <lwp/lock.h>
#include <rpc2/rpc2.h>
#include <util.h>
#include "coda_assert.h"
#include <vice.h>
#include <inconsist.h>
#include "venusstats.h"
#include "venusfid.h"
Include dependency graph for venus.private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  CacheEventRecord
 
struct  CacheStats
 
struct  MRPC_common_params
 

Macros

#define O_BINARY   0
 
#define RC_STATUSREAD   1
 
#define RC_STATUSWRITE   2
 
#define RC_STATUS   (RC_STATUSREAD | RC_STATUSWRITE)
 
#define RC_DATAREAD   4
 
#define RC_DATAWRITE   8
 
#define RC_DATA   (RC_DATAREAD | RC_DATAWRITE)
 
#define EMULTRSLTS   ETOOMANYREFS /* external */
 
#define ESYNRESOLVE   155 /* internal */
 
#define EASYRESOLVE   156 /* internal */
 
#define ERETRY   157 /* internal */
 
#define EASRSTARTED   200
 
#define ASR_INTERVAL   300
 
#define DFLT_VR   "/coda" /* venus root */
 
#define DFLT_CD   "/usr/coda/venus.cache" /* cache directory */
 
#define DFLT_PIDFILE   "pid" /* default pid file */
 
#define DFLT_CTRLFILE   "VENUS_CTRL" /* default control file */
 
#define DFLT_LOGFILE   "/usr/coda/etc/venus.log" /* venus log file */
 
#define DFLT_ERRLOG   "/usr/coda/etc/console" /* venus error log */
 
#define MIN_CS   "2MB"
 
#define UNSET_PRIMARYUSER   0 /* primary user of this machine */
 
#define ALL_FIDS   (&NullFid)
 
#define STREQ(a, b)   (strcmp((a), (b)) == 0)
 
#define STRNEQ(a, b, n)   (strncmp((a), (b), (n)) == 0)
 
#define NBLOCKS(bytes)   ((bytes + 1023) >> 10)
 
#define NBLOCKS_BYTES(bytes)   (NBLOCKS(bytes) << 10)
 
#define FOLLOW_SYMLINKS    0x1 /* should lookup follow symlinks for last component? */
 
#define TRAVERSE_MTPTS   0x2 /* should lookup cross covered mount points? */
 
#define REFERENCE   0x8 /* should cache references be noted? */
 
#define LOG(level, stmt)
 
#define ObtainLock(lock, level)
 
#define ReleaseLock(lock, level)
 
#define SubTimes(end, start)   (0.0)
 
#define START_TIMING()
 
#define END_TIMING()   float elapsed = 0.0;
 
#define TRANSLATE_TO_LOWER(s)
 
#define TRANSLATE_TO_UPPER(s)
 
#define CHOKE(me...)   choke(__FILE__, __LINE__, ##me)
 

Typedefs

typedef void(* PROC_V_UL) (unsigned long)
 

Enumerations

enum  LockLevel { NL , RD , SH , WR }
 
enum  CacheType { ATTR , DATA }
 
enum  CacheEvent {
  HIT , MISS , RETRY , TIMEOUT ,
  NOSPACE , FAILURE , CREATE , WRITE ,
  REMOVE , REPLACE
}
 

Functions

void dprint (const char *...)
 
void choke (const char *file, int line, const char *...)
 
void rds_printer (char *...)
 
void VenusPrint (int argc, const char **argv)
 
void VenusPrint (FILE *, int argc, const char **argv)
 
void VenusPrint (int, int argc, const char **argv)
 
const char * VenusOpStr (int)
 
const char * IoctlOpStr (unsigned char nr)
 
const char * VenusRetStr (int)
 
void VVPrint (FILE *, ViceVersionVector **)
 
int binaryfloor (int)
 
void LogInit ()
 
void DebugOn ()
 
void DebugOff ()
 
void Terminate ()
 
void DumpState ()
 
void RusagePrint (int)
 
void VFSPrint (int)
 
void RPCPrint (int)
 
void GetCSS (RPCPktStatistics *)
 
void SubCSSs (RPCPktStatistics *, RPCPktStatistics *)
 
void MallocPrint (int)
 
void StatsInit ()
 
void SwapLog ()
 
void ToggleMallocTrace ()
 
const char * lvlstr (LockLevel)
 
int GetTime (long *, long *)
 
time_t Vtime ()
 
int FAV_Compare (ViceFidAndVV *, ViceFidAndVV *)
 
void DaemonInit ()
 
void FireAndForget (const char *name, void(*f)(void), int interval, int stacksize=32 *1024) EXCLUDES_TRANSACTION
 
void RegisterDaemon (unsigned long, char *)
 
void DispatchDaemons ()
 
void MUX_add_callback (int fd, void(*cb)(int fd, void *udata), void *udata)
 
void MakeUserSpoolDir (char *, uid_t)
 

Variables

const int BLOCKS_PER_FILE = 24
 
const int MLES_PER_FILE = 4
 
const int FILES_PER_HDBE = 2
 
const int MIN_CB = 2048
 
const int MIN_CF = MIN_CB / BLOCKS_PER_FILE
 
const int MIN_MLE = MIN_CF * MLES_PER_FILE
 
const int MIN_HDBE = MIN_CF / FILES_PER_HDBE
 
const int FREE_FACTOR = 16
 
const uid_t V_UID = (uid_t)0
 
const gid_t V_GID = 65534
 
const uid_t ANYUSER_UID = (uid_t)-1
 
const uid_t HOARD_UID = (uid_t)-2
 
const uid_t UNSET_UID = (uid_t)-666
 
const unsigned short V_MODE = 0600
 
const int OWNERBITS = 0700
 
const int OWNERREAD = 0400
 
const int OWNERWRITE = 0200
 
const int OWNEREXEC = 0100
 
const uint32_t NO_HOST = (uint32_t)-1
 
const uint32_t V_MAXACLLEN = 1000
 
const int V_BLKSIZE = 8192
 
const int TIMERINTERVAL = 5
 
const int GETDATA = 1
 
FILE * logFile
 
int LogLevel
 
long int RPC2_DebugLevel
 
long int SFTP_DebugLevel
 
long int RPC2_Trace
 
int MallocTrace
 
const VenusFid NullFid
 
const ViceVersionVector NullVV
 
VFSStatistics VFSStats
 
RPCOpStatistics RPCOpStats
 
struct timeval DaemonExpiry
 
vprocMain
 
VenusFid rootfid
 
int parent_fd
 
long rootnodeid
 
int CleanShutDown
 
const char * venusRoot
 
const char * kernDevice
 
const char * realmtab
 
const char * CacheDir
 
const char * CachePrefix
 
uint64_t CacheBlocks
 
const char * SpoolDir
 
uid_t PrimaryUser
 
const char * VenusPidFile
 
const char * VenusControlFile
 
const char * VenusLogFile
 
const char * consoleFile
 
const char * MarinerSocketPath
 
int mariner_tcp_enable
 
int plan9server_enabled
 
int nofork
 
int allow_reattach
 
int masquerade_port
 
int PiggyValidations
 
int T1Interval
 
const char * ASRLauncherFile
 
const char * ASRPolicyFile
 
int option_isr
 
int detect_reintegration_retry
 
int redzone_limit
 
int yellowzone_limit
 
pid_t ASRpid
 
VenusFid ASRfid
 
uid_t ASRuid
 

Macro Definition Documentation

◆ ALL_FIDS

#define ALL_FIDS   (&NullFid)

◆ ASR_INTERVAL

#define ASR_INTERVAL   300

◆ CHOKE

#define CHOKE (   me...)    choke(__FILE__, __LINE__, ##me)

◆ DFLT_CD

#define DFLT_CD   "/usr/coda/venus.cache" /* cache directory */

◆ DFLT_CTRLFILE

#define DFLT_CTRLFILE   "VENUS_CTRL" /* default control file */

◆ DFLT_ERRLOG

#define DFLT_ERRLOG   "/usr/coda/etc/console" /* venus error log */

◆ DFLT_LOGFILE

#define DFLT_LOGFILE   "/usr/coda/etc/venus.log" /* venus log file */

◆ DFLT_PIDFILE

#define DFLT_PIDFILE   "pid" /* default pid file */

◆ DFLT_VR

#define DFLT_VR   "/coda" /* venus root */

◆ EASRSTARTED

#define EASRSTARTED   200

◆ EASYRESOLVE

#define EASYRESOLVE   156 /* internal */

◆ EMULTRSLTS

#define EMULTRSLTS   ETOOMANYREFS /* external */

◆ END_TIMING

#define END_TIMING ( )    float elapsed = 0.0;

◆ ERETRY

#define ERETRY   157 /* internal */

◆ ESYNRESOLVE

#define ESYNRESOLVE   155 /* internal */

◆ FOLLOW_SYMLINKS

#define FOLLOW_SYMLINKS    0x1 /* should lookup follow symlinks for last component? */

◆ LOG

#define LOG (   level,
  stmt 
)

◆ MIN_CS

#define MIN_CS   "2MB"

◆ NBLOCKS

#define NBLOCKS (   bytes)    ((bytes + 1023) >> 10)

◆ NBLOCKS_BYTES

#define NBLOCKS_BYTES (   bytes)    (NBLOCKS(bytes) << 10)

◆ O_BINARY

#define O_BINARY   0

◆ ObtainLock

#define ObtainLock (   lock,
  level 
)
Value:
{ \
switch (level) { \
case RD: \
ObtainReadLock(lock); \
break; \
\
case SH: \
ObtainSharedLock(lock); \
break; \
\
case WR: \
ObtainWriteLock(lock); \
break; \
\
case NL: \
default: \
CODA_ASSERT(0); \
} \
}
level
Definition: make_certs.py:100
@ SH
Definition: venus.private.h:173
@ RD
Definition: venus.private.h:172
@ WR
Definition: venus.private.h:174
@ NL
Definition: venus.private.h:171

◆ RC_DATA

#define RC_DATA   (RC_DATAREAD | RC_DATAWRITE)

◆ RC_DATAREAD

#define RC_DATAREAD   4

◆ RC_DATAWRITE

#define RC_DATAWRITE   8

◆ RC_STATUS

#define RC_STATUS   (RC_STATUSREAD | RC_STATUSWRITE)

◆ RC_STATUSREAD

#define RC_STATUSREAD   1

◆ RC_STATUSWRITE

#define RC_STATUSWRITE   2

◆ REFERENCE

#define REFERENCE   0x8 /* should cache references be noted? */

◆ ReleaseLock

#define ReleaseLock (   lock,
  level 
)
Value:
{ \
switch (level) { \
case RD: \
ReleaseReadLock(lock); \
break; \
\
case SH: \
ReleaseSharedLock(lock); \
break; \
\
case WR: \
ReleaseWriteLock(lock); \
break; \
\
case NL: \
default: \
CODA_ASSERT(0); \
} \
}

◆ START_TIMING

#define START_TIMING ( )

◆ STREQ

#define STREQ (   a,
 
)    (strcmp((a), (b)) == 0)

◆ STRNEQ

#define STRNEQ (   a,
  b,
 
)    (strncmp((a), (b), (n)) == 0)

◆ SubTimes

#define SubTimes (   end,
  start 
)    (0.0)

◆ TRANSLATE_TO_LOWER

#define TRANSLATE_TO_LOWER (   s)
Value:
{ \
for (char *c = s; *c; c++) \
if (isupper(*c)) \
*c = tolower(*c); \
}
char c
Definition: tdb.c:54

◆ TRANSLATE_TO_UPPER

#define TRANSLATE_TO_UPPER (   s)
Value:
{ \
for (char *c = s; *c; c++) \
if (islower(*c)) \
*c = toupper(*c); \
}

◆ TRAVERSE_MTPTS

#define TRAVERSE_MTPTS   0x2 /* should lookup cross covered mount points? */

◆ UNSET_PRIMARYUSER

#define UNSET_PRIMARYUSER   0 /* primary user of this machine */

Typedef Documentation

◆ PROC_V_UL

typedef void(* PROC_V_UL) (unsigned long)

Enumeration Type Documentation

◆ CacheEvent

enum CacheEvent
Enumerator
HIT 
MISS 
RETRY 
TIMEOUT 
NOSPACE 
FAILURE 
CREATE 
WRITE 
REMOVE 
REPLACE 

◆ CacheType

enum CacheType
Enumerator
ATTR 
DATA 

◆ LockLevel

enum LockLevel
Enumerator
NL 
RD 
SH 
WR 

Function Documentation

◆ binaryfloor()

int binaryfloor ( int  n)

◆ choke()

void choke ( const char *  file,
int  line,
const char *  ... 
)

◆ DaemonInit()

void DaemonInit ( )

◆ DebugOff()

void DebugOff ( )

◆ DebugOn()

void DebugOn ( )

◆ DispatchDaemons()

void DispatchDaemons ( )

◆ dprint()

void dprint ( const char *  ...)

◆ DumpState()

void DumpState ( )

◆ FAV_Compare()

int FAV_Compare ( ViceFidAndVV *  fav1,
ViceFidAndVV *  fav2 
)

◆ FireAndForget()

void FireAndForget ( const char *  name,
void(*)(void)  f,
int  interval,
int  stacksize = 32 *1024 
)

◆ GetCSS()

void GetCSS ( RPCPktStatistics cs)

◆ GetTime()

int GetTime ( long *  ,
long *   
)

◆ IoctlOpStr()

const char * IoctlOpStr ( unsigned char  nr)

◆ LogInit()

void LogInit ( )

◆ lvlstr()

const char * lvlstr ( LockLevel  level)

◆ MakeUserSpoolDir()

void MakeUserSpoolDir ( char *  usd,
uid_t  owner 
)

◆ MallocPrint()

void MallocPrint ( int  fd)

◆ MUX_add_callback()

void MUX_add_callback ( int  fd,
void(*)(int fd, void *udata)  cb,
void *  udata 
)

◆ rds_printer()

void rds_printer ( char *  ...)

◆ RegisterDaemon()

void RegisterDaemon ( unsigned long  interval,
char *  sync 
)

◆ RPCPrint()

void RPCPrint ( int  afd)

◆ RusagePrint()

void RusagePrint ( int  afd)

◆ StatsInit()

void StatsInit ( )

◆ SubCSSs()

void SubCSSs ( RPCPktStatistics cs1,
RPCPktStatistics cs2 
)

◆ SwapLog()

void SwapLog ( )

◆ Terminate()

void Terminate ( )

◆ ToggleMallocTrace()

void ToggleMallocTrace ( )

◆ VenusOpStr()

const char * VenusOpStr ( int  opcode)

◆ VenusPrint() [1/3]

void VenusPrint ( FILE *  fp,
int  argc,
const char **  argv 
)

◆ VenusPrint() [2/3]

void VenusPrint ( int  argc,
const char **  argv 
)

◆ VenusPrint() [3/3]

void VenusPrint ( int  fd,
int  argc,
const char **  argv 
)

◆ VenusRetStr()

const char * VenusRetStr ( int  retcode)

◆ VFSPrint()

void VFSPrint ( int  afd)

◆ Vtime()

time_t Vtime ( )

◆ VVPrint()

void VVPrint ( FILE *  fp,
ViceVersionVector **  vvp 
)

Variable Documentation

◆ allow_reattach

int allow_reattach
extern

◆ ANYUSER_UID

const uid_t ANYUSER_UID = (uid_t)-1

◆ ASRfid

VenusFid ASRfid
extern

◆ ASRLauncherFile

const char* ASRLauncherFile
extern

◆ ASRpid

pid_t ASRpid
extern

◆ ASRPolicyFile

const char* ASRPolicyFile
extern

◆ ASRuid

uid_t ASRuid
extern

◆ BLOCKS_PER_FILE

const int BLOCKS_PER_FILE = 24

◆ CacheBlocks

uint64_t CacheBlocks
extern

◆ CacheDir

const char* CacheDir
extern

◆ CachePrefix

const char* CachePrefix
extern

◆ CleanShutDown

int CleanShutDown
extern

◆ consoleFile

const char* consoleFile
extern

◆ DaemonExpiry

struct timeval DaemonExpiry
extern

◆ detect_reintegration_retry

int detect_reintegration_retry
extern

◆ FILES_PER_HDBE

const int FILES_PER_HDBE = 2

◆ FREE_FACTOR

const int FREE_FACTOR = 16

◆ GETDATA

const int GETDATA = 1

◆ HOARD_UID

const uid_t HOARD_UID = (uid_t)-2

◆ kernDevice

const char* kernDevice
extern

◆ logFile

FILE* logFile
extern

◆ LogLevel

int LogLevel
extern

◆ Main

vproc* Main
extern

◆ MallocTrace

int MallocTrace
extern

◆ mariner_tcp_enable

int mariner_tcp_enable
extern

◆ MarinerSocketPath

const char* MarinerSocketPath
extern

◆ masquerade_port

int masquerade_port
extern

◆ MIN_CB

const int MIN_CB = 2048

◆ MIN_CF

const int MIN_CF = MIN_CB / BLOCKS_PER_FILE

◆ MIN_HDBE

const int MIN_HDBE = MIN_CF / FILES_PER_HDBE

◆ MIN_MLE

const int MIN_MLE = MIN_CF * MLES_PER_FILE

◆ MLES_PER_FILE

const int MLES_PER_FILE = 4

◆ NO_HOST

const uint32_t NO_HOST = (uint32_t)-1

◆ nofork

int nofork
extern

◆ NullFid

const VenusFid NullFid
extern

◆ NullVV

const ViceVersionVector NullVV
extern

◆ option_isr

int option_isr
extern

◆ OWNERBITS

const int OWNERBITS = 0700

◆ OWNEREXEC

const int OWNEREXEC = 0100

◆ OWNERREAD

const int OWNERREAD = 0400

◆ OWNERWRITE

const int OWNERWRITE = 0200

◆ parent_fd

int parent_fd
extern

◆ PiggyValidations

int PiggyValidations
extern

◆ plan9server_enabled

int plan9server_enabled
extern

◆ PrimaryUser

uid_t PrimaryUser
extern

◆ realmtab

const char* realmtab
extern

◆ redzone_limit

int redzone_limit
extern

◆ rootfid

VenusFid rootfid
extern

◆ rootnodeid

long rootnodeid
extern

◆ RPC2_DebugLevel

long int RPC2_DebugLevel
extern

◆ RPC2_Trace

long int RPC2_Trace
extern

◆ RPCOpStats

RPCOpStatistics RPCOpStats
extern

◆ SFTP_DebugLevel

long int SFTP_DebugLevel
extern

◆ SpoolDir

const char* SpoolDir
extern

◆ T1Interval

int T1Interval
extern

◆ TIMERINTERVAL

const int TIMERINTERVAL = 5

◆ UNSET_UID

const uid_t UNSET_UID = (uid_t)-666

◆ V_BLKSIZE

const int V_BLKSIZE = 8192

◆ V_GID

const gid_t V_GID = 65534

◆ V_MAXACLLEN

const uint32_t V_MAXACLLEN = 1000

◆ V_MODE

const unsigned short V_MODE = 0600

◆ V_UID

const uid_t V_UID = (uid_t)0

◆ VenusControlFile

const char* VenusControlFile
extern

◆ VenusLogFile

const char* VenusLogFile
extern

◆ VenusPidFile

const char* VenusPidFile
extern

◆ venusRoot

const char* venusRoot
extern

◆ VFSStats

VFSStatistics VFSStats
extern

◆ yellowzone_limit

int yellowzone_limit