* Implements:
* afs_fid
*
- * afs_vptofh (DUX) is now in DUX/osi_vfsops.c
*/
#include <afsconfig.h>
#include "afs/param.h"
-RCSID("$Header$");
-#if !defined(AFS_DUX40_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN_ENV)
+#if !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN_ENV) && !defined(AFS_OBSD_ENV) && !defined(AFS_NBSD_ENV)
#include "afs/sysincludes.h" /* Standard vendor system headers */
#include "afsincludes.h" /* Afs-based standard headers */
-#include "afs/afs_stats.h" /* statistics */
+#include "afs/afs_stats.h" /* statistics */
#include "afs/afs_cbqueue.h"
#include "afs/nfsclient.h"
#include "afs/afs_osidnlc.h"
-int afs_fid_vnodeoverflow=0, afs_fid_uniqueoverflow=0;
+int afs_fid_vnodeoverflow = 0, afs_fid_uniqueoverflow = 0;
/*
* afs_fid
#endif
-extern int afs_NFSRootOnly; /* 1 => only allow NFS mounts of /afs. */
-#if !defined(AFS_DEC_ENV) && !defined(AFS_ATHENA_ENV)
+extern int afs_NFSRootOnly; /* 1 => only allow NFS mounts of /afs. */
+
+#if !defined(AFS_ATHENA_ENV)
+int
#ifdef AFS_AIX41_ENV
-afs_fid(OSI_VC_ARG(avc), fidpp, credp)
- struct ucred *credp ;
-#else
-afs_fid(OSI_VC_ARG(avc), fidpp)
-#endif /* AFS_AIX41_ENV */
-OSI_VC_DECL(avc);
-#if defined(AFS_AIX_ENV) || defined(AFS_OSF_ENV) || defined(AFS_SUN54_ENV)
-struct fid *fidpp;
+afs_fid(OSI_VC_DECL(avc), struct fid *fidpp, struct ucred *credp)
+#elif defined(AFS_SUN5_ENV)
+afs_fid(OSI_VC_DECL(avc), struct fid *fidpp)
#else
-struct fid **fidpp;
-#endif
+afs_fid(OSI_VC_DECL(avc), struct fid **fidpp)
+#endif /* AFS_AIX41_ENV */
{
struct SmallFid Sfid;
long addr[2];
- register struct cell *tcell;
+ struct cell *tcell;
extern struct vcache *afs_globalVp;
int SizeOfSmallFid = SIZEOF_SMALLFID;
int rootvp = 0;
- OSI_VC_CONVERT(avc)
+ OSI_VC_CONVERT(avc);
AFS_STATCNT(afs_fid);
- if (afs_shuttingdown) return EIO;
+ if (afs_shuttingdown)
+ return EIO;
- if (afs_NFSRootOnly && (avc == afs_globalVp)) rootvp = 1;
+ if (afs_NFSRootOnly && (avc == afs_globalVp))
+ rootvp = 1;
if (!afs_NFSRootOnly || rootvp
#ifdef AFS_AIX41_ENV
|| USE_SMALLFID(credp)
#endif
) {
- tcell = afs_GetCell(avc->fid.Cell, READ_LOCK);
- Sfid.Volume = avc->fid.Fid.Volume;
- Sfid.Vnode = avc->fid.Fid.Vnode;
- Sfid.CellAndUnique = ((tcell->cellIndex << 24) +
- (avc->fid.Fid.Unique & 0xffffff));
+ tcell = afs_GetCell(avc->f.fid.Cell, READ_LOCK);
+ Sfid.Volume = avc->f.fid.Fid.Volume;
+ Sfid.Vnode = avc->f.fid.Fid.Vnode;
+ Sfid.CellAndUnique =
+ ((tcell->cellIndex << 24) + (avc->f.fid.Fid.Unique & 0xffffff));
afs_PutCell(tcell, READ_LOCK);
- if (avc->fid.Fid.Vnode > 0xffff)
+ if (avc->f.fid.Fid.Vnode > 0xffff)
afs_fid_vnodeoverflow++;
- if (avc->fid.Fid.Unique > 0xffffff)
+ if (avc->f.fid.Fid.Unique > 0xffffff)
afs_fid_uniqueoverflow++;
} else {
-#if defined(AFS_SUN57_64BIT_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZPTR == 64))
- addr[1] = (long)AFS_XLATOR_MAGIC << 48 ;
+#if defined(AFS_SUN5_64BIT_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZPTR == 64))
+ addr[1] = (long)AFS_XLATOR_MAGIC << 48;
#else /* defined(AFS_SGI61_ENV) && (_MIPS_SZPTR == 64) */
addr[1] = AFS_XLATOR_MAGIC;
SizeOfSmallFid = sizeof(addr);
addr[0] = (long)avc;
#ifndef AFS_AIX41_ENV
/* No post processing, so don't hold ref count. */
- VN_HOLD(AFSTOV(avc));
+ AFS_FAST_HOLD(avc);
#endif
}
-#if defined(AFS_AIX_ENV) || defined(AFS_SUN54_ENV)
+#if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV)
/* Use the fid pointer passed to us. */
fidpp->fid_len = SizeOfSmallFid;
if (afs_NFSRootOnly) {
if (rootvp
#ifdef AFS_AIX41_ENV
- || USE_SMALLFID(credp)
+ || USE_SMALLFID(credp)
#endif
) {
- memcpy(fidpp->fid_data, (caddr_t)&Sfid, SizeOfSmallFid);
+ memcpy(fidpp->fid_data, (caddr_t) & Sfid, SizeOfSmallFid);
} else {
- memcpy(fidpp->fid_data, (caddr_t)addr, SizeOfSmallFid);
+ memcpy(fidpp->fid_data, (caddr_t) addr, SizeOfSmallFid);
}
} else {
- memcpy(fidpp->fid_data, (caddr_t)&Sfid, SizeOfSmallFid);
+ memcpy(fidpp->fid_data, (caddr_t) & Sfid, SizeOfSmallFid);
}
#else
/* malloc a fid pointer ourselves. */
- *fidpp = (struct fid *) AFS_KALLOC(SizeOfSmallFid+2);
+ *fidpp = (struct fid *)AFS_KALLOC(SizeOfSmallFid + 2);
(*fidpp)->fid_len = SizeOfSmallFid;
if (afs_NFSRootOnly) {
if (rootvp) {
memcpy((*fidpp)->fid_data, (char *)&Sfid, SizeOfSmallFid);
} else {
- memcpy((*fidpp)->fid_data, (char *)addr, SizeOfSmallFid);
+ memcpy((*fidpp)->fid_data, (char *)addr, SizeOfSmallFid);
}
} else {
memcpy((*fidpp)->fid_data, (char *)&Sfid, SizeOfSmallFid);
#endif
-#endif /* !AFS_DUX40_ENV && !AFS_LINUX20_ENV */
+#endif /* !AFS_LINUX20_ENV */