Coda Distributed File System
Classes | Macros | Typedefs | Enumerations | Functions | Variables
volume.h File Reference
#include <recov_vollog.h>
#include <vice.h>
#include <dllist.h>
#include <partition.h>
#include "voldefs.h"
Include dependency graph for volume.h:

Go to the source code of this file.

Classes

struct  versionStamp
 
struct  VolumeHeader
 
struct  IndexFileHeader
 
struct  VolumeDiskData
 
struct  vnodeIndex
 
struct  VolLock
 
struct  Volume
 
struct  volHeader
 

Macros

#define VolumeWriteable(vp)    (V_type(vp) == readwriteVolume || V_type(vp) == nonReplicatedVolume)
 
#define FSTAG   84597 /* Unique tag for fileserver lwp rocks */
 
#define RVMRES   4
 
#define VOLUMEHEADERMAGIC   0x88a1bb3c
 
#define VOLUMEINFOMAGIC   0x78a1b2c5
 
#define MOUNTMAGIC   0x9a8b7c6d
 
#define ACLMAGIC   0x88877712
 
#define VOLUMEHEADERVERSION   1
 
#define VOLUMEINFOVERSION   1
 
#define SMALLINDEXVERSION   1
 
#define LARGEINDEXVERSION   1
 
#define MOUNTVERSION   1
 
#define ACLVERSION   1
 
#define MAXVOLS_PER_PARTITION   1000 /* Max number of volumes per partition */
 
#define DESTROY_ME   0xD3
 
#define DONT_SALVAGE   0xE5
 
#define VMSGSIZE   128
 
#define VNREINTEGRATORS   8 /* List size increment */
 
#define V_partition(vp)   ((vp)->partition)
 
#define V_device(vp)   (V_partition(vp)->device)
 
#define V_inode(vp)   ((vp)->inode)
 
#define V_vnodeIndex(vp)   ((vp)->vnIndex)
 
#define V_nextVnodeUnique(vp)   ((vp)->nextVnodeUnique)
 
#define V_volumeindex(vp)   ((vp)->vol_index)
 
#define V_lock(vp)   ((vp)->lock)
 
#define V_writer(vp)   ((vp)->writer)
 
#define V_VolLock(vp)   (((vp)->VolLock))
 
#define V_stamp(vp)   ((vp)->header->diskstuff.stamp)
 
#define V_partname(vp)   ((vp)->header->diskstuff.partition)
 
#define V_id(vp)   ((vp)->header->diskstuff.id)
 
#define V_name(vp)   ((vp)->header->diskstuff.name)
 
#define V_inUse(vp)   ((vp)->header->diskstuff.inUse)
 
#define V_inService(vp)   ((vp)->header->diskstuff.inService)
 
#define V_blessed(vp)   ((vp)->header->diskstuff.blessed)
 
#define V_needsSalvaged(vp)   ((vp)->header->diskstuff.needsSalvaged)
 
#define V_uniquifier(vp)   ((vp)->header->diskstuff.uniquifier)
 
#define V_type(vp)   ((vp)->header->diskstuff.type)
 
#define V_parentId(vp)   ((vp)->header->diskstuff.parentId)
 
#define V_groupId(vp)   ((vp)->header->diskstuff.groupId)
 
#define V_cloneId(vp)   ((vp)->header->diskstuff.cloneId)
 
#define V_backupId(vp)   ((vp)->header->diskstuff.backupId)
 
#define V_restoredFromId(vp)   ((vp)->header->diskstuff.restoredFromId)
 
#define V_needsCallback(vp)   ((vp)->header->diskstuff.needsCallback)
 
#define V_destroyMe(vp)   ((vp)->header->diskstuff.destroyMe)
 
#define V_versionvector(vp)   ((vp)->header->diskstuff.versionvector)
 
#define V_dontSalvage(vp)   ((vp)->header->diskstuff.dontSalvage)
 
#define V_maxquota(vp)   ((vp)->header->diskstuff.maxquota)
 
#define V_minquota(vp)   ((vp)->header->diskstuff.minquota)
 
#define V_maxfiles(vp)   ((vp)->header->diskstuff.maxfiles)
 
#define V_accountNumber(vp)   ((vp)->header->diskstuff.accountNumber)
 
#define V_owner(vp)   ((vp)->header->diskstuff.owner)
 
#define V_filecount(vp)   ((vp)->header->diskstuff.filecount)
 
#define V_linkcount(vp)   ((vp)->header->diskstuff.linkcount)
 
#define V_diskused(vp)   ((vp)->header->diskstuff.diskused)
 
#define V_dayUse(vp)   ((vp)->header->diskstuff.dayUse)
 
