Coda Distributed File System
Classes | Macros | Typedefs | Functions
codadir.h File Reference
#include <lwp/lock.h>
#include <sys/types.h>
#include <time.h>
#include <coda.h>
#include <vcrcommon.h>
#include <dllist.h>
#include <coda_tsa.h>
Include dependency graph for codadir.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  DirHandle
 
struct  DirNFid
 
struct  DirEntry
 
struct  DirInode
 

Macros

#define DIR_PAGESIZE   2048
 
#define DIR_MAXPAGES   128
 
#define DIR_DATA_IN_RVM   1
 
#define DIR_DATA_IN_VM   0
 
#define ISDIR(fid)   ((fid).Vnode & 1) /* Directory fids are odd */
 
#define FID_LT(a, b)
 
#define FID_LTE(a, b)
 
#define DIR_intrans()   DIR_check_trans(__FUNCTION__, __FILE__)
 

Typedefs

typedef struct DirEntryPDirEntry
 
typedef struct DirFid * PDirFid
 
typedef struct DirHeaderPDirHeader
 
typedef struct DirHandlePDirHandle
 
typedef struct DCEntryPDCEntry
 
typedef struct DirInodePDirInode
 

Functions

int DIR_Init (int data_loc)
 
void DH_LockW (PDirHandle dh)
 
void DH_LockR (PDirHandle dh)
 
void DH_UnLockW (PDirHandle dh)
 
void DH_UnLockR (PDirHandle dh)
 
void DH_Init (PDirHandle dh)
 
void DH_Alloc (PDirHandle dh, int size, int in_rvm)
 
PDirHeader DH_Data (PDirHandle dh)
 
void DH_Free (PDirHandle dh, int in_rvm)
 
void DH_FreeData (PDirHandle dh)
 
PDirHandle DH_New (int in_rvm, PDirHeader vmdata, PDirHeader rvmdata)
 
int DH_Length (PDirHandle dh)
 
int DH_Convert (PDirHandle dh, char *file, VolumeId vol, RealmId realm)
 
int DH_Create (PDirHandle dh, const char *entry, struct ViceFid *vfid)
 
int DH_IsEmpty (PDirHandle dh)
 
int DH_Lookup (PDirHandle dh, const char *entry, struct ViceFid *vfid, int flags)
 
char * DH_FindName (PDirHandle dh, struct DirFid *fid, char *name, int len)
 
int DH_LookupByFid (PDirHandle dh, char *entry, struct ViceFid *vfid)
 
int DH_Delete (PDirHandle dh, const char *entry)
 
int DH_DirOK (PDirHandle dh)
 
void DH_Print (PDirHandle dh, FILE *f)
 
void DH_PrintStats (FILE *fp)
 
int DH_MakeDir (PDirHandle dh, struct ViceFid *vme, struct ViceFid *vparent)
 
int DH_EnumerateDir (PDirHandle dh, int(*hookproc)(struct DirEntry *de, void *hook), void *hook)
 
int DH_Commit (PDirHandle dh)
 
void DH_Get (PDirHandle, PDirHeader)
 
void DH_Put (PDirHandle)
 
int FID_IsVolRoot (const struct ViceFid *fid)
 
void FID_MakeRoot (struct ViceFid *fid)
 
int FID_IsDisco (const struct ViceFid *x)
 
int FID_IsLocalDir (const struct ViceFid *fid)
 
int FID_IsLocalFile (const struct ViceFid *fid)
 
void FID_MakeDiscoFile (struct ViceFid *fid, VolumeId vid, Unique_t unique)
 
void FID_MakeDiscoDir (struct ViceFid *fid, VolumeId vid, Unique_t unique)
 
int FID_IsFakeRoot (struct ViceFid *fid)
 
void FID_MakeSubtreeRoot (struct ViceFid *fid, VolumeId vid, Unique_t unique)
 
void FID_MakeLocalDir (struct ViceFid *fid, Unique_t unique)
 
void FID_MakeLocalFile (struct ViceFid *fid, Unique_t unique)
 
void FID_MakeLocalSubtreeRoot (struct ViceFid *fid, Unique_t unique)
 
int FID_EQ (const struct ViceFid *fa, const struct ViceFid *fb)
 
int FID_VolEQ (const struct ViceFid *fa, const struct ViceFid *fb)
 
int FID_Cmp (const struct ViceFid *, const struct ViceFid *)
 
void FID_CpyVol (struct ViceFid *target, const struct ViceFid *source)
 
