void lockIdSet(struct AFS_FLOCK *flock, struct SimpleLocks *slp, int clid) { if (slp) { slp->pid = get_user_struct()->u_procp->p_pid; } else { flock->l_pid = get_user_struct()->u_procp->p_pid; } }
static int lockIdcmp2(struct AFS_FLOCK *flock1, struct vcache *vp, struct SimpleLocks *alp, int onlymine, int clid) { struct SimpleLocks *slp; #if defined(AFS_SUN5_ENV) proc_t *procp = ttoproc(curthread); #else #if !defined(AFS_AIX41_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_SGI65_ENV) && !defined(AFS_DARWIN_ENV) && !defined(AFS_XBSD_ENV) #ifdef AFS_SGI64_ENV afs_proc_t *procp = curprocp; #elif defined(UKERNEL) afs_proc_t *procp = get_user_struct()->u_procp; #else afs_proc_t *procp = u.u_procp; #endif /* AFS_SGI64_ENV */ #endif #endif if (alp) { #if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) if (flock1->l_sysid != alp->sysid) { return 1; } #endif if ((flock1->l_pid == alp->pid) || #if defined(AFS_AIX41_ENV) || defined(AFS_LINUX20_ENV) || defined(AFS_HPUX_ENV) (!onlymine && (flock1->l_pid == getppid())) #else #if defined(AFS_SGI65_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) /* XXX check this. used to be *only* irix for some reason. */ (!onlymine && (flock1->l_pid == clid)) #else (!onlymine && (flock1->l_pid == procp->p_ppid)) #endif #endif ) { return 0; } return 1; } for (slp = vp->slocks; slp; slp = slp->next) { #if defined(AFS_HAVE_FLOCK_SYSID) if (flock1->l_sysid != slp->sysid) { continue; } #endif if (flock1->l_pid == slp->pid) { return 0; } } return (1); /* failure */ }
int afs_root(OSI_VFS_DECL(afsp), struct vnode **avpp) { afs_int32 code = 0; struct vrequest treq; struct vcache *tvp = 0; OSI_VFS_CONVERT(afsp); AFS_STATCNT(afs_root); if (afs_globalVp && (afs_globalVp->f.states & CStatd)) { tvp = afs_globalVp; } else { if (afs_globalVp) { afs_PutVCache(afs_globalVp); afs_globalVp = NULL; } if (!(code = afs_InitReq(&treq, get_user_struct()->u_cred)) && !(code = afs_CheckInit())) { tvp = afs_GetVCache(&afs_rootFid, &treq, NULL, NULL); /* we really want this to stay around */ if (tvp) { afs_globalVp = tvp; } else code = ENOENT; } } if (tvp) { VN_HOLD(AFSTOV(tvp)); AFSTOV(tvp)->v_flag |= VROOT; /* No-op on Ultrix 2.2 */ afs_globalVFS = afsp; *avpp = AFSTOV(tvp); } afs_Trace3(afs_iclSetp, CM_TRACE_GOPEN, ICL_TYPE_POINTER, *avpp, ICL_TYPE_INT32, 0, ICL_TYPE_INT32, code); return code; }