54#define TRY_READ_LOCK 16
55#define TRY_WRITE_LOCK 32
68#define VNODECLASSWIDTH 1
69#define VNODECLASSMASK ((1 << VNODECLASSWIDTH) - 1)
70#define nVNODECLASSES (VNODECLASSMASK + 1)
90#define vnodeTypeToClass(type) ((type) == vDirectory ? vLarge : vSmall)
91#define vnodeIdToClass(vnodeId) ((vnodeId - 1) & VNODECLASSMASK)
92#define vnodeIdToBitNumber(v) (((v) - 1) >> VNODECLASSWIDTH)
93#define bitNumberToVnodeNumber(b, vclass) \
94 (((b) << VNODECLASSWIDTH) + (vclass) + 1)
95#define vnodeIsDirectory(vnodeNumber) (vnodeIdToClass(vnodeNumber) == vLarge)
113#define NEWVNODEINODE ((PDirInode) - 1)
129#define SMALLVNODEMAGIC 0xda8c041F
130#define LARGEVNODEMAGIC 0xad8765fe
146#if UINT_MAX == ULONG_MAX
147#define SIZEOF_SMALLDISKVNODE 112
149#define SIZEOF_SMALLDISKVNODE 128
151#define CHECKSIZE_SMALLVNODE (sizeof(VnodeDiskObject) == SIZEOF_SMALLDISKVNODE)
153#define SIZEOF_LARGEDISKVNODE 512
184#define Vnode_vv(vptr) ((vptr)->disk.versionvector)
186#define SIZEOF_LARGEVNODE \
187 (sizeof(struct Vnode) - sizeof(VnodeDiskObject) + SIZEOF_LARGEDISKVNODE)
188#define SIZEOF_SMALLVNODE (sizeof(struct Vnode))
190#define VVnodeDiskACL(v) \
191 ((AL_AccessList *)(((byte *)(v)) + SIZEOF_SMALLDISKVNODE))
192#define VVnodeACL(vnp) (VVnodeDiskACL(&(vnp)->disk))
194#define VAclSize(vnp) (SIZEOF_LARGEVNODE - SIZEOF_SMALLVNODE)
195#define VAclDiskSize(v) (SIZEOF_LARGEDISKVNODE - SIZEOF_SMALLDISKVNODE)
196#define VnLog(vnp) ((vnp)->disk.log)
197#define VnSHA(vnp) ((vnp)->SHA)
Definition: rec_dlist.h:49
#define SHA_DIGEST_LENGTH
Definition: coda_hash.h:71
#define REQUIRES_TRANSACTION
Definition: coda_tsa.h:107
#define EXCLUDES_TRANSACTION
Definition: coda_tsa.h:108
int ObjectExists(int, int, VnodeId, Unique_t, ViceFid *=NULL)
Definition: recovb.cc:132
int VN_DCommit(Vnode *vnp) REQUIRES_TRANSACTION
Definition: dirvnode.cc:69
struct VnodeClassInfo VnodeClassInfo_Array[nVNODECLASSES]
Definition: cvnode.cc:74
void VN_VN2Fid(struct Vnode *, struct Volume *, struct ViceFid *)
Definition: cvnode.cc:859
void VN_CopyOnWrite(struct Vnode *vptr)
Definition: dirvnode.cc:201
int VnodeClass
Definition: cvnode.h:67
void PrintVnodeDiskObject(FILE *, VnodeDiskObject *, VnodeId)
Definition: vol-debug.cc:74
PDirHandle SetDirHandle(struct Vnode *)
void VFlushVnode(Error *, Vnode *) REQUIRES_TRANSACTION
Definition: cvnode.cc:750
int VnodeType
Definition: cvnode.h:51
void VPutVnode(Error *ec, Vnode *vnp) REQUIRES_TRANSACTION
Definition: cvnode.cc:656
Vnode * VAllocVnode(Error *ec, Volume *vp, VnodeType type, int stride=1, int ix=0) EXCLUDES_TRANSACTION
Definition: cvnode.cc:337
void VN_PutDirHandle(struct Vnode *vn)
Definition: dirvnode.cc:163
PDirHandle VN_SetDirHandle(struct Vnode *vn)
Definition: dirvnode.cc:126
struct VnodeDiskObjectStruct VnodeDiskObject
int VN_DAbort(Vnode *vnp)
Definition: dirvnode.cc:102
void VInitVnodes(VnodeClass, int)
Definition: cvnode.cc:148
void VN_DropDirHandle(struct Vnode *vn)
Definition: dirvnode.cc:179
#define nVNODECLASSES
Definition: cvnode.h:70
Vnode * VGetVnode(Error *, Volume *, VnodeId, Unique_t, int, int, int=0) REQUIRES_TRANSACTION
Definition: cvnode.cc:471
int VolumeHashOffset()
Definition: cvnode.cc:122
int VAllocFid(Volume *vp, VnodeType type, ViceFidRange *Range, int stride=1, int ix=0) EXCLUDES_TRANSACTION
Definition: cvnode.cc:230
void VN_VN2PFid(struct Vnode *, struct Volume *, struct ViceFid *)
Definition: cvnode.cc:866
void(* type)()
Definition: rp2main.c:424
Definition: codadir.h:173
Definition: vicelock.h:45
int cacheSize
Definition: cvnode.h:76
int writes
Definition: cvnode.h:85
int allocs
Definition: cvnode.h:80
struct Vnode * lruHead
Definition: cvnode.h:73
bit32 magic
Definition: cvnode.h:77
int residentSize
Definition: cvnode.h:75
int gets
Definition: cvnode.h:83
int diskSize
Definition: cvnode.h:74
int reads
Definition: cvnode.h:83
Date_t serverModifyTime
Definition: cvnode.h:136
Unique_t uparent
Definition: cvnode.h:126
PDirInode dirNode
Definition: cvnode.h:117
VnodeId vparent
Definition: cvnode.h:125
bit32 vnodeMagic
Definition: cvnode.h:127
unsigned cloned
Definition: cvnode.h:101
UserId author
Definition: cvnode.h:123
UserId owner
Definition: cvnode.h:124
unsigned modeBits
Definition: cvnode.h:103
int vol_index
Definition: cvnode.h:121
ViceVersionVector versionvector
Definition: cvnode.h:120
bit32 length
Definition: cvnode.h:106
Date_t unixModifyTime
Definition: cvnode.h:122
rec_dlist * log
Definition: cvnode.h:139
struct rec_smolink nextvn
Definition: cvnode.h:138
bit16 linkCount
Definition: cvnode.h:104
Inode inodeNumber
Definition: cvnode.h:116
FileVersion dataVersion
Definition: cvnode.h:110
Unique_t uniquifier
Definition: cvnode.h:107
VnodeType type
Definition: cvnode.h:99
ViceLock lock
Definition: cvnode.h:135
union VnodeDiskObjectStruct::@30 node
int dh_refc
Definition: cvnode.h:167
struct Vnode * lruPrev
Definition: cvnode.h:158
struct Vnode * lruNext
Definition: cvnode.h:157
struct Lock lock
Definition: cvnode.h:171
PROCESS writer
Definition: cvnode.h:172
VnodeId vnodeNumber
Definition: cvnode.h:164
byte nUsers
Definition: cvnode.h:168
unsigned char SHA[SHA_DIGEST_LENGTH]
Definition: cvnode.h:177
bit16 cacheCheck
Definition: cvnode.h:169
PDCEntry dh
Definition: cvnode.h:166
VnodeDiskObject disk
Definition: cvnode.h:179
unsigned short changed
Definition: cvnode.h:161
struct Volume * volumePtr
Definition: cvnode.h:165
unsigned short delete_me
Definition: cvnode.h:162
bit16 hashIndex
Definition: cvnode.h:160
struct Vnode * hashNext
Definition: cvnode.h:156
Definition: lwp.private_pt.h:33
Definition: rec_smolist.h:98
uint16_t bit16
Definition: voltypes.h:57
uint32_t bit32
Definition: voltypes.h:56
#define NULL
Definition: voltypes.h:44
bit32 Inode
Definition: voltypes.h:61
bit32 Error
Definition: voltypes.h:62