void FID_VFid2DFid (const struct ViceFid *vf, struct DirFid *df)
 
void FID_DFid2VFid (const struct DirFid *df, struct ViceFid *vf)
 
void FID_PrintFid (const struct DirFid *fid)
 
void FID_Int2DFid (struct DirFid *fid, const int vnode, const int unique)
 
void FID_NFid2Int (const struct DirNFid *fid, VnodeId *vnode, Unique_t *unique)
 
char * FID_ (const struct ViceFid *fid)
 
int DIR_init (int)
 
int DIR_Compare (PDirHeader, PDirHeader)
 
int DIR_Length (PDirHeader)
 
void DIR_Print (PDirHeader, FILE *f)
 
void DIR_check_trans (const char *where, const char *file)
 
struct PageHeaderDIR_Page (struct DirHeader *dirh, int page)
 
void DC_SetDI (PDCEntry pdce, PDirInode pdi)
 
PDirHeader DI_DiToDh (PDirInode pdi)
 
void DI_DhToDi (PDCEntry pdce) REQUIRES_TRANSACTION
 
void DI_Copy (PDirInode oldinode, PDirInode *newinode) REQUIRES_TRANSACTION
 
void DI_Dec (PDirInode pdi) REQUIRES_TRANSACTION
 
void DI_Inc (PDirInode pdi) REQUIRES_TRANSACTION
 
int DI_Count (PDirInode)
 
int DI_Pages (PDirInode)
 
void * DI_Page (PDirInode, int)
 
void DI_VMCopy (PDirInode oldinode, PDirInode *newinode)
 
void DI_VMFree (PDirInode pdi)
 
void DI_VMDec (PDirInode pdi)
 
void DC_SetCount (PDCEntry pdce, int count)
 
void DC_SetRefcount (PDCEntry pdc, int count)
 
PDirInode DC_DC2DI (PDCEntry pdce)
 
int DC_Refcount (PDCEntry)
 
void DC_Put (PDCEntry)
 
void DC_Drop (PDCEntry)
 
int DC_Count (PDCEntry pdce)
 
void DC_SetDirh (PDCEntry pdce, PDirHeader pdh)
 
PDirInode DC_Cowpdi (PDCEntry)
 
void DC_SetCowpdi (PDCEntry, PDirInode)
 
int DC_Dirty (PDCEntry)
 
void DC_SetDirty (PDCEntry, int)
 
PDCEntry DC_Get (PDirInode)
 
PDCEntry DC_New ()
 
PDirHandle DC_DC2DH (PDCEntry)
 
PDCEntry DC_DH2DC (PDirHandle pdh)
 
void DC_Rehash (PDCEntry)
 
void DC_HashInit ()
 

Macro Definition Documentation

◆ DIR_DATA_IN_RVM

#define DIR_DATA_IN_RVM   1

◆ DIR_DATA_IN_VM

#define DIR_DATA_IN_VM   0

◆ DIR_intrans

#define DIR_intrans ( )    DIR_check_trans(__FUNCTION__, __FILE__)

◆ DIR_MAXPAGES

#define DIR_MAXPAGES   128

◆ DIR_PAGESIZE

#define DIR_PAGESIZE   2048

◆ FID_LT

#define FID_LT (   a,
 
)
Value:
/* Assumes that ((a).Volume == (b).Volume)! */ \
((((a).Vnode) < ((b).Vnode)) || \
((a).Vnode == (b).Vnode && ((a).Unique) < ((b).Unique)))
Definition: cvnode.h:155

◆ FID_LTE

#define FID_LTE (   a,
 
)
Value:
/* Assumes that ((a).Volume == (b).Volume)! */ \
((((a).Vnode) < ((b).Vnode)) || \
((a).Vnode == (b).Vnode && ((a).Unique) <= ((b).Unique)))

◆ ISDIR

#define ISDIR (   fid)    ((fid).Vnode & 1) /* Directory fids are odd */

Typedef Documentation

◆ PDCEntry

typedef struct DCEntry* PDCEntry

◆ PDirEntry

typedef struct DirEntry* PDirEntry

◆ PDirFid

typedef struct DirFid* PDirFid

◆ PDirHandle

typedef struct DirHandle* PDirHandle

◆ PDirHeader

typedef struct DirHeader* PDirHeader

◆ PDirInode

typedef struct DirInode* PDirInode

Function Documentation

◆ DC_Count()

int DC_Count ( PDCEntry  pdce)

◆ DC_Cowpdi()

