AFS_GLOCK();
code = afs_rename(aodp, aname1, andp, aname2, acred);
+#ifdef AFS_SUN510_ENV
+ if (code == 0) {
+ struct vcache *avcp = NULL;
+
+ (void) afs_lookup(andp, aname2, &avcp, NULL, 0, NULL, acred);
+ if (avcp) {
+ struct vnode *vp = AFSTOV(avcp), *pvp = AFSTOV(andp);
+
+ mutex_enter(&vp->v_lock);
+ kmem_free(vp->v_path, strlen(vp->v_path) + 1);
+ vp->v_path = NULL;
+ mutex_exit(&vp->v_lock);
+ VN_SETPATH(afs_globalVp, pvp, vp, aname2, strlen(aname2));
+
+ AFS_RELE(avcp);
+ }
+ }
+#endif
AFS_GUNLOCK();
return (code);
}
ReleaseWriteLock(&tvc->lock);
if (code) {
-#if defined(AFS_SUN510_ENV)
- /* reset code and volumeError so afs_CheckCode will not change to ENODEV */
- /* Solaris 10 dogetcwd chokes on ENODEV, but not ENOENT */
- if (code == ENODEV && treq.volumeError == VOLMISSING ) {
- treq.volumeError = 0;
- code = ENOENT;
- }
-#endif
afs_PutVCache(tvc);
if (tvolp)
afs_PutVolume(tvolp, WRITE_LOCK);