Coda Distributed File System
Macros | Functions | Variables
volume.cc File Reference
#include <sys/types.h>
#include <sys/time.h>
#include <stdio.h>
#include <ctype.h>
#include <sys/param.h>
#include <errno.h>
#include <sys/stat.h>
#include <sys/file.h>
#include <netinet/in.h>
#include <sys/wait.h>
#include "coda_string.h"
#include <setjmp.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <lwp/lwp.h>
#include <lwp/lock.h>
#include <util.h>
#include <partition.h>
#include <rvmlib.h>
#include <vice.h>
#include "coda_flock.h"
#include <srv.h>
#include "cvnode.h"
#include "volume.h"
#include "lockqueue.h"
#include <recov_vollog.h>
#include "vldb.h"
#include "vutil.h"
#include "fssync.h"
#include "index.h"
#include "recov.h"
#include "camprivate.h"
#include "coda_globals.h"
#include "volhash.h"
#include "volutil.h"
Include dependency graph for volume.cc:

Macros

#define VOLUME_BITMAP_GROWSIZE   16 /* bytes, => 128vnodes */
 
#define VOLUME_HASH_TABLE_SIZE   128 /* Must be a power of 2!! */
 
#define VOLUME_HASH(volumeId)   (volumeId & (VOLUME_HASH_TABLE_SIZE - 1))
 
#define OneDay   (24 * 60 * 60) /* 24 hours */
 
#define Midnight(date)    ((date - TimeZoneCorrection) / OneDay * OneDay + TimeZoneCorrection)
 
#define SALVAGE_INTERVAL   (10 * 60)
 
#define UPDATE_LIST_SIZE   100 /* size increment */
 

Functions

void InitLogStorage ()
 
void print_VnodeDiskObject (VnodeDiskObject *)
 
int HashLookup (VolumeId)
 
void dump_storage (int level, const char *s)
 
void VBumpVolumeUsage (Volume *vp) EXCLUDES_TRANSACTION
 
int VCheckVLDB ()
 
int InSkipVolumeList (VolumeId, VolumeId *, int)
 
void InitVolTable (int)
 
void VAddToVolumeUpdateList (Error *ec, Volume *vp) REQUIRES_TRANSACTION
 
void FreeVolumeHeader (Volume *vp)
 
void DeleteVolumeFromHashTable (Volume *vp)
 
int VInitVolUtil (ProgramType pt)
 
void VInitVolumePackage (int nLargeVnodes, int nSmallVnodes, int DoSalvage)
 
int VConnectFS ()
 
void VDisconnectFS ()
 
void VInitThisHost (const char *host)
 
void VInitServerList (const char *host)
 
void VGetVolumeInfo (Error *ec, char *key, VolumeInfo *info)
 
const char * VGetVolumeLocation (VolumeId vid)
 
void VListVolumes (char **buf, unsigned int *offset)
 
void dumpvm ()
 
void VShutdown () TRANSACTION_OPTIONAL
 
VolumeVAttachVolumeById (Error *ec, char *partition, VolumeId volid, int mode)
 
VolumeVAttachVolume (Error *ec, VolumeId volumeId, int mode)
 
VolumeVGetVolume (Error *ec, VolumeId volumeId)
 
void VPutVolume (Volume *vp)
 
void VForceOffline (Volume *vp)
 
void VOffline (Volume *vp, const char *message)
 
void VDetachVolume (Error *ec, Volume *vp)
 
int VAllocBitmapEntry (Error *ec, Volume *vp, struct vnodeIndex *index, int stride, int ix, int count)
 
int VAllocBitmapEntry (Error *ec, Volume *vp, struct vnodeIndex *index, VnodeId vnode)
 
void VFreeBitMapEntry (Error *ec, struct vnodeIndex *index, int bitNumber)
 
void VUpdateVolume (Error *ec, Volume *vp)
 
void PrintVolumesInHashTable ()
 
void FreeVolume (Volume *vp)
 
int VolumeNumber (char *name)
 
char * VolumeExternalName (VolumeId volumeId)
 
void VSetDiskUsage ()
 
void InitLRU (int howMany)
 
void VPrintCacheStats (FILE *fp)
 
void SetVolDebugLevel (int level)
 
Error VCheckDiskUsage (Volume *vp, int blocks)
 
Error VAdjustDiskUsage (Volume *vp, int blocks)
 
int GetVolObj (VolumeId Vid, Volume **volptr, int LockLevel, int Enque, unsigned LockerAddress)
 
void PutVolObj (Volume **volptr, int LockLevel, int Dequeue)
 

Variables

char * ThisHost
 
uint8_t ThisServerId
 
bit32 HostAddress [N_SERVERIDS]
 
int VInit
 
int HInit
 
const char * VSalvageMessage
 
const char * Server_FQDN [N_SERVERIDS]
 
int nskipvols
 
VolumeId * skipvolnums
 
int DumpVM
 
rvm_offset_t _Rvm_DataLength
 
long rds_rvmsize
 
char * rds_startaddr
 

Macro Definition Documentation

◆ Midnight

#define Midnight (   date)     ((date - TimeZoneCorrection) / OneDay * OneDay + TimeZoneCorrection)

◆ OneDay

#define OneDay   (24 * 60 * 60) /* 24 hours */

◆ SALVAGE_INTERVAL

#define SALVAGE_INTERVAL   (10 * 60)

◆ UPDATE_LIST_SIZE

#define UPDATE_LIST_SIZE   100 /* size increment */

◆ VOLUME_BITMAP_GROWSIZE

#define VOLUME_BITMAP_GROWSIZE   16 /* bytes, => 128vnodes */

