From 24a9372c066b79f803736ccfbca90a9d2cadfef7 Mon Sep 17 00:00:00 2001 From: Chas Williams Date: Wed, 12 Oct 2005 07:13:24 +0000 Subject: [PATCH] STABLE140-solaris10-ugly-avoid-ENODEV-hack-20051011 fix this a better way, rolling bsack earlier change (cherry picked from commit 981b6352250d3bd279cf9bacda4045ca673efa60) --- src/afs/SOLARIS/osi_vnodeops.c | 18 ++++++++++++++++++ src/afs/VNOPS/afs_vnop_lookup.c | 8 -------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/afs/SOLARIS/osi_vnodeops.c b/src/afs/SOLARIS/osi_vnodeops.c index 8a9ac44e8..98ece1893 100644 --- a/src/afs/SOLARIS/osi_vnodeops.c +++ b/src/afs/SOLARIS/osi_vnodeops.c @@ -1673,6 +1673,24 @@ gafs_rename(aodp, aname1, andp, aname2, acred) 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); } diff --git a/src/afs/VNOPS/afs_vnop_lookup.c b/src/afs/VNOPS/afs_vnop_lookup.c index 07e687709..be887e771 100644 --- a/src/afs/VNOPS/afs_vnop_lookup.c +++ b/src/afs/VNOPS/afs_vnop_lookup.c @@ -1434,14 +1434,6 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED 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); -- 2.39.5