From a139770d3679b0f8730ca149cb303c723f10eac3 Mon Sep 17 00:00:00 2001 From: Nickolai Zeldovich Date: Wed, 31 Jul 2002 17:42:32 +0000 Subject: [PATCH] STABLE12-fix-fakestat-support-for-hardlinks-20020731 Support afs_link() in volume roots when using fakestat. (cherry picked from commit 59741a821caec4ed83b87dcadbd4771e8d181c38) --- src/afs/VNOPS/afs_vnop_link.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/afs/VNOPS/afs_vnop_link.c b/src/afs/VNOPS/afs_vnop_link.c index c58edc221..d244cca7a 100644 --- a/src/afs/VNOPS/afs_vnop_link.c +++ b/src/afs/VNOPS/afs_vnop_link.c @@ -56,6 +56,7 @@ afs_link(avc, OSI_VC_ARG(adp), aname, acred) afs_int32 offset, len; struct AFSFetchStatus OutFidStatus, OutDirStatus; struct AFSVolSync tsync; + struct afs_fakestat_state vfakestate, dfakestate; XSTATS_DECLS OSI_VC_CONVERT(adp) @@ -66,6 +67,13 @@ afs_link(avc, OSI_VC_ARG(adp), aname, acred) if (code = afs_InitReq(&treq, acred)) goto done2; + afs_InitFakeStat(&vfakestate); + afs_InitFakeStat(&dfakestate); + code = afs_EvalFakeStat(&avc, &vfakestate, &treq); + if (code) goto done; + code = afs_EvalFakeStat(&adp, &dfakestate, &treq); + if (code) goto done; + if (avc->fid.Cell != adp->fid.Cell || avc->fid.Fid.Volume != adp->fid.Fid.Volume) { code = EXDEV; goto done; @@ -151,6 +159,8 @@ afs_link(avc, OSI_VC_ARG(adp), aname, acred) code = 0; done: code = afs_CheckCode(code, &treq, 24); + afs_PutFakeStat(&vfakestate); + afs_PutFakeStat(&dfakestate); done2: #ifdef AFS_OSF_ENV afs_PutVCache(adp, WRITE_LOCK); -- 2.39.5