◆ VOLUME_HASH

#define VOLUME_HASH (   volumeId)    (volumeId & (VOLUME_HASH_TABLE_SIZE - 1))

◆ VOLUME_HASH_TABLE_SIZE

#define VOLUME_HASH_TABLE_SIZE   128 /* Must be a power of 2!! */

Function Documentation

◆ DeleteVolumeFromHashTable()

void DeleteVolumeFromHashTable ( Volume vp)

◆ dump_storage()

void dump_storage ( int  level,
const char *  s 
)

◆ dumpvm()

void dumpvm ( )

◆ FreeVolume()

void FreeVolume ( Volume vp)

◆ FreeVolumeHeader()

void FreeVolumeHeader ( Volume vp)

◆ GetVolObj()

int GetVolObj ( VolumeId  Vid,
Volume **  volptr,
int  LockLevel,
int  Enque = 0,
unsigned  LockerAddress = 0 
)

◆ HashLookup()

int HashLookup ( VolumeId  volid)

◆ InitLogStorage()

void InitLogStorage ( )

◆ InitLRU()

void InitLRU ( int  howMany)

◆ InitVolTable()

void InitVolTable ( int  size)

◆ InSkipVolumeList()

int InSkipVolumeList ( VolumeId  v,
VolumeId *  vl,
int  nvols 
)

◆ print_VnodeDiskObject()

void print_VnodeDiskObject ( VnodeDiskObject vnode)

◆ PrintVolumesInHashTable()

void PrintVolumesInHashTable ( )

◆ PutVolObj()

void PutVolObj ( Volume **  volptr,
int  LockLevel,
int  Dequeue = 0 
)

◆ SetVolDebugLevel()

void SetVolDebugLevel ( int  level)

◆ VAddToVolumeUpdateList()

void VAddToVolumeUpdateList ( Error ec,
Volume vp 
)

◆ VAdjustDiskUsage()

Error VAdjustDiskUsage ( Volume vp,
int  blocks 
)

◆ VAllocBitmapEntry() [1/2]

int VAllocBitmapEntry ( Error ec,
Volume vp,
struct vnodeIndex index,
int  stride,
int  ix,
int  count 
)

◆ VAllocBitmapEntry() [2/2]

int VAllocBitmapEntry ( Error ec,
Volume vp,
struct vnodeIndex index,
VnodeId  vnode 
)

◆ VAttachVolume()

Volume * VAttachVolume ( Error ec,
VolumeId  volumeId,
int  mode 
)

◆ VAttachVolumeById()

Volume * VAttachVolumeById ( Error ec,
char *  partition,
VolumeId  volid,
int  mode 
)

◆ VBumpVolumeUsage()

void VBumpVolumeUsage ( Volume vp)

◆ VCheckDiskUsage()

Error VCheckDiskUsage ( Volume vp,
int  blocks 
)

◆ VCheckVLDB()

int VCheckVLDB ( )

◆ VConnectFS()

int VConnectFS ( )

◆ VDetachVolume()

void VDetachVolume ( Error ec,
Volume vp 
)

◆ VDisconnectFS()

void VDisconnectFS ( )

◆ VForceOffline()

void VForceOffline ( Volume vp)

◆ VFreeBitMapEntry()

void VFreeBitMapEntry ( Error ec,
struct vnodeIndex index,
int  bitNumber 
)

◆ VGetVolume()

Volume * VGetVolume ( Error ec,
VolumeId  volumeId 
)

◆ VGetVolumeInfo()

void VGetVolumeInfo ( Error ec,
char *  key,
VolumeInfo *  info 
)

◆ VGetVolumeLocation()

const char * VGetVolumeLocation ( VolumeId  vid)

◆ VInitServerList()

void VInitServerList ( const char *  host)

◆ VInitThisHost()

void VInitThisHost ( const char *  host)

◆ VInitVolumePackage()

void VInitVolumePackage ( int  nLargeVnodes,
int  nSmallVnodes,
int  DoSalvage 
)

◆ VInitVolUtil()

int VInitVolUtil ( ProgramType  pt)

◆ VListVolumes()

void VListVolumes ( char **  buf,
unsigned int *  offset 
)

◆ VOffline()

void VOffline ( Volume vp,
const char *  message 
)

◆ VolumeExternalName()

char * VolumeExternalName ( VolumeId  volumeId)

◆ VolumeNumber()

int VolumeNumber ( char *  name)

◆ VPrintCacheStats()

void VPrintCacheStats ( FILE *  fp)

◆ VPutVolume()

void VPutVolume ( Volume vp)

◆ VSetDiskUsage()

void VSetDiskUsage ( )

◆ VShutdown()

void VShutdown ( )

◆ VUpdateVolume()

void VUpdateVolume ( Error ec,
Volume vp 
)

Variable Documentation

◆ _Rvm_DataLength

rvm_offset_t _Rvm_DataLength
extern

◆ DumpVM

int DumpVM
extern

◆ HInit

int HInit

◆ HostAddress

bit32 HostAddress[N_SERVERIDS]

◆ nskipvols

int nskipvols
extern

◆ rds_rvmsize

long rds_rvmsize
extern

◆ rds_startaddr

char* rds_startaddr
extern

◆ Server_FQDN

const char* Server_FQDN[N_SERVERIDS]

◆ skipvolnums

VolumeId* skipvolnums
extern

◆ ThisHost

char* ThisHost

◆ ThisServerId

uint8_t ThisServerId

◆ VInit

int VInit

◆ VSalvageMessage

const char* VSalvageMessage
Initial value:
=
"Files in this volume are currently unavailable; call operations"