From 5ad1e6cb904b953fbb04603f3ce1466dcc38cd48 Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Fri, 6 May 2011 10:40:38 +0100 Subject: [PATCH] dir: Prototype and function name cleanup Tidy up typing in the dir package, so that we have a specific type for a directory file handle. Also rename all of the functions to afs_dir_* globablly, rather than just renaming for kernel code. Change-Id: I6750a8eb9f0606d5debf9d677a92b9c8a63dbcf3 Reviewed-on: http://gerrit.openafs.org/4745 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- src/afs/afs_buffer.c | 4 +- src/afs/afs_dynroot.c | 2 +- src/afs/afs_prototypes.h | 8 --- src/dir/buffer.c | 89 +++++++++++++++++-------------- src/dir/dir.c | 112 ++++++++++++++++++--------------------- src/dir/dir.h | 102 +++++++++++++++-------------------- src/dir/salvage.c | 12 ++--- src/dir/test/dtest.c | 17 +++--- src/viced/afsfileprocs.c | 36 ++++++------- src/viced/viced.c | 2 +- src/vol/vol-salvage.c | 39 +++++++------- src/volser/vol_split.c | 6 +-- src/volser/volprocs.c | 6 +-- 13 files changed, 207 insertions(+), 228 deletions(-) diff --git a/src/afs/afs_buffer.c b/src/afs/afs_buffer.c index 68cd146b1..e9585a725 100644 --- a/src/afs/afs_buffer.c +++ b/src/afs/afs_buffer.c @@ -487,7 +487,7 @@ DFlushDCache(struct dcache *adc) ReleaseReadLock(&afs_bufferLock); } -void +int DFlush(void) { /* Flush all the modified buffers. */ @@ -522,6 +522,8 @@ DFlush(void) } } ReleaseReadLock(&afs_bufferLock); + + return 0; } int diff --git a/src/afs/afs_dynroot.c b/src/afs/afs_dynroot.c index 099616df0..adf17bb52 100644 --- a/src/afs/afs_dynroot.c +++ b/src/afs/afs_dynroot.c @@ -257,7 +257,7 @@ afs_dynroot_addDirEnt(struct DirHeader *dirHeader, int *curPageP, /* * Add the new entry to the correct hash chain. */ - i = DirHash(name); + i = afs_dir_DirHash(name); dirEntry->next = dirHeader->hashTable[i]; dirHeader->hashTable[i] = htons(curPage * EPP + curChunk); diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h index a02b3934c..200f5c5d3 100644 --- a/src/afs/afs_prototypes.h +++ b/src/afs/afs_prototypes.h @@ -26,14 +26,6 @@ extern void afs_FreeAllAxs(struct axscache **headp); extern void shutdown_xscache(void); /* afs_buffer.c */ -struct DirBuffer; -extern void DInit(int abuffers); -extern int DRead(struct dcache * fid, int page, struct DirBuffer *); -extern int DVOffset(struct DirBuffer *); -extern void DZap(struct dcache * fid); -extern void DFlush(void); -extern void DFlushDCache(struct dcache *); -extern int DNew(struct dcache * fid, int page, struct DirBuffer *); extern void shutdown_bufferpackage(void); /* afs_call.c */ diff --git a/src/dir/buffer.c b/src/dir/buffer.c index 459e9dbba..8a99d4b68 100644 --- a/src/dir/buffer.c +++ b/src/dir/buffer.c @@ -14,17 +14,19 @@ #include +#include "dir.h" + #ifdef AFS_64BIT_IOPS_ENV -#define BUFFER_FID_SIZE (9 + 2*sizeof(char*)/sizeof(int)) +#define BUFFER_FID_SIZE (9*sizeof(int) + 2*sizeof(char*)) #else -#define BUFFER_FID_SIZE (6 + 2*sizeof(char*)/sizeof(int)) +#define BUFFER_FID_SIZE (6*sizeof(int) + 2*sizeof(char*)) #endif struct buffer { /* fid is used for Unique cache key + i/o addressing. * fid size is based on 4 + size of inode and size of pointer */ - afs_int32 fid[BUFFER_FID_SIZE]; + char fid[BUFFER_FID_SIZE]; afs_int32 page; afs_int32 accesstime; struct buffer *hashNext; @@ -35,7 +37,11 @@ struct buffer { struct Lock lock; }; -#include "dir.h" +static_inline dir_file_t +bufferDir(struct buffer *b) +{ + return (dir_file_t) &b->fid; +} struct Lock afs_bufferLock; @@ -50,7 +56,7 @@ struct Lock afs_bufferLock; * based on the volume id. This means this macro is dependent upon the * layout of DirHandle in viced/viced.h, vol/salvage.h and volser/salvage.h. */ -#define pHash(fid) ((fid)[0] & (PHSIZE-1)) +#define pHash(fid) (((afs_int32 *)fid)[0] & (PHSIZE-1)) #define vHash(vid) (vid & (PHSIZE-1)) /* admittedly system dependent, this is the maximum signed 32-bit value */ @@ -69,7 +75,7 @@ int nbuffers; int timecounter; static int calls = 0, ios = 0; -struct buffer *newslot(afs_int32 *afid, afs_int32 apage, +struct buffer *newslot(dir_file_t dir, afs_int32 apage, struct buffer *lp); /* XXX - This sucks. The correct prototypes for these functions are ... @@ -79,13 +85,14 @@ struct buffer *newslot(afs_int32 *afid, afs_int32 apage, * extern int ReallyRead(DirHandle *a, int block, char *data); */ -extern void FidZero(afs_int32 *file); -extern int FidEq(afs_int32 *a, afs_int32 *b); -extern int ReallyRead(afs_int32 *file, int block, char *data); -extern int ReallyWrite(afs_int32 *file, int block, char *data); -extern void FidZap(afs_int32 *file); -extern int FidVolEq(afs_int32 *file, afs_int32 vid); -extern void FidCpy(afs_int32 *tofile, afs_int32 *fromfile); +extern void FidZero(dir_file_t); +extern int FidEq(dir_file_t, dir_file_t); +extern int ReallyRead(dir_file_t, int block, char *data); +extern int ReallyWrite(dir_file_t, int block, char *data); +extern void FidZap(dir_file_t); +extern int FidVolEq(dir_file_t, afs_int32 vid); +extern void FidCpy(dir_file_t, dir_file_t fromfile); + extern void Die(char *msg); int @@ -105,7 +112,7 @@ DStat(int *abuffers, int *acalls, int *aios) * @return operation status * @retval 0 success */ -int +void DInit(int abuffers) { /* Initialize the venus buffer system. */ @@ -129,14 +136,14 @@ DInit(int abuffers) tb = (struct buffer *)tp; Buffers[i] = tb; tp += tsize; - FidZero(tb->fid); + FidZero(bufferDir(tb)); tb->accesstime = tb->lockers = 0; tb->data = &BufferData[BUFFER_PAGE_SIZE * i]; tb->hashIndex = 0; tb->dirty = 0; Lock_Init(&tb->lock); } - return 0; + return; } /** @@ -149,7 +156,7 @@ DInit(int abuffers) * @retval NULL read failed */ int -DRead(afs_int32 *fid, int page, struct DirBuffer *entry) +DRead(dir_file_t fid, int page, struct DirBuffer *entry) { /* Read a page from the disk. */ struct buffer *tb, *tb2, **bufhead; @@ -159,7 +166,7 @@ DRead(afs_int32 *fid, int page, struct DirBuffer *entry) ObtainWriteLock(&afs_bufferLock); calls++; -#define bufmatch(tb) (tb->page == page && FidEq(tb->fid, fid)) +#define bufmatch(tb,fid) (tb->page == page && FidEq(bufferDir(tb), fid)) #define buf_Front(head,parent,p) {(parent)->hashNext = (p)->hashNext; (p)->hashNext= *(head);*(head)=(p);} /* this apparently-complicated-looking code is simply an example of @@ -170,7 +177,7 @@ DRead(afs_int32 *fid, int page, struct DirBuffer *entry) * probably obsolete. */ if ((tb = phTable[pHash(fid)])) { /* ASSMT HERE */ - if (bufmatch(tb)) { + if (bufmatch(tb, fid)) { ObtainWriteLock(&tb->lock); tb->lockers++; ReleaseWriteLock(&afs_bufferLock); @@ -182,7 +189,7 @@ DRead(afs_int32 *fid, int page, struct DirBuffer *entry) } else { bufhead = &(phTable[pHash(fid)]); while ((tb2 = tb->hashNext)) { - if (bufmatch(tb2)) { + if (bufmatch(tb2, fid)) { buf_Front(bufhead, tb, tb2); ObtainWriteLock(&tb2->lock); tb2->lockers++; @@ -194,7 +201,7 @@ DRead(afs_int32 *fid, int page, struct DirBuffer *entry) return 0; } if ((tb = tb2->hashNext)) { /* ASSIGNMENT HERE! */ - if (bufmatch(tb)) { + if (bufmatch(tb, fid)) { buf_Front(bufhead, tb2, tb); ObtainWriteLock(&tb->lock); tb->lockers++; @@ -221,9 +228,9 @@ DRead(afs_int32 *fid, int page, struct DirBuffer *entry) ObtainWriteLock(&tb->lock); tb->lockers++; ReleaseWriteLock(&afs_bufferLock); - if (ReallyRead(tb->fid, tb->page, tb->data)) { + if (ReallyRead(bufferDir(tb), tb->page, tb->data)) { tb->lockers--; - FidZap(tb->fid); /* disaster */ + FidZap(bufferDir(tb)); /* disaster */ ReleaseWriteLock(&tb->lock); return EIO; } @@ -254,7 +261,7 @@ FixupBucket(struct buffer *ap) lp = &tp->hashNext; } /* now figure the new hash bucket */ - i = pHash(ap->fid); + i = pHash(ap); ap->hashIndex = i; /* remember where we are for deletion */ ap->hashNext = phTable[i]; /* add us to the list */ phTable[i] = ap; /* at the front, since it's LRU */ @@ -262,7 +269,7 @@ FixupBucket(struct buffer *ap) } struct buffer * -newslot(afs_int32 *afid, afs_int32 apage, struct buffer *lp) +newslot(dir_file_t dir, afs_int32 apage, struct buffer *lp) { /* Find a usable buffer slot */ afs_int32 i; @@ -298,14 +305,14 @@ newslot(afs_int32 *afid, afs_int32 apage, struct buffer *lp) * and the afs_bufferLock prevents other threads from zapping this * buffer while we are writing it out */ if (lp->dirty) { - if (ReallyWrite(lp->fid, lp->page, lp->data)) + if (ReallyWrite(bufferDir(lp), lp->page, lp->data)) Die("writing bogus buffer"); lp->dirty = 0; } /* Now fill in the header. */ - FidZap(lp->fid); - FidCpy(lp->fid, afid); /* set this */ + FidZap(bufferDir(lp)); + FidCpy(bufferDir(lp), dir); /* set this */ lp->page = apage; lp->accesstime = ++timecounter; @@ -342,15 +349,15 @@ DVOffset(struct DirBuffer *entry) } void -DZap(afs_int32 *fid) +DZap(dir_file_t dir) { /* Destroy all buffers pertaining to a particular fid. */ struct buffer *tb; ObtainReadLock(&afs_bufferLock); - for (tb = phTable[pHash(fid)]; tb; tb = tb->hashNext) - if (FidEq(tb->fid, fid)) { + for (tb = phTable[pHash(dir)]; tb; tb = tb->hashNext) + if (FidEq(bufferDir(tb), dir)) { ObtainWriteLock(&tb->lock); - FidZap(tb->fid); + FidZap(bufferDir(tb)); tb->dirty = 0; ReleaseWriteLock(&tb->lock); } @@ -365,15 +372,15 @@ DFlushVolume(afs_int32 vid) int code, rcode = 0; ObtainReadLock(&afs_bufferLock); for (tb = phTable[vHash(vid)]; tb; tb = tb->hashNext) - if (FidVolEq(tb->fid, vid)) { + if (FidVolEq(bufferDir(tb), vid)) { ObtainWriteLock(&tb->lock); if (tb->dirty) { - code = ReallyWrite(tb->fid, tb->page, tb->data); + code = ReallyWrite(bufferDir(tb), tb->page, tb->data); if (code && !rcode) rcode = code; tb->dirty = 0; } - FidZap(tb->fid); + FidZap(bufferDir(tb)); ReleaseWriteLock(&tb->lock); } ReleaseReadLock(&afs_bufferLock); @@ -381,7 +388,7 @@ DFlushVolume(afs_int32 vid) } int -DFlushEntry(afs_int32 *fid) +DFlushEntry(dir_file_t fid) { /* Flush pages modified by one entry. */ struct buffer *tb; @@ -389,10 +396,10 @@ DFlushEntry(afs_int32 *fid) ObtainReadLock(&afs_bufferLock); for (tb = phTable[pHash(fid)]; tb; tb = tb->hashNext) - if (FidEq(tb->fid, fid) && tb->dirty) { + if (FidEq(bufferDir(tb), fid) && tb->dirty) { ObtainWriteLock(&tb->lock); if (tb->dirty) { - code = ReallyWrite(tb->fid, tb->page, tb->data); + code = ReallyWrite(bufferDir(tb), tb->page, tb->data); if (code) { ReleaseWriteLock(&tb->lock); ReleaseReadLock(&afs_bufferLock); @@ -423,7 +430,7 @@ DFlush(void) (*tbp)->lockers++; ReleaseReadLock(&afs_bufferLock); if ((*tbp)->dirty) { - code = ReallyWrite((*tbp)->fid, (*tbp)->page, (*tbp)->data); + code = ReallyWrite(bufferDir(*tbp), (*tbp)->page, (*tbp)->data); if (!code) (*tbp)->dirty = 0; /* Clear the dirty flag */ if (code && !rcode) { @@ -443,14 +450,14 @@ DFlush(void) * since it probably doesn't exist. */ int -DNew(afs_int32 *fid, int page, struct DirBuffer *entry) +DNew(dir_file_t dir, int page, struct DirBuffer *entry) { struct buffer *tb; memset(entry,0, sizeof(struct DirBuffer)); ObtainWriteLock(&afs_bufferLock); - if ((tb = newslot(fid, page, 0)) == 0) { + if ((tb = newslot(dir, page, 0)) == 0) { ReleaseWriteLock(&afs_bufferLock); return EIO; } diff --git a/src/dir/dir.c b/src/dir/dir.c index bcc2ed661..4e1312110 100644 --- a/src/dir/dir.c +++ b/src/dir/dir.c @@ -67,20 +67,6 @@ extern int DNew(struct dcache *adc, int page, struct DirBuffer *); # include "h/string.h" # endif -/* generic renaming */ -# define NameBlobs afs_dir_NameBlobs -# define GetBlob afs_dir_GetBlob -# define Create afs_dir_Create -# define Length afs_dir_Length -# define Delete afs_dir_Delete -# define MakeDir afs_dir_MakeDir -# define Lookup afs_dir_Lookup -# define LookupOffset afs_dir_LookupOffset -# define EnumerateDir afs_dir_EnumerateDir -# define IsEmpty afs_dir_IsEmpty -# define InverseLookup afs_dir_InverseLookup -# define ChangeFid afs_dir_ChangeFid - #else /* KERNEL */ # include @@ -90,12 +76,15 @@ extern int DNew(struct dcache *adc, int page, struct DirBuffer *); afs_int32 DErrno; /* Local static prototypes */ -static int FindItem(void *dir, char *ename, struct DirBuffer *, +static int FindBlobs(dir_file_t, int); +static void AddPage(dir_file_t, int); +static void FreeBlobs(dir_file_t, int, int); +static int FindItem(dir_file_t, char *, struct DirBuffer *, struct DirBuffer *); /* Find out how many entries are required to store a name. */ int -NameBlobs(char *name) +afs_dir_NameBlobs(char *name) { int i; i = strlen(name) + 1; @@ -105,7 +94,7 @@ NameBlobs(char *name) /* Create an entry in a file. Dir is a file representation, while entry is * a string name. */ int -Create(void *dir, char *entry, void *voidfid) +afs_dir_Create(dir_file_t dir, char *entry, void *voidfid) { afs_int32 *vfid = (afs_int32 *) voidfid; int blobs, firstelt; @@ -126,13 +115,13 @@ Create(void *dir, char *entry, void *voidfid) return EEXIST; } - blobs = NameBlobs(entry); /* number of entries required */ + blobs = afs_dir_NameBlobs(entry); /* number of entries required */ firstelt = FindBlobs(dir, blobs); if (firstelt < 0) return EFBIG; /* directory is full */ /* First, we fill in the directory entry. */ - if (GetBlob(dir, firstelt, &entrybuf) != 0) + if (afs_dir_GetBlob(dir, firstelt, &entrybuf) != 0) return EIO; ep = (struct DirEntry *)entrybuf.data; @@ -148,7 +137,7 @@ Create(void *dir, char *entry, void *voidfid) } dhp = (struct DirHeader *)headerbuf.data; - i = DirHash(entry); + i = afs_dir_DirHash(entry); ep->next = dhp->hashTable[i]; dhp->hashTable[i] = htons(firstelt); DRelease(&headerbuf, 1); @@ -157,7 +146,7 @@ Create(void *dir, char *entry, void *voidfid) } int -Length(void *dir) +afs_dir_Length(dir_file_t dir) { int i, ctr; struct DirBuffer headerbuf; @@ -180,11 +169,12 @@ Length(void *dir) return ctr * AFS_PAGESIZE; } +/* Delete an entry from a directory, including update of all free entry + * descriptors. */ int -Delete(void *dir, char *entry) +afs_dir_Delete(dir_file_t dir, char *entry) { - /* Delete an entry from a directory, including update of all free entry - * descriptors. */ + int nitems, index; struct DirBuffer entrybuf, prevbuf; struct DirEntry *firstitem; @@ -199,16 +189,16 @@ Delete(void *dir, char *entry) *previtem = firstitem->next; DRelease(&prevbuf, 1); index = DVOffset(&entrybuf) / 32; - nitems = NameBlobs(firstitem->name); + nitems = afs_dir_NameBlobs(firstitem->name); DRelease(&entrybuf, 0); FreeBlobs(dir, index, nitems); return 0; } -int -FindBlobs(void *dir, int nblobs) +/* Find a bunch of contiguous entries; at least nblobs in a row. */ +static int +FindBlobs(dir_file_t dir, int nblobs) { - /* Find a bunch of contiguous entries; at least nblobs in a row. */ int i, j, k; int failed = 0; struct DirBuffer headerbuf, pagebuf; @@ -280,8 +270,8 @@ FindBlobs(void *dir, int nblobs) return -1; } -void -AddPage(void *dir, int pageno) +static void +AddPage(dir_file_t dir, int pageno) { /* Add a page to a directory. */ int i; struct PageHeader *pp; @@ -303,8 +293,8 @@ AddPage(void *dir, int pageno) /* Free a whole bunch of directory entries. */ -void -FreeBlobs(void *dir, int firstblob, int nblobs) +static void +FreeBlobs(dir_file_t dir, int firstblob, int nblobs) { int i; int page; @@ -339,7 +329,7 @@ FreeBlobs(void *dir, int firstblob, int nblobs) * allocation map and 8 to the hash table. */ int -MakeDir(void *dir, afs_int32 * me, afs_int32 * parent) +afs_dir_MakeDir(dir_file_t dir, afs_int32 * me, afs_int32 * parent) { int i; struct DirBuffer buffer; @@ -361,15 +351,15 @@ MakeDir(void *dir, afs_int32 * me, afs_int32 * parent) for (i = 0; i < NHASHENT; i++) dhp->hashTable[i] = 0; DRelease(&buffer, 1); - Create(dir, ".", me); - Create(dir, "..", parent); /* Virtue is its own .. */ + afs_dir_Create(dir, ".", me); + afs_dir_Create(dir, "..", parent); /* Virtue is its own .. */ return 0; } /* Look up a file name in directory. */ int -Lookup(void *dir, char *entry, void *voidfid) +afs_dir_Lookup(dir_file_t dir, char *entry, void *voidfid) { afs_int32 *fid = (afs_int32 *) voidfid; struct DirBuffer firstbuf, prevbuf; @@ -389,7 +379,8 @@ Lookup(void *dir, char *entry, void *voidfid) /* Look up a file name in directory. */ int -LookupOffset(void *dir, char *entry, void *voidfid, long *offsetp) +afs_dir_LookupOffset(dir_file_t dir, char *entry, void *voidfid, + long *offsetp) { afs_int32 *fid = (afs_int32 *) voidfid; struct DirBuffer firstbuf, prevbuf; @@ -414,9 +405,10 @@ LookupOffset(void *dir, char *entry, void *voidfid, long *offsetp) */ int -EnumerateDir(void *dir, int (*hookproc) (void *dir, char *name, - afs_int32 vnode, afs_int32 unique), - void *hook) +afs_dir_EnumerateDir(dir_file_t dir, int (*proc) (void *, char *name, + afs_int32 vnode, + afs_int32 unique), + void *hook) { int i; int num; @@ -435,7 +427,7 @@ EnumerateDir(void *dir, int (*hookproc) (void *dir, char *name, while (num != 0) { /* Walk down the hash table list. */ DErrno = 0; - if (GetBlob(dir, num, &entrybuf) != 0) { + if (afs_dir_GetBlob(dir, num, &entrybuf) != 0) { if (DErrno) { /* we failed, return why */ DRelease(&headerbuf, 0); @@ -446,8 +438,8 @@ EnumerateDir(void *dir, int (*hookproc) (void *dir, char *name, ep = (struct DirEntry *)entrybuf.data; num = ntohs(ep->next); - code = (*hookproc) (hook, ep->name, ntohl(ep->fid.vnode), - ntohl(ep->fid.vunique)); + code = (*proc) (hook, ep->name, ntohl(ep->fid.vnode), + ntohl(ep->fid.vunique)); DRelease(&entrybuf, 0); if (code) break; @@ -458,7 +450,7 @@ EnumerateDir(void *dir, int (*hookproc) (void *dir, char *name, } int -IsEmpty(void *dir) +afs_dir_IsEmpty(dir_file_t dir) { /* Enumerate the contents of a directory. */ int i; @@ -476,7 +468,7 @@ IsEmpty(void *dir) num = ntohs(dhp->hashTable[i]); while (num != 0) { /* Walk down the hash table list. */ - if (GetBlob(dir, num, &entrybuf) != 0); + if (afs_dir_GetBlob(dir, num, &entrybuf) != 0); break; ep = (struct DirEntry *)entrybuf.data; if (strcmp(ep->name, "..") && strcmp(ep->name, ".")) { @@ -493,7 +485,7 @@ IsEmpty(void *dir) } int -GetBlob(void *dir, afs_int32 blobno, struct DirBuffer *buffer) +afs_dir_GetBlob(dir_file_t dir, afs_int32 blobno, struct DirBuffer *buffer) { int code; @@ -509,7 +501,7 @@ GetBlob(void *dir, afs_int32 blobno, struct DirBuffer *buffer) } int -DirHash(char *string) +afs_dir_DirHash(char *string) { /* Hash a string to a number between 0 and NHASHENT. */ unsigned char tc; @@ -536,7 +528,7 @@ DirHash(char *string) * returned instead. */ static int -FindItem(void *dir, char *ename, struct DirBuffer *prevbuf, +FindItem(dir_file_t dir, char *ename, struct DirBuffer *prevbuf, struct DirBuffer *itembuf ) { int i, code; @@ -552,14 +544,15 @@ FindItem(void *dir, char *ename, struct DirBuffer *prevbuf, return code; dhp = (struct DirHeader *)prev.data; - i = DirHash(ename); + i = afs_dir_DirHash(ename); if (dhp->hashTable[i] == 0) { /* no such entry */ DRelease(&prev, 0); return ENOENT; } - code = GetBlob(dir, (u_short) ntohs(dhp->hashTable[i]), &curr); + code = afs_dir_GetBlob(dir, (u_short) ntohs(dhp->hashTable[i]), + &curr); if (code) { DRelease(&prev, 0); return code; @@ -586,7 +579,7 @@ FindItem(void *dir, char *ename, struct DirBuffer *prevbuf, prev = curr; prev.data = &(tp->next); - code = GetBlob(dir, (u_short) ntohs(tp->next), &curr); + code = afs_dir_GetBlob(dir, (u_short) ntohs(tp->next), &curr); if (code) { DRelease(&prev, 0); return code; @@ -619,8 +612,8 @@ FindFid (void *dir, afs_uint32 vnode, afs_uint32 unique, for (i=0; ihashTable[i] != 0) { - code = GetBlob(dir, (u_short)ntohs(dhp->hashTable[i]), - &curr); + code = afs_dir_GetBlob(dir, (u_short)ntohs(dhp->hashTable[i]), + &curr); if (code) { DRelease(&header, 0); return code; @@ -642,7 +635,7 @@ FindFid (void *dir, afs_uint32 vnode, afs_uint32 unique, if (next == 0) break; - code = GetBlob(dir, (u_short)ntohs(next), &curr); + code = afs_dir_GetBlob(dir, (u_short)ntohs(next), &curr); if (code) { DRelease(&header, 0); return code; @@ -655,8 +648,8 @@ FindFid (void *dir, afs_uint32 vnode, afs_uint32 unique, } int -InverseLookup (void *dir, afs_uint32 vnode, afs_uint32 unique, char *name, - afs_uint32 length) +afs_dir_InverseLookup(void *dir, afs_uint32 vnode, afs_uint32 unique, + char *name, afs_uint32 length) { /* Look for the name pointing to given vnode and unique in a directory */ struct DirBuffer entrybuf; @@ -684,10 +677,9 @@ InverseLookup (void *dir, afs_uint32 vnode, afs_uint32 unique, char *name, * It can be omitted if you don't need a safety check... * \param new_fid The new find in MKFid format (host order). */ -int ChangeFid(void *dir, - char *entry, - afs_uint32 *old_fid, - afs_uint32 *new_fid) +int +afs_dir_ChangeFid(dir_file_t dir, char *entry, afs_uint32 *old_fid, + afs_uint32 *new_fid) { struct DirBuffer prevbuf, entrybuf; struct DirEntry *firstitem; diff --git a/src/dir/dir.h b/src/dir/dir.h index 38618533a..f5f98d7c5 100644 --- a/src/dir/dir.h +++ b/src/dir/dir.h @@ -77,78 +77,62 @@ struct DirPage1 { struct DirEntry entry[1]; }; -/* - * Note that this declaration is seen in both the kernel code and the - * user space code. One implementation is in afs/afs_buffer.c; the - * other is in dir/buffer.c. - */ -extern int DVOffset(struct DirBuffer *); +/* Prototypes */ +#ifdef KERNEL +struct dcache; +typedef struct dcache * dir_file_t; +#else +struct DirHandle; +typedef struct DirHandle * dir_file_t; +#endif +extern int afs_dir_NameBlobs(char *name); +extern int afs_dir_Create(dir_file_t dir, char *entry, void *vfid); +extern int afs_dir_Length(dir_file_t dir); +extern int afs_dir_Delete(dir_file_t dir, char *entry); +extern int afs_dir_MakeDir(dir_file_t dir, afs_int32 * me, + afs_int32 * parent); +extern int afs_dir_Lookup(dir_file_t dir, char *entry, void *fid); +extern int afs_dir_LookupOffset(dir_file_t dir, char *entry, void *fid, + long *offsetp); +extern int afs_dir_EnumerateDir(dir_file_t dir, + int (*hookproc) (void *, char *name, + afs_int32 vnode, + afs_int32 unique), + void *hook); +extern int afs_dir_IsEmpty(dir_file_t dir); +extern int afs_dir_GetBlob(dir_file_t dir, afs_int32 blobno, + struct DirBuffer *); +extern int afs_dir_DirHash(char *string); -/* This is private to buffer.c */ -struct buffer; +extern int afs_dir_InverseLookup (void *dir, afs_uint32 vnode, + afs_uint32 unique, char *name, + afs_uint32 length); -/* Prototypes */ -extern int NameBlobs(char *name); -extern int Create(void *dir, char *entry, void *vfid); -extern int Length(void *dir); -extern int Delete(void *dir, char *entry); -extern int FindBlobs(void *dir, int nblobs); -extern void AddPage(void *dir, int pageno); -extern void FreeBlobs(void *dir, int firstblob, int nblobs); -extern int MakeDir(void *dir, afs_int32 * me, afs_int32 * parent); -extern int Lookup(void *dir, char *entry, void *fid); -extern int LookupOffset(void *dir, char *entry, void *fid, long *offsetp); -extern int EnumerateDir(void *dir, - int (*hookproc) (void *dir, char *name, - afs_int32 vnode, afs_int32 unique), - void *hook); -extern int IsEmpty(void *dir); -extern int GetBlob(void *dir, afs_int32 blobno, struct DirBuffer *); -extern int DirHash(char *string); +extern int afs_dir_ChangeFid(dir_file_t dir, char *entry, + afs_uint32 *old_fid, afs_uint32 *new_fid); -extern int DStat(int *abuffers, int *acalls, int *aios); -extern void DRelease(struct DirBuffer *loc, int flag); -extern int DFlushVolume(afs_int32 vid); -extern int DFlushEntry(afs_int32 *fid); -extern int InverseLookup (void *dir, afs_uint32 vnode, afs_uint32 unique, - char *name, afs_uint32 length); +/* buffer operations */ -/* The kernel uses different versions of these, and prototypes them - in afs_prototypes.h */ -#ifndef KERNEL -extern int DInit(int abuffers); -extern int DRead(afs_int32 *fid, int page, struct DirBuffer *); +extern void DInit(int abuffers); +extern int DRead(dir_file_t fid, int page, struct DirBuffer *); extern int DFlush(void); -extern int DNew(afs_int32 *fid, int page, struct DirBuffer *); -extern void DZap(afs_int32 *fid); +extern int DFlushVolume(afs_int32); +extern int DNew(dir_file_t fid, int page, struct DirBuffer *); +extern void DZap(dir_file_t fid); +extern void DRelease(struct DirBuffer *loc, int flag); +extern int DStat(int *abuffers, int *acalls, int *aios); +extern int DFlushVolume(afs_int32 vid); +extern int DFlushEntry(dir_file_t fid); +extern int DVOffset(struct DirBuffer *); /* salvage.c */ +#ifndef KERNEL extern int DirOK(void *); extern int DirSalvage(void *, void *, afs_int32, afs_int32, afs_int32, afs_int32); #endif -#ifdef KERNEL -extern int afs_dir_NameBlobs(char *name); -extern int afs_dir_Create(void *dir, char *entry, void *vfid); -extern int afs_dir_Length(void *dir); -extern int afs_dir_Delete(void *dir, char *entry); -extern int afs_dir_MakeDir(void *dir, afs_int32 * me, afs_int32 * parent); -extern int afs_dir_Lookup(void *dir, char *entry, void *fid); -extern int afs_dir_LookupOffset(void *dir, char *entry, void *fid, - long *offsetp); -extern int afs_dir_EnumerateDir(void *dir, - int (*hookproc) (void *dir, char *name, - afs_int32 vnode, - afs_int32 unique), - void *hook); -extern int afs_dir_IsEmpty(void *dir); -extern int afs_dir_ChangeFid(void *dir, char *entry, afs_uint32 *old_fid, - afs_uint32 *new_fid); -extern int afs_dir_GetBlob(void *dir, afs_int32 blobno, struct DirBuffer *); -#endif - #endif /* !defined(__AFS_DIR_H) */ diff --git a/src/dir/salvage.c b/src/dir/salvage.c index d3716c732..d984c118f 100644 --- a/src/dir/salvage.c +++ b/src/dir/salvage.c @@ -264,7 +264,7 @@ DirOK(void *file) /* Read the directory entry */ DErrno = 0; - code = GetBlob(file, entry, &entrybuf); + code = afs_dir_GetBlob(file, entry, &entrybuf); if (code) { if (DErrno != 0) { /* something went wrong reading the page, but it wasn't @@ -322,13 +322,13 @@ DirOK(void *file) /* The name used up k directory entries, set the bit in our in-memory * freebitmap for each entry used by the name. */ - k = NameBlobs(ep->name); + k = afs_dir_NameBlobs(ep->name); for (j = 0; j < k; j++) { eaMap[(entry + j) >> 3] |= (1 << ((entry + j) & 7)); } /* Hash the name and make sure it is in the correct name hash */ - if ((j = DirHash(ep->name)) != i) { + if ((j = afs_dir_DirHash(ep->name)) != i) { printf("Dir entry %"AFS_PTR_FMT " should be in hash bucket %d but IS in %d.\n", ep, j, i); @@ -457,7 +457,7 @@ DirSalvage(void *fromFile, void *toFile, afs_int32 vn, afs_int32 vu, dotdot[1] = pvn; dotdot[2] = pvu; - MakeDir(toFile, dot, dotdot); /* Returns no error code. */ + afs_dir_MakeDir(toFile, dot, dotdot); /* Returns no error code. */ /* Find out how many pages are valid, using stupid heuristic since DRead * never returns null. @@ -488,7 +488,7 @@ DirSalvage(void *fromFile, void *toFile, afs_int32 vn, afs_int32 vu, } DErrno = 0; - code = GetBlob(fromFile, entry, &entrybuf); + code = afs_dir_GetBlob(fromFile, entry, &entrybuf); if (code) { if (DErrno) { printf @@ -512,7 +512,7 @@ DirSalvage(void *fromFile, void *toFile, afs_int32 vn, afs_int32 vu, if ((strcmp(tp, ".") != 0) && (strcmp(tp, "..") != 0)) { lfid[1] = ntohl(ep->fid.vnode); lfid[2] = ntohl(ep->fid.vunique); - code = Create(toFile, tname, lfid); + code = afs_dir_Create(toFile, tname, lfid); if (code) { printf ("Create of %s returned code %d, skipping to next hash chain.\n", diff --git a/src/dir/test/dtest.c b/src/dir/test/dtest.c index 13f19f367..e32abddb3 100644 --- a/src/dir/test/dtest.c +++ b/src/dir/test/dtest.c @@ -19,7 +19,7 @@ long fidCounter = 0; -typedef struct dirhandle { +typedef struct DirHandle { int fd; int uniq; } dirhandle; @@ -51,7 +51,7 @@ LookupDir(char *dname, char *ename) int code; OpenDir(dname, &dir); - code = Lookup(&dir, ename, fid); + code = afs_dir_Lookup(&dir, ename, fid); if (code) printf("lookup code %d\n", code); else { @@ -70,7 +70,7 @@ AddEntry(char *dname, char *ename) fid[1] = fidCounter++; fid[2] = 3; OpenDir(dname, &dir); - code = Create(&dir, ename, fid); + code = afs_dir_Create(&dir, ename, fid); if (code) printf("create code %d\n", code); DFlush(); @@ -90,7 +90,7 @@ ListDir(char *name) { dirhandle dir; OpenDir(name, &dir); - EnumerateDir(&dir, ListEntry, 0); + afs_dir_EnumerateDir(&dir, ListEntry, 0); } static void @@ -111,7 +111,8 @@ SalvageDir(char *iname, char *oname) afs_int32 myFid[3], parentFid[3]; OpenDir(iname, &in); - if (Lookup(&in, ".", myFid) || Lookup(&in, "..", parentFid)) { + if (afs_dir_Lookup(&in, ".", myFid) || + afs_dir_Lookup(&in, "..", parentFid)) { printf("Lookup of \".\" and/or \"..\" failed: "); printf("%d %d %d %d\n", myFid[1], myFid[2], parentFid[1], parentFid[2]); @@ -129,7 +130,7 @@ DelTest(char *dname, char *ename) int code; OpenDir(dname, &dir); - code = Delete(&dir, ename); + code = afs_dir_Delete(&dir, ename); if (code) printf("delete code is %d\n", code); DFlush(); @@ -146,12 +147,12 @@ CRTest(char *dname, char *ename, int count) CreateDir(dname, &dir); memset(fid, 0, sizeof(fid)); - MakeDir(&dir, fid, fid); + afs_dir_MakeDir(&dir, fid, fid); for (i = 0; i < count; i++) { sprintf(tbuffer, "%s%d", ename, i); fid[1] = fidCounter++; fid[2] = count; - code = Create(&dir, tbuffer, &fid); + code = afs_dir_Create(&dir, tbuffer, &fid); if (i % 100 == 0) { printf("#"); fflush(stdout); diff --git a/src/viced/afsfileprocs.c b/src/viced/afsfileprocs.c index 046aed2a1..8656c7a06 100644 --- a/src/viced/afsfileprocs.c +++ b/src/viced/afsfileprocs.c @@ -1413,7 +1413,7 @@ DeleteTarget(Vnode * parentptr, Volume * volptr, Vnode ** targetptr, /* check that the file is in the directory */ SetDirHandle(dir, parentptr); - if (Lookup(dir, Name, fileFid)) + if (afs_dir_Lookup(dir, Name, fileFid)) return (ENOENT); fileFid->Volume = V_id(volptr); @@ -1447,9 +1447,9 @@ DeleteTarget(Vnode * parentptr, Volume * volptr, Vnode ** targetptr, if (ChkForDir == MustBeDIR) { SetDirHandle(&childdir, *targetptr); - if (IsEmpty(&childdir) != 0) + if (afs_dir_IsEmpty(&childdir) != 0) return (EEXIST); - DZap((afs_int32 *) &childdir); + DZap(&childdir); FidZap(&childdir); (*targetptr)->delete = 1; } else if ((--(*targetptr)->disk.linkCount) == 0) @@ -1489,7 +1489,7 @@ DeleteTarget(Vnode * parentptr, Volume * volptr, Vnode ** targetptr, (*targetptr)->changed_newTime = 1; /* Status change of deleted file/dir */ - code = Delete(dir, (char *)Name); + code = afs_dir_Delete(dir, Name); if (code) { ViceLog(0, ("Error %d deleting %s\n", code, @@ -1533,7 +1533,7 @@ Update_ParentVnodeStatus(Vnode * parentptr, Volume * volptr, DirHandle * dir, #endif /* FS_STATS_DETAILED */ parentptr->disk.dataVersion++; - newlength = (afs_fsize_t) Length(dir); + newlength = (afs_fsize_t) afs_dir_Length(dir); /* * This is a called on both dir removals (i.e. remove, removedir, rename) but also in dir additions * (create, symlink, link, makedir) so we need to check if we have enough space @@ -1872,7 +1872,7 @@ Alloc_NewVnode(Vnode * parentptr, DirHandle * dir, Volume * volptr, /* add the name to the directory */ SetDirHandle(dir, parentptr); - if ((errorCode = Create(dir, (char *)Name, OutFid))) { + if ((errorCode = afs_dir_Create(dir, Name, OutFid))) { (*targetptr)->delete = 1; VAdjustDiskUsage(&temp, volptr, -BlocksPreallocatedForVnode, 0); IH_REALLYCLOSE((*targetptr)->handle); @@ -4034,7 +4034,7 @@ SAFSS_Rename(struct rx_call *acall, struct AFSFid *OldDirFid, char *OldName, SetDirHandle(&newdir, newvptr); /* Lookup the file to delete its vnode */ - if (Lookup(&olddir, OldName, &fileFid)) { + if (afs_dir_Lookup(&olddir, OldName, &fileFid)) { errorCode = ENOENT; goto Bad_Rename; } @@ -4074,7 +4074,7 @@ SAFSS_Rename(struct rx_call *acall, struct AFSFid *OldDirFid, char *OldName, } /* Lookup the new file */ - if (!(Lookup(&newdir, NewName, &newFileFid))) { + if (!(afs_dir_Lookup(&newdir, NewName, &newFileFid))) { if (readonlyServer) { errorCode = VREADONLY; goto Bad_Rename; @@ -4119,7 +4119,7 @@ SAFSS_Rename(struct rx_call *acall, struct AFSFid *OldDirFid, char *OldName, errorCode = EISDIR; goto Bad_Rename; } - if ((IsEmpty(&newfiledir))) { + if ((afs_dir_IsEmpty(&newfiledir))) { errorCode = EEXIST; goto Bad_Rename; } @@ -4182,7 +4182,7 @@ SAFSS_Rename(struct rx_call *acall, struct AFSFid *OldDirFid, char *OldName, } else { struct AFSFid unused; - code = Lookup(&filedir, "..", &unused); + code = afs_dir_Lookup(&filedir, "..", &unused); if (code == ENOENT) { /* only update .. if it doesn't already exist */ updatefile = 1; @@ -4203,7 +4203,7 @@ SAFSS_Rename(struct rx_call *acall, struct AFSFid *OldDirFid, char *OldName, doDelete = 0; if (newfileptr) { /* Delete NewName from its directory */ - code = Delete(&newdir, NewName); + code = afs_dir_Delete(&newdir, NewName); osi_Assert(code == 0); /* Drop the link count */ @@ -4247,11 +4247,11 @@ SAFSS_Rename(struct rx_call *acall, struct AFSFid *OldDirFid, char *OldName, * highly unlikely that it would work since it would involve issuing * another create. */ - if ((errorCode = Create(&newdir, (char *)NewName, &fileFid))) + if ((errorCode = afs_dir_Create(&newdir, NewName, &fileFid))) goto Bad_Rename; /* Delete the old name */ - osi_Assert(Delete(&olddir, (char *)OldName) == 0); + osi_Assert(afs_dir_Delete(&olddir, OldName) == 0); /* if the directory length changes, reflect it in the statistics */ #if FS_STATS_DETAILED @@ -4282,8 +4282,8 @@ SAFSS_Rename(struct rx_call *acall, struct AFSFid *OldDirFid, char *OldName, fileptr->changed_newTime = 1; /* status change of moved file */ /* fix .. to point to the correct place */ - Delete(&filedir, ".."); /* No assert--some directories may be bad */ - osi_Assert(Create(&filedir, "..", NewDirFid) == 0); + afs_dir_Delete(&filedir, ".."); /* No assert--some directories may be bad */ + osi_Assert(afs_dir_Create(&filedir, "..", NewDirFid) == 0); fileptr->disk.dataVersion++; /* if the parent directories are different the link counts have to be */ @@ -4731,7 +4731,7 @@ SAFSS_Link(struct rx_call *acall, struct AFSFid *DirFid, char *Name, /* add the name to the directory */ SetDirHandle(&dir, parentptr); - if ((errorCode = Create(&dir, (char *)Name, ExistingFid))) + if ((errorCode = afs_dir_Create(&dir, Name, ExistingFid))) goto Bad_Link; DFlush(); @@ -4948,9 +4948,9 @@ SAFSS_MakeDir(struct rx_call *acall, struct AFSFid *DirFid, char *Name, /* Actually create the New directory in the directory package */ SetDirHandle(&dir, targetptr); - osi_Assert(!(MakeDir(&dir, (afs_int32 *)OutFid, (afs_int32 *)DirFid))); + osi_Assert(!(afs_dir_MakeDir(&dir, (afs_int32 *)OutFid, (afs_int32 *)DirFid))); DFlush(); - VN_SET_LEN(targetptr, (afs_fsize_t) Length(&dir)); + VN_SET_LEN(targetptr, (afs_fsize_t) afs_dir_Length(&dir)); /* set up return status */ GetStatus(targetptr, OutFidStatus, rights, anyrights, parentptr); diff --git a/src/viced/viced.c b/src/viced/viced.c index e9770fd05..13ddbf5ee 100644 --- a/src/viced/viced.c +++ b/src/viced/viced.c @@ -2055,7 +2055,7 @@ main(int argc, char *argv[]) nice(-5); /* TODO: */ #endif #endif - osi_Assert(DInit(buffs) == 0); + DInit(buffs); #ifdef AFS_DEMAND_ATTACH_FS FS_STATE_INIT; #endif diff --git a/src/vol/vol-salvage.c b/src/vol/vol-salvage.c index d92bd5b9c..263117647 100644 --- a/src/vol/vol-salvage.c +++ b/src/vol/vol-salvage.c @@ -2953,7 +2953,7 @@ CopyAndSalvage(struct SalvInfo *salvinfo, struct DirSummary *dir) } vnode.cloned = 0; VNDISK_SET_INO(&vnode, newinode); - length = Length(&newdir); + length = afs_dir_Length(&newdir); VNDISK_SET_LEN(&vnode, length); lcode = IH_IWRITE(salvinfo->vnodeInfo[vLarge].handle, @@ -3007,7 +3007,7 @@ JudgeEntry(void *arock, char *name, afs_int32 vnodeNumber, } if (!Testing) { CopyOnWrite(salvinfo, dir); - osi_Assert(Delete(&dir->dirHandle, name) == 0); + osi_Assert(afs_dir_Delete(&dir->dirHandle, name) == 0); } return 0; } @@ -3039,7 +3039,7 @@ JudgeEntry(void *arock, char *name, afs_int32 vnodeNumber, if (!unique) { if (!Testing) { CopyOnWrite(salvinfo, dir); - osi_Assert(Delete(&dir->dirHandle, name) == 0); + osi_Assert(afs_dir_Delete(&dir->dirHandle, name) == 0); } return 0; } @@ -3069,9 +3069,9 @@ JudgeEntry(void *arock, char *name, afs_int32 vnodeNumber, fid.Vnode = vnodeNumber; fid.Unique = vnodeEssence->unique; CopyOnWrite(salvinfo, dir); - osi_Assert(Delete(&dir->dirHandle, name) == 0); + osi_Assert(afs_dir_Delete(&dir->dirHandle, name) == 0); if (!todelete) - osi_Assert(Create(&dir->dirHandle, name, &fid) == 0); + osi_Assert(afs_dir_Create(&dir->dirHandle, name, &fid) == 0); } if (todelete) return 0; /* no need to continue */ @@ -3084,10 +3084,10 @@ JudgeEntry(void *arock, char *name, afs_int32 vnodeNumber, Log("directory vnode %u.%u: bad '.' entry (was %u.%u); fixed\n", dir->vnodeNumber, dir->unique, vnodeNumber, unique); if (!Testing) { CopyOnWrite(salvinfo, dir); - osi_Assert(Delete(&dir->dirHandle, ".") == 0); + osi_Assert(afs_dir_Delete(&dir->dirHandle, ".") == 0); fid.Vnode = dir->vnodeNumber; fid.Unique = dir->unique; - osi_Assert(Create(&dir->dirHandle, ".", &fid) == 0); + osi_Assert(afs_dir_Create(&dir->dirHandle, ".", &fid) == 0); } vnodeNumber = fid.Vnode; /* Get the new Essence */ @@ -3112,8 +3112,8 @@ JudgeEntry(void *arock, char *name, afs_int32 vnodeNumber, Log("directory vnode %u.%u: bad '..' entry (was %u.%u); fixed\n", dir->vnodeNumber, dir->unique, vnodeNumber, unique); if (!Testing) { CopyOnWrite(salvinfo, dir); - osi_Assert(Delete(&dir->dirHandle, "..") == 0); - osi_Assert(Create(&dir->dirHandle, "..", &pa) == 0); + osi_Assert(afs_dir_Delete(&dir->dirHandle, "..") == 0); + osi_Assert(afs_dir_Create(&dir->dirHandle, "..", &pa) == 0); } vnodeNumber = pa.Vnode; /* Get the new Essence */ @@ -3127,7 +3127,7 @@ JudgeEntry(void *arock, char *name, afs_int32 vnodeNumber, } if (!Testing) { CopyOnWrite(salvinfo, dir); - osi_Assert(Delete(&dir->dirHandle, name) == 0); + osi_Assert(afs_dir_Delete(&dir->dirHandle, name) == 0); } vnodeEssence->claimed = 0; /* Not claimed: Orphaned */ vnodeEssence->todelete = 1; /* Will later delete vnode and decr inode */ @@ -3221,7 +3221,7 @@ JudgeEntry(void *arock, char *name, afs_int32 vnodeNumber, } if (!Testing) { CopyOnWrite(salvinfo, dir); - osi_Assert(Delete(&dir->dirHandle, name) == 0); + osi_Assert(afs_dir_Delete(&dir->dirHandle, name) == 0); } return 0; } @@ -3420,7 +3420,8 @@ SalvageDir(struct SalvInfo *salvinfo, char *name, VolumeId rwVid, judge_params.salvinfo = salvinfo; judge_params.dir = &dir; - osi_Assert(EnumerateDir(&dirHandle, JudgeEntry, &judge_params) == 0); + osi_Assert(afs_dir_EnumerateDir(&dirHandle, JudgeEntry, + &judge_params) == 0); } /* Delete the old directory if it was copied in order to salvage. @@ -3707,17 +3708,17 @@ CreateRootDir(struct SalvInfo *salvinfo, VolumeDiskData *volHeader, did.Volume = vid; did.Vnode = 1; did.Unique = 1; - if (MakeDir(&rootdir->dirHandle, (afs_int32*)&did, (afs_int32*)&did)) { + if (afs_dir_MakeDir(&rootdir->dirHandle, (afs_int32*)&did, (afs_int32*)&did)) { Log("CreateRootDir: MakeDir failed\n"); goto error; } - if (Create(&rootdir->dirHandle, "README.ROOTDIR", &readmeid)) { + if (afs_dir_Create(&rootdir->dirHandle, "README.ROOTDIR", &readmeid)) { Log("CreateRootDir: Create failed\n"); goto error; } DFlush(); - length = Length(&rootdir->dirHandle); - DZap((void *)&rootdir->dirHandle); + length = afs_dir_Length(&rootdir->dirHandle); + DZap(&rootdir->dirHandle); /* create the new root dir vnode */ rootvnode = calloc(1, SIZEOF_LARGEDISKVNODE); @@ -3967,8 +3968,8 @@ SalvageVolume(struct SalvInfo *salvinfo, struct InodeSummary *rwIsp, IHandle_t * &salvinfo->VolumeChanged); pa.Vnode = LFVnode; pa.Unique = LFUnique; - osi_Assert(Delete(&dh, "..") == 0); - osi_Assert(Create(&dh, "..", &pa) == 0); + osi_Assert(afs_dir_Delete(&dh, "..") == 0); + osi_Assert(afs_dir_Create(&dh, "..", &pa) == 0); /* The original parent's link count was decremented above. * Here we increment the new parent's link count. @@ -3991,7 +3992,7 @@ SalvageVolume(struct SalvInfo *salvinfo, struct InodeSummary *rwIsp, IHandle_t * ThisVnode, ThisUnique); CopyOnWrite(salvinfo, &rootdir); - code = Create(&rootdir.dirHandle, npath, &pa); + code = afs_dir_Create(&rootdir.dirHandle, npath, &pa); if (!code) break; diff --git a/src/volser/vol_split.c b/src/volser/vol_split.c index 9bb5d558a..f862f8927 100644 --- a/src/volser/vol_split.c +++ b/src/volser/vol_split.c @@ -485,7 +485,7 @@ findName(Volume *vol, struct VnodeDiskObject *vd, afs_uint32 vN, ino = VNDISK_GET_INO(vd); SetSalvageDirHandle(&dir, V_id(vol), V_device(vol), ino); - code = InverseLookup(&dir, vN, un, name, length); + code = afs_dir_InverseLookup(&dir, vN, un, name, length); FidZap(&dir); return code; } @@ -597,13 +597,13 @@ createMountpoint(Volume *vol, Volume *newvol, struct VnodeDiskObject *parent, ino = VNDISK_GET_INO(parent); SetSalvageDirHandle(&dir, V_id(vol), V_device(vol), ino); - code = Delete(&dir, name); + code = afs_dir_Delete(&dir, name); if (code) { Log("splitvolume: couldn't delete directory entry for %s in %u.%u.%u, code = %d\n", name, V_id(vol), vN, parent->uniquifier, code); return code; } - code = Create(&dir, name, &fid); + code = afs_dir_Create(&dir, name, &fid); FidZap(&dir); class = vLarge; diff --git a/src/volser/volprocs.c b/src/volser/volprocs.c index 1ada96959..e55a5a227 100644 --- a/src/volser/volprocs.c +++ b/src/volser/volprocs.c @@ -340,10 +340,10 @@ ViceCreateRoot(Volume *vp) did.Vnode = (VnodeId) 1; did.Unique = 1; - osi_Assert(!(MakeDir(&dir, (afs_int32 *)&did, (afs_int32 *)&did))); + osi_Assert(!(afs_dir_MakeDir(&dir, (afs_int32 *)&did, (afs_int32 *)&did))); DFlush(); /* flush all modified dir buffers out */ - DZap((afs_int32 *)&dir); /* Remove all buffers for this dir */ - length = Length(&dir); /* Remember size of this directory */ + DZap(&dir); /* Remove all buffers for this dir */ + length = afs_dir_Length(&dir); /* Remember size of this directory */ FidZap(&dir); /* Done with the dir handle obtained via SetSalvageDirHandle() */ -- 2.39.5