AFS_STATCNT(afs_create);
- if (code = afs_InitReq(&treq, acred)) return code;
+ if (code = afs_InitReq(&treq, acred))
+ goto done2;
+
afs_Trace3(afs_iclSetp, CM_TRACE_CREATE, ICL_TYPE_POINTER, adp,
ICL_TYPE_STRING, aname, ICL_TYPE_INT32, amode);
#ifdef AFS_OSF_ENV
if (!code && !strcmp(aname, "core"))
tvc->states |= CCore1;
+#endif
+
+ code = afs_CheckCode(code, &treq, 20);
+
+done2:
+#ifdef AFS_OSF_ENV
afs_PutVCache(adp, 0);
#endif /* AFS_OSF_ENV */
- code = afs_CheckCode(code, &treq, 20);
return code;
}
afs_Trace2(afs_iclSetp, CM_TRACE_MKDIR, ICL_TYPE_POINTER, adp,
ICL_TYPE_STRING, aname);
- if (code = afs_InitReq(&treq, acred)) return code;
+ if (code = afs_InitReq(&treq, acred))
+ goto done2;
if (!afs_ENameOK(aname)) {
code = EINVAL;
}
else code = ENOENT;
done:
+ code = afs_CheckCode(code, &treq, 26);
+done2:
#ifdef AFS_OSF_ENV
AFS_RELE(ndp->ni_dvp);
#endif /* AFS_OSF_ENV */
- code = afs_CheckCode(code, &treq, 26);
return code;
}
afs_Trace2(afs_iclSetp, CM_TRACE_RMDIR, ICL_TYPE_POINTER, adp,
ICL_TYPE_STRING, aname);
- if (code = afs_InitReq(&treq, acred)) return code;
+ if (code = afs_InitReq(&treq, acred))
+ goto done2;
+
code = afs_VerifyVCache(adp, &treq);
if (code) goto done;
code = 0;
done:
+ code = afs_CheckCode(code, &treq, 27);
+done2:
#ifdef AFS_OSF_ENV
afs_PutVCache(adp, 0);
afs_PutVCache(ndp->ni_vp, 0);
#endif /* AFS_OSF_ENV */
- code = afs_CheckCode(code, &treq, 27);
return code;
}
afs_Trace3(afs_iclSetp, CM_TRACE_LINK, ICL_TYPE_POINTER, adp,
ICL_TYPE_POINTER, avc, ICL_TYPE_STRING, aname);
/* create a hard link; new entry is aname in dir adp */
- if (code = afs_InitReq(&treq, acred)) return code;
+ if (code = afs_InitReq(&treq, acred))
+ goto done2;
+
if (avc->fid.Cell != adp->fid.Cell || avc->fid.Fid.Volume != adp->fid.Fid.Volume) {
code = EXDEV;
goto done;
ReleaseWriteLock(&avc->lock);
code = 0;
done:
+ code = afs_CheckCode(code, &treq, 24);
+done2:
#ifdef AFS_OSF_ENV
afs_PutVCache(adp, WRITE_LOCK);
#endif /* AFS_OSF_ENV */
- return afs_CheckCode(code, &treq, 24);
+ return code;
}
ICL_TYPE_STRING, aname);
/* Check if this is dynroot */
- if (afs_IsDynroot(adp))
+ if (afs_IsDynroot(adp)) {
+#ifdef AFS_OSF_ENV
+ afs_PutVCache(adp, 0);
+ afs_PutVCache(tvc, 0);
+#endif
return afs_DynrootVOPRemove(adp, acred, aname);
+ }
- if (code = afs_InitReq(&treq, acred))
+ if (code = afs_InitReq(&treq, acred)) {
+#ifdef AFS_OSF_ENV
+ afs_PutVCache(adp, 0);
+ afs_PutVCache(tvc, 0);
+#endif
return code;
+ }
tagain:
code = afs_VerifyVCache(adp, &treq);
#ifdef AFS_OSF_ENV
* fileserver
*/
if ( adp->states & CRO ) {
+#ifdef AFS_OSF_ENV
+ afs_PutVCache(adp, 0);
+ afs_PutVCache(tvc, 0);
+#endif
code = EROFS;
return code;
}
afs_Trace2(afs_iclSetp, CM_TRACE_SYMLINK, ICL_TYPE_POINTER, adp,
ICL_TYPE_STRING, aname);
- if (afs_IsDynroot(adp))
- return afs_DynrootVOPSymlink(adp, acred, aname, atargetName);
+ if (afs_IsDynroot(adp)) {
+ code = afs_DynrootVOPSymlink(adp, acred, aname, atargetName);
+ goto done2;
+ }
if (code = afs_InitReq(&treq, acred))
- return code;
+ goto done2;
code = afs_VerifyVCache(adp, &treq);
if (code) {
code = afs_CheckCode(code, &treq, 30);
- return code;
+ goto done2;
}
/** If the volume is read-only, return error without making an RPC to the
*/
if ( adp->states & CRO ) {
code = EROFS;
- return code;
+ goto done2;
}
InStatus.Mask = AFS_SETMODTIME | AFS_SETMODE;
afs_PutVCache(tvc, WRITE_LOCK);
code = 0;
done:
-#ifdef AFS_OSF_ENV
- AFS_RELE(ndp->ni_dvp);
-#endif /* AFS_OSF_ENV */
if ( volp )
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;
}