#define V_weekUse(vp)   ((vp)->header->diskstuff.weekUse)
 
#define V_dayUseDate(vp)   ((vp)->header->diskstuff.dayUseDate)
 
#define V_creationDate(vp)   ((vp)->header->diskstuff.creationDate)
 
#define V_accessDate(vp)   ((vp)->header->diskstuff.accessDate)
 
#define V_updateDate(vp)   ((vp)->header->diskstuff.updateDate)
 
#define V_expirationDate(vp)   ((vp)->header->diskstuff.expirationDate)
 
#define V_backupDate(vp)   ((vp)->header->diskstuff.backupDate)
 
#define V_copyDate(vp)   ((vp)->header->diskstuff.copyDate)
 
#define V_offlineMessage(vp)   ((vp)->header->diskstuff.offlineMessage)
 
#define V_motd(vp)   ((vp)->header->diskstuff.motd)
 
#define V_disk(vp)   ((vp)->header->diskstuff)
 
#define V_RVMResOn(vp)   ((vp)->header->diskstuff.ResOn & RVMRES)
 
#define V_VolLog(vp)   ((vp)->header->diskstuff.log)
 
#define nBlocks(bytes)   ((bytes) == 0 ? 1 : ((bytes) + 1023) / 1024)
 
#define V_READONLY   1
 
#define V_CLONE   2
 
#define V_UPDATE   3
 
#define V_DUMP   4
 
#define V_SECRETLY   5
 

Typedefs

typedef bit32 FileOffset
 
typedef struct VolumeDiskData VolumeDiskData
 
typedef struct Volume Volume
 

Enumerations

enum  ProgramType { fileServer , volumeUtility , salvager , fsUtility }
 

Functions

void PrintVolumeDiskData (FILE *, VolumeDiskData *)
 
void VInitVolumePackage (int nLargeVnodes, int nSmallVnodes, int DoSalvage) EXCLUDES_TRANSACTION
 
int VInitVolUtil (ProgramType pt)
 
void VInitServerList (const char *host)
 
int VConnectFS ()
 
void VDisconnectFS ()
 
void VUCloneVolume (Error *, Volume *, Volume *) EXCLUDES_TRANSACTION
 
void VListVolumes (char **buf, unsigned int *buflen) EXCLUDES_TRANSACTION
 
void VGetVolumeInfo (Error *ec, char *key, VolumeInfo *info)
 
const char * VGetVolumeLocation (VolumeId vid)
 
VolumeVGetVolume (Error *ec, VolumeId volumeId)
 
void VPutVolume (Volume *vp)
 
VolumeVAttachVolume (Error *ec, VolumeId volumeId, int mode) REQUIRES_TRANSACTION
 
void VDetachVolume (Error *ec, Volume *vp) REQUIRES_TRANSACTION
 
void VUpdateVolume (Error *ec, Volume *vp) REQUIRES_TRANSACTION
 
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)
 
int VolumeNumber (char *name)
 
char * VolumeExternalName (VolumeId volumeId)
 
VolumeVAttachVolumeById (Error *ec, char *partition, VolumeId volid, int mode) REQUIRES_TRANSACTION
 
void VOffline (Volume *vp, const char *message) REQUIRES_TRANSACTION
 
void VForceOffline (Volume *vp) REQUIRES_TRANSACTION
 
void VPurgeVolume (Volume *vp)
 
void VShutdown () EXCLUDES_TRANSACTION
 
void VSetDiskUsage () EXCLUDES_TRANSACTION
 
void SetVolDebugLevel (int)
 
void FreeVolume (Volume *vp)
 
void DeleteVolumeFromHashTable (Volume *vp)
 
void PrintVolumesInHashTable ()
 
void InitLRU (int howmany)
 
Error VAdjustDiskUsage (Volume *vp, int blocks)
 
Error VCheckDiskUsage (Volume *vp, int blocks)
 
void PutVolObj (Volume **volptr, int LockLevel, int Dequeue)
 
int GetVolObj (VolumeId Vid, Volume **volptr, int LockLevel, int Enque, unsigned LockerAddress) EXCLUDES_TRANSACTION
 

Variables

char * ThisHost
 
uint8_t ThisServerId
 
bit32 HostAddress []
 
int VInit
 
int HInit
 
const char * VSalvageMessage
 
int VolDebugLevel
 
int AllowResolution
 

Macro Definition Documentation

◆ ACLMAGIC

#define ACLMAGIC   0x88877712

◆ ACLVERSION

#define ACLVERSION   1

◆ DESTROY_ME

#define DESTROY_ME   0xD3

◆ DONT_SALVAGE

#define DONT_SALVAGE   0xE5

◆ FSTAG

#define FSTAG   84597 /* Unique tag for fileserver lwp rocks */

