40#ifndef VOLUME_INCLUDED
41#define VOLUME_INCLUDED 1
49#define VolumeWriteable(vp) \
50 (V_type(vp) == readwriteVolume || V_type(vp) == nonReplicatedVolume)
74#define VOLUMEHEADERMAGIC 0x88a1bb3c
75#define VOLUMEINFOMAGIC 0x78a1b2c5
78#define MOUNTMAGIC 0x9a8b7c6d
79#define ACLMAGIC 0x88877712
81#define VOLUMEHEADERVERSION 1
82#define VOLUMEINFOVERSION 1
83#define SMALLINDEXVERSION 1
84#define LARGEINDEXVERSION 1
88#define MAXVOLS_PER_PARTITION 1000
148#define DESTROY_ME 0xD3
154#define DONT_SALVAGE 0xE5
267#define VNREINTEGRATORS 8
289#define V_partition(vp) ((vp)->partition)
290#define V_device(vp) (V_partition(vp)->device)
291#define V_inode(vp) ((vp)->inode)
293#define V_vnodeIndex(vp) ((vp)->vnIndex)
294#define V_nextVnodeUnique(vp) ((vp)->nextVnodeUnique)
295#define V_volumeindex(vp) ((vp)->vol_index)
296#define V_lock(vp) ((vp)->lock)
297#define V_writer(vp) ((vp)->writer)
298#define V_VolLock(vp) (((vp)->VolLock))
302#define V_stamp(vp) ((vp)->header->diskstuff.stamp)
303#define V_partname(vp) ((vp)->header->diskstuff.partition)
304#define V_id(vp) ((vp)->header->diskstuff.id)
305#define V_name(vp) ((vp)->header->diskstuff.name)
306#define V_inUse(vp) ((vp)->header->diskstuff.inUse)
307#define V_inService(vp) ((vp)->header->diskstuff.inService)
308#define V_blessed(vp) ((vp)->header->diskstuff.blessed)
309#define V_needsSalvaged(vp) ((vp)->header->diskstuff.needsSalvaged)
310#define V_uniquifier(vp) ((vp)->header->diskstuff.uniquifier)
311#define V_type(vp) ((vp)->header->diskstuff.type)
312#define V_parentId(vp) ((vp)->header->diskstuff.parentId)
313#define V_groupId(vp) ((vp)->header->diskstuff.groupId)
314#define V_cloneId(vp) ((vp)->header->diskstuff.cloneId)
315#define V_backupId(vp) ((vp)->header->diskstuff.backupId)
316#define V_restoredFromId(vp) ((vp)->header->diskstuff.restoredFromId)
317#define V_needsCallback(vp) ((vp)->header->diskstuff.needsCallback)
318#define V_destroyMe(vp) ((vp)->header->diskstuff.destroyMe)
319#define V_versionvector(vp) ((vp)->header->diskstuff.versionvector)
320#define V_dontSalvage(vp) ((vp)->header->diskstuff.dontSalvage)
321#define V_maxquota(vp) ((vp)->header->diskstuff.maxquota)
322#define V_minquota(vp) ((vp)->header->diskstuff.minquota)
323#define V_maxfiles(vp) ((vp)->header->diskstuff.maxfiles)
324#define V_accountNumber(vp) ((vp)->header->diskstuff.accountNumber)
325#define V_owner(vp) ((vp)->header->diskstuff.owner)
326#define V_filecount(vp) ((vp)->header->diskstuff.filecount)
327#define V_linkcount(vp) ((vp)->header->diskstuff.linkcount)
328#define V_diskused(vp) ((vp)->header->diskstuff.diskused)
329#define V_dayUse(vp) ((vp)->header->diskstuff.dayUse)
330#define V_weekUse(vp) ((vp)->header->diskstuff.weekUse)
331#define V_dayUseDate(vp) ((vp)->header->diskstuff.dayUseDate)
332#define V_creationDate(vp) ((vp)->header->diskstuff.creationDate)
333#define V_accessDate(vp) ((vp)->header->diskstuff.accessDate)
334#define V_updateDate(vp) ((vp)->header->diskstuff.updateDate)
335#define V_expirationDate(vp) ((vp)->header->diskstuff.expirationDate)
336#define V_backupDate(vp) ((vp)->header->diskstuff.backupDate)
337#define V_copyDate(vp) ((vp)->header->diskstuff.copyDate)
338#define V_offlineMessage(vp) ((vp)->header->diskstuff.offlineMessage)
339#define V_motd(vp) ((vp)->header->diskstuff.motd)
340#define V_disk(vp) ((vp)->header->diskstuff)
341#define V_RVMResOn(vp) ((vp)->header->diskstuff.ResOn & RVMRES)
342#define V_VolLog(vp) ((vp)->header->diskstuff.log)
373 int stride,
int ix,
int count);
396#define nBlocks(bytes) ((bytes) == 0 ? 1 : ((bytes) + 1023) / 1024)
Definition: recov_vollog.h:47
int int32_t
Definition: coda.h:104
unsigned char uint8_t
Definition: coda.h:101
#define REQUIRES_TRANSACTION
Definition: coda_tsa.h:107
#define EXCLUDES_TRANSACTION
Definition: coda_tsa.h:108
#define nVNODECLASSES
Definition: cvnode.h:70
partition
Definition: volusage.py:25
Definition: partition.h:40
unsigned IPAddress
Definition: volume.h:230
struct Lock VolumeLock
Definition: volume.h:229
int weekUse[7]
Definition: volume.h:177
Date_t backupDate
Definition: volume.h:191
VolumeId id
Definition: volume.h:110
byte inUse
Definition: volume.h:115
char partition[V_MAXPARTNAMELEN]
Definition: volume.h:113
int reserved3[11]
Definition: volume.h:182
byte inService
Definition: volume.h:117
char offlineMessage[VMSGSIZE]
Definition: volume.h:201
byte reserveb3
Definition: volume.h:157
Date_t copyDate
Definition: volume.h:195
VolumeId cloneId
Definition: volume.h:133
Date_t dayUseDate
Definition: volume.h:180
VolumeId parentId
Definition: volume.h:131
int maxfiles
Definition: volume.h:166
int reserved2[8]
Definition: volume.h:170
bit32 reserved1[5]
Definition: volume.h:161
bit32 uniquifier
Definition: volume.h:129
bit32 accountNumber
Definition: volume.h:167
bit32 owner
Definition: volume.h:168
char motd[VMSGSIZE]
Definition: volume.h:202
byte needsSalvaged
Definition: volume.h:124
byte dontSalvage
Definition: volume.h:155
char name[V_MAXVOLNAMELEN]
Definition: volume.h:114
byte blessed
Definition: volume.h:121
ViceVersionVector versionvector
Definition: volume.h:159
Date_t updateDate
Definition: volume.h:189
byte needsCallback
Definition: volume.h:143
Date_t accessDate
Definition: volume.h:188
VolumeId restoredFromId
Definition: volume.h:138
Date_t creationDate
Definition: volume.h:185
struct versionStamp stamp
Definition: volume.h:109
bit16 linkcount
Definition: volume.h:174
char pad[4]
Definition: volume.h:204
int maxquota
Definition: volume.h:164
int ResOn
Definition: volume.h:160
Date_t expirationDate
Definition: volume.h:190
int diskused
Definition: volume.h:175
int minquota
Definition: volume.h:165
VolumeId backupId
Definition: volume.h:137
VolumeId groupId
Definition: volume.h:132
recov_vol_log * log
Definition: volume.h:196
int filecount
Definition: volume.h:173
bit32 reserved4[7]
Definition: volume.h:197
int type
Definition: volume.h:130
byte destroyMe
Definition: volume.h:149
int dayUse
Definition: volume.h:176
ViceStoreId * reintegrators
Definition: volume.h:270
int32_t specialStatus
Definition: volume.h:258
struct vnodeIndex vnIndex[nVNODECLASSES]
Definition: volume.h:240
bit16 cacheCheck
Definition: volume.h:253
byte shuttingDown
Definition: volume.h:251
short nUsers
Definition: volume.h:257
PROCESS writer
Definition: volume.h:265
struct Lock lock
Definition: volume.h:264
struct Volume * hashNext
Definition: volume.h:235
int32_t updateTime
Definition: volume.h:261
Unique_t nextVnodeUnique
Definition: volume.h:241
int nReintegrators
Definition: volume.h:268
int vol_index
Definition: volume.h:239
struct DiskPartition * partition
Definition: volume.h:238
VolumeId hashid
Definition: volume.h:236
byte goingOffline
Definition: volume.h:252
struct volHeader * header
Definition: volume.h:237
bit16 vnodeHashOffset
Definition: volume.h:248
Definition: lwp.private_pt.h:33
bit32 magic
Definition: volume.h:68
bit32 version
Definition: volume.h:69
unsigned short bitmapSize
Definition: volume.h:220
unsigned short bitmapOffset
Definition: volume.h:221
byte * bitmap
Definition: volume.h:219
LockLevel
Definition: venus.private.h:170
uint16_t bit16
Definition: voltypes.h:57
uint32_t bit32
Definition: voltypes.h:56
bit32 Error
Definition: voltypes.h:62
int AllowResolution
Definition: dummy.cc:35
void VOffline(Volume *vp, const char *message) REQUIRES_TRANSACTION
Definition: volume.cc:1213
void FreeVolume(Volume *vp)
Definition: volume.cc:1483
void VForceOffline(Volume *vp) REQUIRES_TRANSACTION
Definition: volume.cc:1188
Volume * VAttachVolume(Error *ec, VolumeId volumeId, int mode) REQUIRES_TRANSACTION
Definition: volume.cc:1033
void VListVolumes(char **buf, unsigned int *buflen) EXCLUDES_TRANSACTION
Definition: volume.cc:638
void PutVolObj(Volume **volptr, int LockLevel, int Dequeue)
Definition: volume.cc:1991
const char * VSalvageMessage
Definition: volume.cc:106
int VConnectFS()
Definition: volume.cc:346
void VGetVolumeInfo(Error *ec, char *key, VolumeInfo *info)
Definition: volume.cc:500
int HInit
Definition: volume.cc:105
void PrintVolumeDiskData(FILE *, VolumeDiskData *)
Definition: vol-debug.cc:41
void VDetachVolume(Error *ec, Volume *vp) REQUIRES_TRANSACTION
Definition: volume.cc:1257
int VolDebugLevel
Definition: util.c:71
void SetVolDebugLevel(int)
Definition: volume.cc:1897
char * ThisHost
Definition: volume.cc:101
int VInitVolUtil(ProgramType pt)
Definition: volume.cc:165
int GetVolObj(VolumeId Vid, Volume **volptr, int LockLevel, int Enque, unsigned LockerAddress) EXCLUDES_TRANSACTION
Definition: volume.cc:1933
void VFreeBitMapEntry(Error *ec, struct vnodeIndex *index, int bitNumber)
Definition: volume.cc:1435
int VolumeNumber(char *name)
Definition: volume.cc:1568
Volume * VAttachVolumeById(Error *ec, char *partition, VolumeId volid, int mode) REQUIRES_TRANSACTION
Definition: volume.cc:817
struct VolumeDiskData VolumeDiskData
int VAllocBitmapEntry(Error *ec, Volume *vp, struct vnodeIndex *index, int stride, int ix, int count)
Definition: volume.cc:1292
char * VolumeExternalName(VolumeId volumeId)
Definition: volume.cc:1576
Error VCheckDiskUsage(Volume *vp, int blocks)
Definition: volume.cc:1908
void InitLRU(int howmany)
Definition: volume.cc:1731
void VUpdateVolume(Error *ec, Volume *vp) REQUIRES_TRANSACTION
Definition: volume.cc:1452
void PrintVolumesInHashTable()
Definition: volume.cc:1468
void VUCloneVolume(Error *, Volume *, Volume *) EXCLUDES_TRANSACTION
Definition: vol-clone.cc:298
void VDisconnectFS()
Definition: volume.cc:360
void VPutVolume(Volume *vp)
Definition: volume.cc:1148
void DeleteVolumeFromHashTable(Volume *vp)
Definition: volume.cc:1851
void VInitVolumePackage(int nLargeVnodes, int nSmallVnodes, int DoSalvage) EXCLUDES_TRANSACTION
Definition: volume.cc:224
uint8_t ThisServerId
Definition: volume.cc:102
void VPurgeVolume(Volume *vp)
Definition: purge.cc:85
ProgramType
Definition: volume.h:60
@ volumeUtility
Definition: volume.h:62
@ salvager
Definition: volume.h:63
@ fsUtility
Definition: volume.h:64
@ fileServer
Definition: volume.h:61
int VInit
Definition: volume.cc:104
#define VMSGSIZE
Definition: volume.h:200
const char * VGetVolumeLocation(VolumeId vid)
Definition: volume.cc:557
void VSetDiskUsage() EXCLUDES_TRANSACTION
Definition: volume.cc:1624
Error VAdjustDiskUsage(Volume *vp, int blocks)
Definition: volume.cc:1923
Volume * VGetVolume(Error *ec, VolumeId volumeId)
Definition: volume.cc:1062
void VShutdown() EXCLUDES_TRANSACTION
Definition: volume.cc:718
bit32 HostAddress[]
Definition: volume.cc:103
void VInitServerList(const char *host)
Definition: volume.cc:390
bit32 FileOffset
Definition: volume.h:58