struct nameidata *ndp;
{
int code;
+ char aname[MAXNAMLEN + 1]; /* XXX */
+ struct vcache **avcp = (struct vcache **)&(ndp->ni_vp);
+ struct ucred *acred = ndp->ni_cred;
+ int wantparent = ndp->ni_nameiop & WANTPARENT;
+ int opflag = ndp->ni_nameiop & OPFLAG;
AFS_GLOCK();
- code = afs_lookup(adp, ndp);
+ memcpy(aname, ndp->ni_ptr, ndp->ni_namelen);
+ aname[ndp->ni_namelen] = '\0';
+ code = afs_lookup(adp, aname, avcp, acred, opflag, wantparent);
AFS_GUNLOCK();
return code;
}
struct vattr *attrs;
{
int code;
+ register struct vcache *adp = VTOAFS(ndp->ni_dvp);
+ char *aname = ndp->ni_dent.d_name;
+ enum vcexcl aexcl = NONEXCL; /* XXX - create called properly */
+ int amode = 0; /* XXX - checked in higher level */
+ struct vcache **avcp = (struct vcache **)&(ndp->ni_vp);
+ struct ucred *acred = ndp->ni_cred;
AFS_GLOCK();
- code = afs_create(ndp, attrs);
+ code = afs_create(adp, aname, attrs, aexcl,
+ amode, avcp, acred);
+
AFS_GUNLOCK();
+ afs_PutVCache(adp);
return code;
}
struct nameidata *ndp;
{
int code;
+ register struct vcache *adp = VTOAFS(ndp->ni_dvp);
+ char *aname = ndp->ni_dent.d_name;
+ struct ucred *acred = ndp->ni_cred;
AFS_GLOCK();
- code = afs_remove(ndp);
+ code = afs_remove(adp, aname, acred);
+ afs_PutVCache(adp);
AFS_GUNLOCK();
return code;
}
struct nameidata *ndp;
{
int code;
+ struct vcache *adp = VTOAFS(ndp->ni_dvp);
+ char *aname = ndp->ni_dent.d_name;
+ struct ucred *acred = ndp->ni_cred;
AFS_GLOCK();
- code = afs_link(avc, ndp);
+ code = afs_link(avc, adp, aname, acred);
AFS_GUNLOCK();
+ afs_PutVCache(adp);
return code;
}
struct nameidata *fndp, *tndp;
{
int code;
+ struct vcache *aodp = VTOAFS(fndp->ni_dvp);
+ char *aname1 = fndp->ni_dent.d_name;
+ struct vcache *andp = VTOAFS(tndp->ni_dvp);
+ char *aname2 = tndp->ni_dent.d_name;
+ struct ucred *acred = tndp->ni_cred;
AFS_GLOCK();
- code = afs_rename(fndp, tndp);
+ code = afs_rename(aodp, aname1, andp, aname2, acred);
+ AFS_RELE(tndp->ni_dvp);
+ if (tndp->ni_vp != NULL) {
+ AFS_RELE(tndp->ni_vp);
+ }
+ AFS_RELE(fndp->ni_dvp);
+ AFS_RELE(fndp->ni_vp);
AFS_GUNLOCK();
return code;
}
struct vattr *attrs;
{
int code;
+ register struct vcache *adp = VTOAFS(ndp->ni_dvp);
+ char *aname = ndp->ni_dent.d_name;
+ register struct vcache **avcp = (struct vcache **)&(ndp->ni_vp);
+ struct ucred *acred = ndp->ni_cred;
AFS_GLOCK();
- code = afs_mkdir(ndp, attrs);
+ code = afs_mkdir(adp, aname, attrs, avcp, acred);
+ AFS_RELE(adp);
AFS_GUNLOCK();
return code;
}
struct nameidata *ndp;
{
int code;
+ register struct vcache *adp = VTOAFS(ndp->ni_dvp);
+ char *aname = ndp->ni_dent.d_name;
+ struct ucred *acred = ndp->ni_cred;
AFS_GLOCK();
- code = afs_rmdir(ndp);
+ code = afs_rmdir(adp, aname, acred);
+ afs_PutVCache(adp);
+ afs_PutVCache(ndp->ni_vp);
AFS_GUNLOCK();
return code;
}
register char *atargetName;
{
int code;
+ register struct vcache *adp = VTOAFS(ndp->ni_dvp);
+ char *aname = ndp->ni_dent.d_name;
+ struct ucred *acred = ndp->ni_cred;
AFS_GLOCK();
- code = afs_symlink(ndp, attrs, atargetName);
+ code = afs_symlink(adp, aname, attrs, atargetName, acred);
+ AFS_RELE(ndp->ni_dvp);
AFS_GUNLOCK();
return code;
}
* I think we can get away without it, but I'm not sure. Note that
* afs_setattr is called in here for truncation.
*/
-#ifdef AFS_OSF_ENV
-int
-afs_create(struct nameidata *ndp, struct vattr *attrs)
-#else /* AFS_OSF_ENV */
#ifdef AFS_SGI64_ENV
int
afs_create(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, int flags,
enum vcexcl aexcl, int amode, struct vcache **avcp,
struct AFS_UCRED *acred)
#endif /* AFS_SGI64_ENV */
-#endif /* AFS_OSF_ENV */
{
-#ifdef AFS_OSF_ENV
- register struct vcache *adp = VTOAFS(ndp->ni_dvp);
- char *aname = ndp->ni_dent.d_name;
- enum vcexcl aexcl = NONEXCL; /* XXX - create called properly */
- int amode = 0; /* XXX - checked in higher level */
- struct vcache **avcp = (struct vcache **)&(ndp->ni_vp);
- struct ucred *acred = ndp->ni_cred;
-#endif
-
afs_int32 origCBs, origZaps, finalZaps;
struct vrequest treq;
register afs_int32 code;
(tc, code, &adp->fid, &treq, AFS_STATS_FS_RPCIDX_CREATEFILE,
SHARED_LOCK, NULL));
-#if defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV)
- if (code == EEXIST && aexcl == NONEXCL) {
- /* This lookup was handled in the common vn_open code in the
- * vnode layer */
- if (tdc) {
- ReleaseSharedLock(&tdc->lock);
- afs_PutDCache(tdc);
- }
- ReleaseWriteLock(&adp->lock);
- goto done;
- }
-#else /* AFS_OSF_ENV */
+ if (code == EEXIST &&
#ifdef AFS_SGI64_ENV
- if (code == EEXIST && !(flags & VEXCL)) {
+ !(flags & VEXCL)
#else /* AFS_SGI64_ENV */
- if (code == EEXIST && aexcl == NONEXCL) {
-#endif /* AFS_SGI64_ENV */
+ aexcl == NONEXCL
+#endif
+ ) {
/* if we get an EEXIST in nonexcl mode, just do a lookup */
if (tdc) {
ReleaseSharedLock(&tdc->lock);
afs_PutDCache(tdc);
}
ReleaseWriteLock(&adp->lock);
+#if !(defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV))
#if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV)
#if defined(AFS_SGI64_ENV)
- code =
- afs_lookup(VNODE_TO_FIRST_BHV((vnode_t *) adp), aname, avcp, NULL,
- 0, NULL, acred);
+ code = afs_lookup(VNODE_TO_FIRST_BHV((vnode_t *) adp), aname, avcp,
+ NULL, 0, NULL, acred);
#else
code = afs_lookup(adp, aname, avcp, NULL, 0, NULL, acred);
#endif /* AFS_SGI64_ENV */
#else /* SUN5 || SGI */
code = afs_lookup(adp, aname, avcp, acred);
#endif /* SUN5 || SGI */
+#endif /* !(AFS_OSF_ENV || AFS_DARWIN_ENV) */
goto done;
}
-#endif /* AFS_OSF_ENV */
if (code) {
if (code < 0) {
ObtainWriteLock(&afs_xcbhash, 488);
code = afs_CheckCode(code, &treq, 20);
done2:
-#ifdef AFS_OSF_ENV
- afs_PutVCache(adp);
-#endif /* AFS_OSF_ENV */
-
return code;
}
/* don't set CDirty in here because RPC is called synchronously */
int
-#ifdef AFS_OSF_ENV
-afs_mkdir(ndp, attrs)
- struct nameidata *ndp;
- struct vattr *attrs;
+afs_mkdir(OSI_VC_DECL(adp), char *aname, struct vattr *attrs,
+ register struct vcache **avcp, struct AFS_UCRED *acred)
{
- register struct vcache *adp = VTOAFS(ndp->ni_dvp);
- char *aname = ndp->ni_dent.d_name;
- register struct vcache **avcp = (struct vcache **)&(ndp->ni_vp);
- struct ucred *acred = ndp->ni_cred;
-#else /* AFS_OSF_ENV */
-afs_mkdir(OSI_VC_ARG(adp), aname, attrs, avcp, acred)
- OSI_VC_DECL(adp);
- register struct vcache **avcp;
- char *aname;
- struct vattr *attrs;
- struct AFS_UCRED *acred;
-{
-#endif
struct vrequest treq;
register afs_int32 code;
register struct conn *tc;
afs_PutFakeStat(&fakestate);
code = afs_CheckCode(code, &treq, 26);
done2:
-#ifdef AFS_OSF_ENV
- AFS_RELE(ndp->ni_dvp);
-#endif /* AFS_OSF_ENV */
return code;
}
int
-#ifdef AFS_OSF_ENV
-afs_rmdir(ndp)
- struct nameidata *ndp;
-{
- register struct vcache *adp = VTOAFS(ndp->ni_dvp);
- char *aname = ndp->ni_dent.d_name;
- struct ucred *acred = ndp->ni_cred;
-#else /* AFS_OSF_ENV */
/* don't set CDirty in here because RPC is called synchronously */
#if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV)
-afs_rmdir(OSI_VC_ARG(adp), aname, cdirp, acred)
- struct vnode *cdirp;
+afs_rmdir(OSI_VC_DECL(adp), char *aname, struct vnode *cdirp,
+ struct AFS_UCRED *acred)
#else
-afs_rmdir(adp, aname, acred)
+afs_rmdir(OSI_VC_DECL(adp), char *aname, struct AFS_UCRED *acred)
#endif
- OSI_VC_DECL(adp);
- char *aname;
- struct AFS_UCRED *acred;
{
-#endif
struct vrequest treq;
register struct dcache *tdc;
register struct vcache *tvc = NULL;
afs_PutFakeStat(&fakestate);
code = afs_CheckCode(code, &treq, 27);
done2:
-#ifdef AFS_OSF_ENV
- afs_PutVCache(adp);
- afs_PutVCache(ndp->ni_vp);
-#endif /* AFS_OSF_ENV */
return code;
}
extern int afs_NFSRootOnly; /* 1 => only allow NFS mounts of /afs. */
-int
#if !defined(AFS_DEC_ENV) && !defined(AFS_ATHENA_ENV)
+int
#ifdef AFS_AIX41_ENV
-afs_fid(OSI_VC_ARG(avc), fidpp, credp)
- struct ucred *credp;
+afs_fid(OSI_VC_DECL(avc), struct fid *fidpp, struct ucred *credp)
+#elif defined(AFS_OSF_ENV) || defined(AFS_SUN54_ENV)
+afs_fid(OSI_VC_DECL(avc), struct fid *fidpp)
#else
-afs_fid(OSI_VC_ARG(avc), fidpp)
+afs_fid(OSI_VC_DECL(avc), struct fid **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;
-#else
- struct fid **fidpp;
-#endif
{
struct SmallFid Sfid;
long addr[2];
* RPC is called synchronously. */
int
-#ifdef AFS_OSF_ENV
-afs_link(avc, ndp)
- struct vcache *avc;
- struct nameidata *ndp;
-{
- struct vcache *adp = VTOAFS(ndp->ni_dvp);
- char *aname = ndp->ni_dent.d_name;
- struct ucred *acred = ndp->ni_cred;
-#else /* AFS_OSF_ENV */
#if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV)
afs_link(OSI_VC_ARG(adp), avc, aname, acred)
#else
char *aname;
struct AFS_UCRED *acred;
{
-#endif
struct vrequest treq;
register struct dcache *tdc;
register afs_int32 code;
afs_PutFakeStat(&vfakestate);
afs_PutFakeStat(&dfakestate);
done2:
-#ifdef AFS_OSF_ENV
- afs_PutVCache(adp);
-#endif /* AFS_OSF_ENV */
return code;
}
static int AFSDOBULK = 1;
int
-#ifdef AFS_OSF_ENV
-afs_lookup(adp, ndp)
- struct vcache *adp;
- struct nameidata *ndp;
-{
- char aname[MAXNAMLEN + 1]; /* XXX */
- struct vcache **avcp = (struct vcache **)&(ndp->ni_vp);
- struct ucred *acred = ndp->ni_cred;
- int wantparent = ndp->ni_nameiop & WANTPARENT;
- int opflag = ndp->ni_nameiop & OPFLAG;
-#else /* AFS_OSF_ENV */
-#if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV)
-afs_lookup(OSI_VC_ARG(adp), aname, avcp, pnp, flags, rdir, acred)
- struct pathname *pnp;
- int flags;
- struct vnode *rdir;
-#else
-#if defined(UKERNEL)
-afs_lookup(adp, aname, avcp, acred, flags)
- int flags;
+#ifdef AFS_OSF_ENV
+afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED *acred, int opflag, int wantparent)
+#elif defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV)
+afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct pathname *pnp, int flags, struct vnode *rdir, struct AFS_UCRED *acred)
+#elif defined(UKERNEL)
+afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED *acred, int flags)
#else
-afs_lookup(adp, aname, avcp, acred)
-#endif /* UKERNEL */
-#endif /* SUN5 || SGI */
- OSI_VC_DECL(adp);
- struct vcache **avcp;
- char *aname;
- struct AFS_UCRED *acred;
-{
+afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED *acred)
#endif
+{
struct vrequest treq;
char *tname = NULL;
register struct vcache *tvc = 0;
#ifdef AFS_OSF_ENV
ndp->ni_dvp = AFSTOV(adp);
- memcpy(aname, ndp->ni_ptr, ndp->ni_namelen);
- aname[ndp->ni_namelen] = '\0';
#endif /* AFS_OSF_ENV */
#if defined(AFS_DARWIN_ENV)
/* Note that we don't set CDirty here, this is OK because the unlink
* RPC is called synchronously */
int
-#ifdef AFS_OSF_ENV
-afs_remove(ndp)
- struct nameidata *ndp;
-{
- register struct vcache *adp = VTOAFS(ndp->ni_dvp);
- char *aname = ndp->ni_dent.d_name;
- struct ucred *acred = ndp->ni_cred;
-#else /* AFS_OSF_ENV */
afs_remove(OSI_VC_ARG(adp), aname, acred)
OSI_VC_DECL(adp);
char *aname;
struct AFS_UCRED *acred;
{
-#endif
struct vrequest treq;
register struct dcache *tdc;
struct VenusFid unlinkFid;
if ((code = afs_InitReq(&treq, acred))) {
#ifdef AFS_OSF_ENV
- afs_PutVCache(adp);
afs_PutVCache(tvc);
#endif
return code;
if (code) {
afs_PutFakeStat(&fakestate);
#ifdef AFS_OSF_ENV
- afs_PutVCache(adp);
afs_PutVCache(tvc);
#endif
return code;
code = afs_DynrootVOPRemove(adp, acred, aname);
afs_PutFakeStat(&fakestate);
#ifdef AFS_OSF_ENV
- afs_PutVCache(adp);
afs_PutVCache(tvc);
#endif
return code;
}
-#if 0
- if (adp->mvstat == 2) {
- afs_PutFakeStat(&fakestate);
-#ifdef AFS_OSF_ENV
- afs_PutVCache(adp);
- afs_PutVCache(tvc);
-#endif
- return EISDIR;
- }
-#endif
if (strlen(aname) > AFSNAMEMAX) {
afs_PutFakeStat(&fakestate);
#ifdef AFS_OSF_ENV
- afs_PutVCache(adp);
afs_PutVCache(tvc);
#endif
return ENAMETOOLONG;
#ifdef AFS_OSF_ENV
tvc = VTOAFS(ndp->ni_vp); /* should never be null */
if (code) {
- afs_PutVCache(adp);
afs_PutVCache(tvc);
afs_PutFakeStat(&fakestate);
return afs_CheckCode(code, &treq, 22);
*/
if (adp->states & CRO) {
#ifdef AFS_OSF_ENV
- afs_PutVCache(adp);
afs_PutVCache(tvc);
#endif
code = EROFS;
} else {
code = afsremove(adp, tdc, tvc, aname, acred, &treq);
}
-#ifdef AFS_OSF_ENV
- afs_PutVCache(adp);
-#endif /* AFS_OSF_ENV */
afs_PutFakeStat(&fakestate);
return code;
}
}
int
-#ifdef AFS_OSF_ENV
-afs_rename(fndp, tndp)
- struct nameidata *fndp, *tndp;
-{
- struct vcache *aodp = VTOAFS(fndp->ni_dvp);
- char *aname1 = fndp->ni_dent.d_name;
- struct vcache *andp = VTOAFS(tndp->ni_dvp);
- char *aname2 = tndp->ni_dent.d_name;
- struct ucred *acred = tndp->ni_cred;
-#else /* AFS_OSF_ENV */
#if defined(AFS_SGI_ENV)
-afs_rename(OSI_VC_ARG(aodp), aname1, andp, aname2, npnp, acred)
- struct pathname *npnp;
+afs_rename(OSI_VC_DECL(aodp), char *aname1, struct vcache *andp, achar *name2, struct pathname *npnp, struct AFS_UCRED *acred)
#else
-afs_rename(OSI_VC_ARG(aodp), aname1, andp, aname2, acred)
+afs_rename(OSI_VC_DECL(aodp), char *aname1, struct vcache *andp, char *aname2, struct AFS_UCRED *acred)
#endif
- OSI_VC_DECL(aodp);
- struct vcache *andp;
- char *aname1, *aname2;
- struct AFS_UCRED *acred;
{
-#endif
register afs_int32 code;
struct afs_fakestat_state ofakestate;
struct afs_fakestat_state nfakestate;
done:
afs_PutFakeStat(&ofakestate);
afs_PutFakeStat(&nfakestate);
-#ifdef AFS_OSF_ENV
- AFS_RELE(tndp->ni_dvp);
- if (tndp->ni_vp != NULL) {
- AFS_RELE(tndp->ni_vp);
- }
- AFS_RELE(fndp->ni_dvp);
- AFS_RELE(fndp->ni_vp);
-#endif /* AFS_OSF_ENV */
code = afs_CheckCode(code, &treq, 25);
return code;
}
/* don't set CDirty in here because RPC is called synchronously */
int afs_symlink
-#ifdef AFS_OSF_ENV
- (ndp, attrs, atargetName)
- struct nameidata *ndp;
- struct vattr *attrs;
- register char *atargetName;
-{
- register struct vcache *adp = VTOAFS(ndp->ni_dvp);
- char *aname = ndp->ni_dent.d_name;
- struct ucred *acred = ndp->ni_cred;
-#else /* AFS_OSF_ENV */
(OSI_VC_ARG(adp), aname, attrs, atargetName, acred)
OSI_VC_DECL(adp);
char *atargetName;
struct vattr *attrs;
struct AFS_UCRED *acred;
{
-#endif
afs_uint32 now = 0;
struct vrequest treq;
afs_int32 code;
afs_PutVolume(volp, READ_LOCK);
code = afs_CheckCode(code, &treq, 31);
done2:
-#ifdef AFS_OSF_ENV
- AFS_RELE(ndp->ni_dvp);
-#endif /* AFS_OSF_ENV */
return code;
}
return code;
}
-
-
-#if !defined (AFS_AIX_ENV) && !defined (AFS_HPUX_ENV) && !defined (AFS_SUN5_ENV) && !defined(AFS_SGI_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN_ENV) && !defined(AFS_XBSD_ENV)
+#ifdef AFS_OSF_ENV
#ifdef AFS_DUX50_ENV
#define vno_close(X) vn_close((X), 0, NOCRED)
#elif defined(AFS_DUX40_ENV)
afd->f_flag &= ~(FSHLOCK | FEXLOCK);
code = vno_close(afd);
if (flags)
-#if defined(AFS_SGI_ENV) || defined(AFS_OSF_ENV) || defined(AFS_SUN_ENV) && !defined(AFS_SUN5_ENV)
HandleFlock(tvc, LOCK_UN, &treq, u.u_procp->p_pid,
1 /*onlymine */ );
-#else
- HandleFlock(tvc, LOCK_UN, &treq, 0, 1 /*onlymine */ );
-#endif
#ifdef AFS_DEC_ENV
grele((struct gnode *)tvc);
#else
int
#ifdef AFS_OSF_ENV
-afs_fsync(avc, fflags, acred, waitfor)
- int fflags;
- int waitfor;
+afs_fsync(OSI_VC_DECL(avc), int fflags, struct AFS_UCRED *acred, int waitfor)
#else /* AFS_OSF_ENV */
#if defined(AFS_SGI_ENV) || defined(AFS_SUN53_ENV)
-afs_fsync(OSI_VC_ARG(avc), flag, acred
+afs_fsync(OSI_VC_DECL(avc), int flag, struct AFS_UCRED *acred
#ifdef AFS_SGI65_ENV
- , start, stop
-#endif
+ , off_t start, off_t stop
+#endif /* AFS_SGI65_ENV */
)
-#else
-afs_fsync(avc, acred)
-#endif
-#endif
-OSI_VC_DECL(avc);
- struct AFS_UCRED *acred;
-#if defined(AFS_SGI_ENV) || defined(AFS_SUN53_ENV)
- int flag;
-#ifdef AFS_SGI65_ENV
- off_t start, stop;
-#endif
+#else /* !OSF && !SUN53 && !SGI */
+afs_fsync(OSI_VC_DECL(avc), struct AFS_UCRED *acred)
+#endif
#endif
{
register afs_int32 code;