◆ LARGEINDEXVERSION

#define LARGEINDEXVERSION   1

◆ MAXVOLS_PER_PARTITION

#define MAXVOLS_PER_PARTITION   1000 /* Max number of volumes per partition */

◆ MOUNTMAGIC

#define MOUNTMAGIC   0x9a8b7c6d

◆ MOUNTVERSION

#define MOUNTVERSION   1

◆ nBlocks

#define nBlocks (   bytes)    ((bytes) == 0 ? 1 : ((bytes) + 1023) / 1024)

◆ RVMRES

#define RVMRES   4

◆ SMALLINDEXVERSION

#define SMALLINDEXVERSION   1

◆ V_accessDate

#define V_accessDate (   vp)    ((vp)->header->diskstuff.accessDate)

◆ V_accountNumber

#define V_accountNumber (   vp)    ((vp)->header->diskstuff.accountNumber)

◆ V_backupDate

#define V_backupDate (   vp)    ((vp)->header->diskstuff.backupDate)

◆ V_backupId

#define V_backupId (   vp)    ((vp)->header->diskstuff.backupId)

◆ V_blessed

#define V_blessed (   vp)    ((vp)->header->diskstuff.blessed)

◆ V_CLONE

#define V_CLONE   2

◆ V_cloneId

#define V_cloneId (   vp)    ((vp)->header->diskstuff.cloneId)

◆ V_copyDate

#define V_copyDate (   vp)    ((vp)->header->diskstuff.copyDate)

◆ V_creationDate

#define V_creationDate (   vp)    ((vp)->header->diskstuff.creationDate)

◆ V_dayUse

#define V_dayUse (   vp)    ((vp)->header->diskstuff.dayUse)

◆ V_dayUseDate

#define V_dayUseDate (   vp)    ((vp)->header->diskstuff.dayUseDate)

◆ V_destroyMe

#define V_destroyMe (   vp)    ((vp)->header->diskstuff.destroyMe)

◆ V_device

#define V_device (   vp)    (V_partition(vp)->device)

◆ V_disk

#define V_disk (   vp)    ((vp)->header->diskstuff)

◆ V_diskused

#define V_diskused (   vp)    ((vp)->header->diskstuff.diskused)

◆ V_dontSalvage

#define V_dontSalvage (   vp)    ((vp)->header->diskstuff.dontSalvage)

◆ V_DUMP

#define V_DUMP   4

◆ V_expirationDate

#define V_expirationDate (   vp)    ((vp)->header->diskstuff.expirationDate)

◆ V_filecount

#define V_filecount (   vp)    ((vp)->header->diskstuff.filecount)

◆ V_groupId

#define V_groupId (   vp)    ((vp)->header->diskstuff.groupId)

◆ V_id

#define V_id (   vp)    ((vp)->header->diskstuff.id)

◆ V_inode

#define V_inode (   vp)    ((vp)->inode)

◆ V_inService

#define V_inService (   vp)    ((vp)->header->diskstuff.inService)

◆ V_inUse

#define V_inUse (   vp)    ((vp)->header->diskstuff.inUse)

◆ V_linkcount

#define V_linkcount (   vp)    ((vp)->header->diskstuff.linkcount)

◆ V_lock

#define V_lock (   vp)    ((vp)->lock)

◆ V_maxfiles

#define V_maxfiles (   vp)    ((vp)->header->diskstuff.maxfiles)

◆ V_maxquota

#define V_maxquota (   vp)    ((vp)->header->diskstuff.maxquota)

◆ V_minquota

#define V_minquota (   vp)    ((vp)->header->diskstuff.minquota)

◆ V_motd

#define V_motd (   vp)    ((vp)->header->diskstuff.motd)

◆ V_name

#define V_name (   vp)    ((vp)->header->diskstuff.name)

◆ V_needsCallback

#define V_needsCallback (   vp)    ((vp)->header->diskstuff.needsCallback)

◆ V_needsSalvaged

#define V_needsSalvaged (   vp)    ((vp)->header->diskstuff.needsSalvaged)

◆ V_nextVnodeUnique

#define V_nextVnodeUnique (   vp)    ((vp)->nextVnodeUnique)

◆ V_offlineMessage

#define V_offlineMessage (   vp)    ((vp)->header->diskstuff.offlineMessage)

◆ V_owner

#define V_owner (   vp)    ((vp)->header->diskstuff.owner)

◆ V_parentId

#define V_parentId (   vp)    ((vp)->header->diskstuff.parentId)

◆ V_partition

#define V_partition (   vp)    ((vp)->partition)

◆ V_partname

#define V_partname (   vp)    ((vp)->header->diskstuff.partition)