PDirInode DC_Cowpdi ( PDCEntry  pdce)

◆ DC_DC2DH()

PDirHandle DC_DC2DH ( PDCEntry  pdce)

◆ DC_DC2DI()

PDirInode DC_DC2DI ( PDCEntry  pdce)

◆ DC_DH2DC()

PDCEntry DC_DH2DC ( PDirHandle  pdh)

◆ DC_Dirty()

int DC_Dirty ( PDCEntry  pdce)

◆ DC_Drop()

void DC_Drop ( PDCEntry  pdce)

◆ DC_Get()

PDCEntry DC_Get ( PDirInode  pdi)

◆ DC_HashInit()

void DC_HashInit ( )

◆ DC_New()

PDCEntry DC_New ( )

◆ DC_Put()

void DC_Put ( PDCEntry  pdce)

◆ DC_Refcount()

int DC_Refcount ( PDCEntry  pdc)
inline

◆ DC_Rehash()

void DC_Rehash ( PDCEntry  pdce)

◆ DC_SetCount()

void DC_SetCount ( PDCEntry  pdce,
int  count 
)

◆ DC_SetCowpdi()

void DC_SetCowpdi ( PDCEntry  pdce,
PDirInode  pdi 
)

◆ DC_SetDI()

void DC_SetDI ( PDCEntry  pdce,
PDirInode  pdi 
)

◆ DC_SetDirh()

void DC_SetDirh ( PDCEntry  pdce,
PDirHeader  pdh 
)

◆ DC_SetDirty()

void DC_SetDirty ( PDCEntry  pdce,
int  flag 
)

◆ DC_SetRefcount()

void DC_SetRefcount ( PDCEntry  pdc,
int  count 
)
inline

◆ DH_Alloc()

void DH_Alloc ( PDirHandle  dh,
int  size,
int  in_rvm 
)

◆ DH_Commit()

int DH_Commit ( PDirHandle  dh)

◆ DH_Convert()

int DH_Convert ( PDirHandle  dh,
char *  file,
VolumeId  vol,
RealmId  realm 
)

◆ DH_Create()

int DH_Create ( PDirHandle  dh,
const char *  entry,
struct ViceFid *  vfid 
)

◆ DH_Data()

PDirHeader DH_Data ( PDirHandle  dh)

◆ DH_Delete()

int DH_Delete ( PDirHandle  dh,
const char *  entry 
)

◆ DH_DirOK()

int DH_DirOK ( PDirHandle  dh)

◆ DH_EnumerateDir()

int DH_EnumerateDir ( PDirHandle  dh,
int(*)(struct DirEntry *de, void *hook)  hookproc,
void *  hook 
)

◆ DH_FindName()

char * DH_FindName ( PDirHandle  dh,
struct DirFid *  fid,
char *  name,
int  len 
)

◆ DH_Free()

void DH_Free ( PDirHandle  dh,
int  in_rvm 
)

◆ DH_FreeData()

void DH_FreeData ( PDirHandle  dh)

◆ DH_Get()

void DH_Get ( PDirHandle  ,
PDirHeader   
)

◆ DH_Init()

void DH_Init ( PDirHandle  dh)

◆ DH_IsEmpty()

int DH_IsEmpty ( PDirHandle  dh)

◆ DH_Length()

int DH_Length ( PDirHandle  dh)

◆ DH_LockR()

void DH_LockR ( PDirHandle  dh)

◆ DH_LockW()

void DH_LockW ( PDirHandle  dh)

◆ DH_Lookup()

int DH_Lookup ( PDirHandle  dh,
const char *  entry,
struct ViceFid *  vfid,
int  flags 
)

◆ DH_LookupByFid()

int DH_LookupByFid ( PDirHandle  dh,
char *  entry,
struct ViceFid *  vfid 
)

◆ DH_MakeDir()

int DH_MakeDir ( PDirHandle  dh,
struct ViceFid *  vme,
struct ViceFid *  vparent 
)

◆ DH_New()

PDirHandle DH_New ( int  in_rvm,
PDirHeader  vmdata,
PDirHeader  rvmdata 
)

◆ DH_Print()

void DH_Print ( PDirHandle  dh,
FILE *  f 
)

◆ DH_PrintStats()

void DH_PrintStats ( FILE *  fp)

◆ DH_Put()

void DH_Put ( PDirHandle  )

◆ DH_UnLockR()

void DH_UnLockR ( PDirHandle  dh)

◆ DH_UnLockW()

void DH_UnLockW ( PDirHandle  dh)

