if (afs_fakestat_enable && avc->mvstat == 1)
fakedir = 1;
attrs->va_type = fakedir ? VDIR : vType(avc);
-#if defined(AFS_SGI_ENV) || defined(AFS_AIX32_ENV) || defined(AFS_SUN5_ENV)
- attrs->va_mode = fakedir ? 0755 : (mode_t) (avc->f.m.Mode & 0xffff);
+#if defined(AFS_SGI_ENV) || defined(AFS_AIX32_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_DARWIN_ENV)
+ attrs->va_mode = fakedir ? S_IFDIR | 0755 : (mode_t) (avc->f.m.Mode & 0xffff);
#else
attrs->va_mode = fakedir ? VDIR | 0755 : avc->f.m.Mode;
#endif
#endif /* AFS_DARWIN_ENV */
attrs->va_uid = fakedir ? 0 : avc->f.m.Owner;
attrs->va_gid = fakedir ? 0 : avc->f.m.Group; /* yeah! */
-#if defined(AFS_SUN56_ENV)
+#if defined(AFS_SUN5_ENV)
attrs->va_fsid = avc->v.v_vfsp->vfs_fsid.val[0];
#elif defined(AFS_DARWIN80_ENV)
VATTR_RETURN(attrs, va_fsid, vfs_statfs(vnode_mount(AFSTOV(avc)))->f_fsid.val[0]);
/* The mount point's vnode. */
if (tvp) {
attrs->va_nodeid =
- afs_calc_inum (tvp->mtpoint.Fid.Volume,
- tvp->mtpoint.Fid.Vnode);
+ afs_calc_inum(tvp->mtpoint.Cell,
+ tvp->mtpoint.Fid.Volume,
+ tvp->mtpoint.Fid.Vnode);
if (FidCmp(&afs_rootFid, &avc->f.fid) && !attrs->va_nodeid)
attrs->va_nodeid = 2;
afs_PutVolume(tvp, READ_LOCK);
attrs->va_nodeid = 2;
} else
attrs->va_nodeid =
- afs_calc_inum (avc->f.fid.Fid.Volume,
- avc->f.fid.Fid.Vnode);
+ afs_calc_inum(avc->f.fid.Cell,
+ avc->f.fid.Fid.Volume,
+ avc->f.fid.Fid.Vnode);
attrs->va_nodeid &= 0x7fffffff; /* Saber C hates negative inode #s! */
attrs->va_nlink = fakedir ? 100 : avc->f.m.LinkCount;
attrs->va_size = fakedir ? 4096 : avc->f.m.Length;
afs_BozonLock(&avc->pvnLock, avc);
#endif
- if (afs_shuttingdown)
+ if (afs_shuttingdown) {
+#ifdef AFS_BOZONLOCK_ENV
+ afs_BozonUnlock(&avc->pvnLock, avc);
+#endif
+ AFS_DISCON_UNLOCK();
return EIO;
+ }
if (!(avc->f.states & CStatd)) {
if (!(code = afs_InitReq(&treq, acred))) {
} else
code = 0;
-#ifdef AFS_BOZONLOCK_ENV
+#if defined(AFS_SUN5_ENV) || defined(AFS_BOZONLOCK_ENV)
if (code == 0)
osi_FlushPages(avc, acred);
+#endif
+#ifdef AFS_BOZONLOCK_ENV
afs_BozonUnlock(&avc->pvnLock, avc);
#endif