◆ V_READONLY

#define V_READONLY   1

◆ V_restoredFromId

#define V_restoredFromId (   vp)    ((vp)->header->diskstuff.restoredFromId)

◆ V_RVMResOn

#define V_RVMResOn (   vp)    ((vp)->header->diskstuff.ResOn & RVMRES)

◆ V_SECRETLY

#define V_SECRETLY   5

◆ V_stamp

#define V_stamp (   vp)    ((vp)->header->diskstuff.stamp)

◆ V_type

#define V_type (   vp)    ((vp)->header->diskstuff.type)

◆ V_uniquifier

#define V_uniquifier (   vp)    ((vp)->header->diskstuff.uniquifier)

◆ V_UPDATE

#define V_UPDATE   3

◆ V_updateDate

#define V_updateDate (   vp)    ((vp)->header->diskstuff.updateDate)

◆ V_versionvector

#define V_versionvector (   vp)    ((vp)->header->diskstuff.versionvector)

◆ V_vnodeIndex

#define V_vnodeIndex (   vp)    ((vp)->vnIndex)

◆ V_VolLock

#define V_VolLock (   vp)    (((vp)->VolLock))

◆ V_VolLog

#define V_VolLog (   vp)    ((vp)->header->diskstuff.log)

◆ V_volumeindex

#define V_volumeindex (   vp)    ((vp)->vol_index)

◆ V_weekUse

#define V_weekUse (   vp)    ((vp)->header->diskstuff.weekUse)

◆ V_writer

#define V_writer (   vp)    ((vp)->writer)

◆ VMSGSIZE

#define VMSGSIZE   128

◆ VNREINTEGRATORS

#define VNREINTEGRATORS   8 /* List size increment */

◆ VOLUMEHEADERMAGIC

#define VOLUMEHEADERMAGIC   0x88a1bb3c

◆ VOLUMEHEADERVERSION

#define VOLUMEHEADERVERSION   1

◆ VOLUMEINFOMAGIC

#define VOLUMEINFOMAGIC   0x78a1b2c5

◆ VOLUMEINFOVERSION

#define VOLUMEINFOVERSION   1

◆ VolumeWriteable

#define VolumeWriteable (   vp)     (V_type(vp) == readwriteVolume || V_type(vp) == nonReplicatedVolume)

Typedef Documentation

◆ FileOffset

typedef bit32 FileOffset

◆ Volume

typedef struct Volume Volume

◆ VolumeDiskData

Enumeration Type Documentation

◆ ProgramType

Enumerator
fileServer 
volumeUtility 
salvager 
fsUtility 

Function Documentation

◆ DeleteVolumeFromHashTable()

void DeleteVolumeFromHashTable ( Volume vp)

◆ FreeVolume()

void FreeVolume ( Volume vp)

◆ GetVolObj()

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

◆ InitLRU()

void InitLRU ( int  howmany)

◆ PrintVolumeDiskData()

void PrintVolumeDiskData ( FILE *  outfile,
VolumeDiskData vdd 
)

◆ PrintVolumesInHashTable()

void PrintVolumesInHashTable ( )

◆ PutVolObj()

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

◆ SetVolDebugLevel()

void SetVolDebugLevel ( int  level)

◆ 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 
)

◆ VCheckDiskUsage()

Error VCheckDiskUsage ( Volume vp,
int  blocks 
)

◆ 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)

◆ VInitVolumePackage()

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

◆ VInitVolUtil()

int VInitVolUtil ( ProgramType  pt)

◆ VListVolumes()

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

◆ VOffline()

void VOffline ( Volume vp,
const char *  message 
)

◆ VolumeExternalName()

char * VolumeExternalName ( VolumeId  volumeId)

◆ VolumeNumber()

int VolumeNumber ( char *  name)

◆ VPurgeVolume()

void VPurgeVolume ( Volume vp)

◆ VPutVolume()

void VPutVolume ( Volume vp)

◆ VSetDiskUsage()

void VSetDiskUsage ( )

◆ VShutdown()

void VShutdown ( )

◆ VUCloneVolume()

void VUCloneVolume ( Error error,
Volume rwVp,
Volume cloneVp 
)

◆ VUpdateVolume()

void VUpdateVolume ( Error ec,
Volume vp 
)

Variable Documentation

◆ AllowResolution

int AllowResolution
extern

◆ HInit

int HInit
extern

◆ HostAddress

bit32 HostAddress[]
extern

◆ ThisHost

char* ThisHost
extern

◆ ThisServerId

uint8_t ThisServerId
extern

◆ VInit

int VInit
extern

◆ VolDebugLevel

int VolDebugLevel
extern

◆ VSalvageMessage

const char* VSalvageMessage
extern