◆ DI_Copy()

void DI_Copy ( PDirInode  oldinode,
PDirInode newinode 
)

◆ DI_Count()

int DI_Count ( PDirInode  pdi)

◆ DI_Dec()

void DI_Dec ( PDirInode  pdi)

◆ DI_DhToDi()

void DI_DhToDi ( PDCEntry  pdce)

◆ DI_DiToDh()

PDirHeader DI_DiToDh ( PDirInode  pdi)

◆ DI_Inc()

void DI_Inc ( PDirInode  pdi)

◆ DI_Page()

void * DI_Page ( PDirInode  pdi,
int  page 
)

◆ DI_Pages()

int DI_Pages ( PDirInode  pdi)

◆ DI_VMCopy()

void DI_VMCopy ( PDirInode  oldinode,
PDirInode newinode 
)

◆ DI_VMDec()

void DI_VMDec ( PDirInode  pdi)

◆ DI_VMFree()

void DI_VMFree ( PDirInode  pdi)

◆ DIR_check_trans()

void DIR_check_trans ( const char *  where,
const char *  file 
)
inline

◆ DIR_Compare()

int DIR_Compare ( PDirHeader  d1,
PDirHeader  d2 
)

◆ DIR_Init()

int DIR_Init ( int  data_loc)

◆ DIR_init()

int DIR_init ( int  )

◆ DIR_Length()

int DIR_Length ( PDirHeader  )

◆ DIR_Page()

struct PageHeader * DIR_Page ( struct DirHeader dirh,
int  page 
)

◆ DIR_Print()

void DIR_Print ( PDirHeader  dir,
FILE *  f 
)

◆ FID_()

char * FID_ ( const struct ViceFid *  fid)

◆ FID_Cmp()

int FID_Cmp ( const struct ViceFid *  fa,
const struct ViceFid *  fb 
)

◆ FID_CpyVol()

void FID_CpyVol ( struct ViceFid *  target,
const struct ViceFid *  source 
)

◆ FID_DFid2VFid()

void FID_DFid2VFid ( const struct DirFid *  df,
struct ViceFid *  vf 
)

◆ FID_EQ()

int FID_EQ ( const struct ViceFid *  fa,
const struct ViceFid *  fb 
)

◆ FID_Int2DFid()

void FID_Int2DFid ( struct DirFid *  fid,
const int  vnode,
const int  unique 
)

◆ FID_IsDisco()

int FID_IsDisco ( const struct ViceFid *  x)

◆ FID_IsFakeRoot()

int FID_IsFakeRoot ( struct ViceFid *  fid)

◆ FID_IsLocalDir()

int FID_IsLocalDir ( const struct ViceFid *  fid)

◆ FID_IsLocalFile()

int FID_IsLocalFile ( const struct ViceFid *  fid)

◆ FID_IsVolRoot()

int FID_IsVolRoot ( const struct ViceFid *  fid)

◆ FID_MakeDiscoDir()

void FID_MakeDiscoDir ( struct ViceFid *  fid,
VolumeId  vid,
Unique_t  unique 
)

◆ FID_MakeDiscoFile()

void FID_MakeDiscoFile ( struct ViceFid *  fid,
VolumeId  vid,
Unique_t  unique 
)

◆ FID_MakeLocalDir()

void FID_MakeLocalDir ( struct ViceFid *  fid,
Unique_t  unique 
)

◆ FID_MakeLocalFile()

void FID_MakeLocalFile ( struct ViceFid *  fid,
Unique_t  unique 
)

◆ FID_MakeLocalSubtreeRoot()

void FID_MakeLocalSubtreeRoot ( struct ViceFid *  fid,
Unique_t  unique 
)

◆ FID_MakeRoot()

void FID_MakeRoot ( struct ViceFid *  fid)

◆ FID_MakeSubtreeRoot()

void FID_MakeSubtreeRoot ( struct ViceFid *  fid,
VolumeId  vid,
Unique_t  unique 
)

◆ FID_NFid2Int()

void FID_NFid2Int ( const struct DirNFid fid,
VnodeId *  vnode,
Unique_t *  unique 
)

◆ FID_PrintFid()

void FID_PrintFid ( const struct DirFid *  fid)

◆ FID_VFid2DFid()

void FID_VFid2DFid ( const struct ViceFid *  vf,
struct DirFid *  df 
)

◆ FID_VolEQ()

int FID_VolEQ ( const struct ViceFid *  fa,
const struct ViceFid *  fb 
)