]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Update to the new thread world order for FBSD
authorBen Kaduk <kaduk@mit.edu>
Wed, 31 Mar 2010 04:49:02 +0000 (00:49 -0400)
committerDerrick Brashear <shadow@dementia.org>
Wed, 31 Mar 2010 10:39:47 +0000 (03:39 -0700)
Since FreeBSD 5.0, system calls have taken a thread argument instead
of a proc argument.  Finish catching up.

Also remove the retval argument, which is not in the system sysent
definition, and is unused.

Since we took our sweet time getting around to it, we can also
remove large swaths of FreeBSD 4.X-only code from the area.

Fix the vop_*_args struct definition comments that had changes in
addition to proc-->thread while we're here.

Change-Id: Ib469e77655a6c04bfbfe1e5fab54f6f3a6119a85
Reviewed-on: http://gerrit.openafs.org/1675
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
13 files changed:
src/afs/FBSD/osi_file.c
src/afs/FBSD/osi_groups.c
src/afs/FBSD/osi_machdep.h
src/afs/FBSD/osi_misc.c
src/afs/FBSD/osi_prototypes.h
src/afs/FBSD/osi_vfsops.c
src/afs/FBSD/osi_vm.c
src/afs/FBSD/osi_vnodeops.c
src/afs/afs_osi_pag.c
src/afs/afs_pag_cred.c
src/afs/afs_pioctl.c
src/afs/afs_prototypes.h
src/afs/afs_syscall.c

index 738fd27d854f02f84048996590787b35b1ab2411..4b38d70fb6780fb869c3ceeccbc8fa924c69e021 100644 (file)
@@ -52,10 +52,8 @@ osi_UFSOpen(afs_dcache_id_t *ainode)
     }
 #if defined(AFS_FBSD80_ENV)
     VOP_UNLOCK(vp, 0);
-#elif defined(AFS_FBSD50_ENV)
-    VOP_UNLOCK(vp, 0, curthread);
 #else
-    VOP_UNLOCK(vp, 0, curproc);
+    VOP_UNLOCK(vp, 0, curthread);
 #endif
     afile->vnode = vp;
     afile->size = VTOI(vp)->i_size;
@@ -76,12 +74,10 @@ afs_osi_Stat(register struct osi_file *afile, register struct osi_stat *astat)
     vn_lock(afile->vnode, LK_EXCLUSIVE | LK_RETRY);
     code = VOP_GETATTR(afile->vnode, &tvattr, afs_osi_credp);
     VOP_UNLOCK(afile->vnode, 0);
-#elif defined(AFS_FBSD50_ENV)
+#else
     vn_lock(afile->vnode, LK_EXCLUSIVE | LK_RETRY, curthread);
     code = VOP_GETATTR(afile->vnode, &tvattr, afs_osi_credp, curthread);
     VOP_UNLOCK(afile->vnode, LK_EXCLUSIVE, curthread);
-#else
-    code = VOP_GETATTR(afile->vnode, &tvattr, afs_osi_credp, curproc);
 #endif
     AFS_GLOCK();
     if (code == 0) {
@@ -126,12 +122,9 @@ osi_UFSTruncate(register struct osi_file *afile, afs_int32 asize)
 #if defined(AFS_FBSD80_ENV)
     vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
     code = VOP_GETATTR(afile->vnode, &tvattr, afs_osi_credp);
-#elif defined(AFS_FBSD50_ENV)
+#else
     vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, curthread);
     code = VOP_GETATTR(afile->vnode, &tvattr, afs_osi_credp, curthread);
-#else
-    vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, curproc);
-    code = VOP_GETATTR(afile->vnode, &tvattr, afs_osi_credp, curproc);
 #endif
     if (code != 0 || tvattr.va_size <= asize)
        goto out;
@@ -140,19 +133,15 @@ osi_UFSTruncate(register struct osi_file *afile, afs_int32 asize)
     tvattr.va_size = asize;
 #if defined(AFS_FBSD80_ENV)
     code = VOP_SETATTR(vp, &tvattr, afs_osi_credp);
-#elif defined(AFS_FBSD50_ENV)
-    code = VOP_SETATTR(vp, &tvattr, afs_osi_credp, curthread);
 #else
-    code = VOP_SETATTR(vp, &tvattr, afs_osi_credp, curproc);
+    code = VOP_SETATTR(vp, &tvattr, afs_osi_credp, curthread);
 #endif
 
 out:
 #if defined(AFS_FBSD80_ENV)
     VOP_UNLOCK(vp, 0);
-#elif defined(AFS_FBSD50_ENV)
-    VOP_UNLOCK(vp, LK_EXCLUSIVE, curthread);
 #else
-    VOP_UNLOCK(vp, LK_EXCLUSIVE, curproc);
+    VOP_UNLOCK(vp, LK_EXCLUSIVE, curthread);
 #endif
     if (glocked)
       AFS_GLOCK();
index 9e6d47f38ee7f455738e3b7256dccd0dbfc83444..aa4a334b87583ee9c56bbb2413af0cb7ec6458bf 100644 (file)
@@ -30,19 +30,9 @@ static int
   afs_getgroups(struct ucred *cred, int ngroups, gid_t * gidset);
 
 static int
-  afs_setgroups(struct proc *proc, struct ucred **cred, int ngroups,
+  afs_setgroups(struct thread *td, struct ucred **cred, int ngroups,
                gid_t * gidset, int change_parent);
 
-#ifdef AFS_FBSD50_ENV
-/*
- * This does nothing useful yet.
- * In 5.0, creds are associated not with a process, but with a thread.
- * Probably the right thing to do is replace struct proc with struct thread
- * everywhere, including setpag.
- * That will be a tedious undertaking.
- * For now, I'm just passing curproc to AddPag.
- * This is probably wrong and I don't know what the consequences might be.
- */
 
 int
 Afs_xsetgroups(struct thread *td, struct setgroups_args *uap)
@@ -72,57 +62,17 @@ Afs_xsetgroups(struct thread *td, struct setgroups_args *uap)
        if (((treq.uid >> 24) & 0xff) == 'A') {
            AFS_GLOCK();
            /* we've already done a setpag, so now we redo it */
-           AddPag(curproc, treq.uid, &cr);
-           AFS_GUNLOCK();
-       }
-    }
-    crfree(cr);
-    return code;
-}
-#else /* FBSD50 */
-int
-Afs_xsetgroups(p, args, retval)
-     struct proc *p;
-     void *args;
-     int *retval;
-{
-    int code = 0;
-    struct vrequest treq;
-    struct ucred *cr;
-
-    cr = crdup(p->p_cred->pc_ucred);
-
-    AFS_STATCNT(afs_xsetgroups);
-    AFS_GLOCK();
-
-    code = afs_InitReq(&treq, cr);
-    AFS_GUNLOCK();
-    crfree(cr);
-    if (code)
-       return setgroups(p, args, retval);      /* afs has shut down */
-
-    code = setgroups(p, args, retval);
-    /* Note that if there is a pag already in the new groups we don't
-     * overwrite it with the old pag.
-     */
-    cr = crdup(p->p_cred->pc_ucred);
-
-    if (PagInCred(cr) == NOPAG) {
-       if (((treq.uid >> 24) & 0xff) == 'A') {
-           AFS_GLOCK();
-           /* we've already done a setpag, so now we redo it */
-           AddPag(p, treq.uid, &cr);
+           AddPag(td, treq.uid, &cr);
            AFS_GUNLOCK();
        }
     }
     crfree(cr);
     return code;
 }
-#endif
 
 
 int
-setpag(struct proc *proc, struct ucred **cred, afs_uint32 pagvalue,
+setpag(struct thread *td, struct ucred **cred, afs_uint32 pagvalue,
        afs_uint32 * newpag, int change_parent)
 {
 #ifdef AFS_FBSD80_ENV
@@ -152,7 +102,7 @@ setpag(struct proc *proc, struct ucred **cred, afs_uint32 pagvalue,
     }
     *newpag = (pagvalue == -1 ? genpag() : pagvalue);
     afs_get_groups_from_pag(*newpag, &gidset[1], &gidset[2]);
-    code = afs_setgroups(proc, cred, ngroups, gidset, change_parent);
+    code = afs_setgroups(td, cred, ngroups, gidset, change_parent);
 #ifdef AFS_FBSD80_ENV
     osi_Free(gidset, gidset_len * sizeof(gid_t));
 #endif
@@ -176,37 +126,8 @@ afs_getgroups(struct ucred *cred, int ngroups, gid_t * gidset)
 
 
 static int
-afs_setgroups(struct proc *proc, struct ucred **cred, int ngroups,
+afs_setgroups(struct thread *td, struct ucred **cred, int ngroups,
              gid_t * gidset, int change_parent)
 {
-#ifndef AFS_FBSD50_ENV
-    int ngrps;
-    int i;
-    gid_t *gp;
-    struct ucred *oldcr, *cr;
-
-    AFS_STATCNT(afs_setgroups);
-    /*
-     * The real setgroups() call does this, so maybe we should too.
-     *
-     */
-    if (ngroups > NGROUPS)
-       return EINVAL;
-    cr = *cred;
-    cr->cr_ngroups = ngroups;
-    gp = cr->cr_groups;
-    while (ngroups--)
-       *gp++ = *gidset++;
-    if (change_parent) {
-       crhold(cr);
-       oldcr = proc->p_pptr->p_cred->pc_ucred;
-       proc->p_pptr->p_cred->pc_ucred = cr;
-       crfree(oldcr);
-    }
-    crhold(cr);
-    oldcr = proc->p_cred->pc_ucred;
-    proc->p_cred->pc_ucred = cr;
-    crfree(oldcr);
-#endif
     return (0);
 }
index e22760bf39df3b16ff8a5cfae312b01842ae2d6e..2847de70fed28dacc4e967b138c0e998678e9950 100644 (file)
@@ -100,14 +100,11 @@ extern void osi_fbsd_free(void *p);
 #define osi_suser_client_settings(x)   (!priv_check(curthread, PRIV_AFS_ADMIN))
 #define osi_suser_afs_daemon(x)   (!priv_check(curthread, PRIV_AFS_DAEMON))
 #define afs_suser(x) (osi_suser_client_settings((x)) && osi_suser_afs_daemon((x)))
-#elif defined(AFS_FBSD50_ENV)
-#define afs_suser(x)   (!suser(curthread))
 #else
-#define afs_suser(x)   (!suser(curproc))
+#define afs_suser(x)   (!suser(curthread))
 #endif
 
 #undef osi_getpid
-#if defined(AFS_FBSD50_ENV)
 #define VT_AFS         "afs"
 #define VROOT          VV_ROOT
 #define v_flag         v_vflag
@@ -136,34 +133,6 @@ extern struct thread *afs_global_owner;
        afs_global_owner = 0; \
     } while (0)
 # endif
-#else /* FBSD50 */
-extern struct lock afs_global_lock;
-#define osi_curcred()  (curproc->p_cred->pc_ucred)
-#define osi_getpid()   (curproc->p_pid)
-#define        gop_rdwr(rw,gp,base,len,offset,segflg,unit,cred,aresid) \
-  vn_rdwr((rw),(gp),(base),(len),(offset),(segflg),(unit),(cred),(aresid), curproc)
-extern struct proc *afs_global_owner;
-#define AFS_GLOCK() \
-    do { \
-        osi_Assert(curproc); \
-       lockmgr(&afs_global_lock, LK_EXCLUSIVE, 0, curproc); \
-        osi_Assert(afs_global_owner == 0); \
-       afs_global_owner = curproc; \
-    } while (0)
-#define AFS_GUNLOCK() \
-    do { \
-        osi_Assert(curproc); \
-       osi_Assert(afs_global_owner == curproc); \
-        afs_global_owner = 0; \
-        lockmgr(&afs_global_lock, LK_RELEASE, 0, curproc); \
-    } while(0)
-#define ISAFS_GLOCK() (afs_global_owner == curproc && curproc)
-#define osi_InitGlock() \
-    do { \
-       lockinit(&afs_global_lock, PLOCK, "afs global lock", 0, 0); \
-       afs_global_owner = 0; \
-    } while (0)
-#endif /* FBSD50 */
 
 #undef SPLVAR
 #define SPLVAR int splvar
index 0219ff547f2e72ce90ac4c1767883a01bbd3601f..e433602e180f24ee3ccfa4cb3580347f9f692b94 100644 (file)
 #include "afsincludes.h"       /* Afs-based standard headers */
 #include <sys/namei.h>
 
-#ifdef AFS_FBSD50_ENV
-/* serious cheating */
-#undef curproc
-#define curproc curthread
-#endif
-
 int
 osi_lookupname(char *aname, enum uio_seg seg, int followlink,
               struct vnode **vpp)
@@ -48,7 +42,7 @@ osi_lookupname(char *aname, enum uio_seg seg, int followlink,
 #ifdef AFS_FBSD80_ENV
     flags |= MPSAFE; /* namei must take GIANT if needed */
 #endif
-    NDINIT(&n, LOOKUP, flags, seg, aname, curproc);
+    NDINIT(&n, LOOKUP, flags, seg, aname, curthread);
     if ((error = namei(&n)) != 0) {
 #ifdef AFS_FBSD50_ENV
        if (glocked)
@@ -60,10 +54,8 @@ osi_lookupname(char *aname, enum uio_seg seg, int followlink,
     /* XXX should we do this?  Usually NOT (matt) */
 #if defined(AFS_FBSD80_ENV)
     /*VOP_UNLOCK(n.ni_vp, 0);*/
-#elif defined(AFS_FBSD50_ENV)
-    VOP_UNLOCK(n.ni_vp, 0, curthread);
 #else
-    VOP_UNLOCK(n.ni_vp, 0, curproc);
+    VOP_UNLOCK(n.ni_vp, 0, curthread);
 #endif
     NDFREE(&n, NDF_ONLY_PNBUF);
 #ifdef AFS_FBSD50_ENV
index f2efcb7ff519e6d9badf1f6cc137ca20c75f2021..5868b1b7763ff76578a5c6d06ba90848a9caa396 100644 (file)
@@ -28,10 +28,8 @@ int afs_init(struct vfsconf *vfc);
 int afs_uninit(struct vfsconf *vfc);
 #if defined(AFS_FBSD80_ENV)
 extern int afs_statfs(struct mount *mp, struct statfs *abp);
-#elif defined(AFS_FBSD50_ENV)
-extern int afs_statfs(struct mount *mp, struct statfs *abp, struct thread *th);
 #else
-extern int afs_statfs(struct mount *mp, struct statfs *abp, struct proc *p);
+extern int afs_statfs(struct mount *mp, struct statfs *abp, struct thread *td);
 #endif
 
 #endif /* _OSI_PROTO_H_ */
index b9766fdbe5f4558fa7d47e4261996b61f8f73c93..83d6ce52184516008599531b977a44ce1198ef99 100644 (file)
@@ -17,12 +17,6 @@ struct vcache *afs_globalVp = NULL;
 struct mount *afs_globalVFS = NULL;
 int afs_pbuf_freecnt = -1;
 
-#ifdef AFS_FBSD50_ENV
-#define        THREAD_OR_PROC struct thread *p
-#else
-#define        THREAD_OR_PROC struct proc *p
-#endif
-
 extern int Afs_xsetgroups();
 extern int afs_xioctl();
 
@@ -64,7 +58,7 @@ afs_uninit(struct vfsconf *vfc)
 }
 
 int
-afs_start(struct mount *mp, int flags, THREAD_OR_PROC)
+afs_start(struct mount *mp, int flags, struct thread *p)
 {
     return (0);                        /* nothing to do. ? */
 }
@@ -76,11 +70,11 @@ afs_omount(struct mount *mp, char *path, caddr_t data)
 afs_omount(struct mount *mp, char *path, caddr_t data, struct thread *p)
 #else
 afs_omount(struct mount *mp, char *path, caddr_t data, struct nameidata *ndp,
-       THREAD_OR_PROC)
+       struct thread *p)
 #endif
 {
     /* ndp contains the mounted-from device.  Just ignore it.
-     * we also don't care about our proc struct. */
+     * we also don't care about our thread struct. */
     size_t size;
 
     if (mp->mnt_flag & MNT_UPDATE)
@@ -158,7 +152,7 @@ int
 #ifdef AFS_FBSD80_ENV
 afs_unmount(struct mount *mp, int flags)
 #else
-afs_unmount(struct mount *mp, int flags, THREAD_OR_PROC)
+afs_unmount(struct mount *mp, int flags, struct thread *p)
 #endif
 {
 
@@ -198,15 +192,10 @@ afs_root(struct mount *mp, struct vnode **vpp)
     int error;
     struct vrequest treq;
     register struct vcache *tvp = 0;
-#ifdef AFS_FBSD50_ENV
 #if !defined(AFS_FBSD53_ENV) || defined(AFS_FBSD80_ENV)
     struct thread *td = curthread;
 #endif
     struct ucred *cr = osi_curcred();
-#else
-    struct proc *p = curproc;
-    struct ucred *cr = p->p_cred->pc_ucred;
-#endif
 
     AFS_GLOCK();
     AFS_STATCNT(afs_root);
@@ -270,7 +259,7 @@ int
 #ifdef AFS_FBSD80_ENV
 afs_statfs(struct mount *mp, struct statfs *abp)
 #else
-afs_statfs(struct mount *mp, struct statfs *abp, THREAD_OR_PROC)
+afs_statfs(struct mount *mp, struct statfs *abp, struct thread *p)
 #endif
 {
     AFS_GLOCK();
@@ -306,7 +295,7 @@ afs_sync(struct mount *mp, int waitfor)
 #elif defined(AFS_FBSD60_ENV)
 afs_sync(struct mount *mp, int waitfor, struct thread *td)
 #else
-afs_sync(struct mount *mp, int waitfor, struct ucred *cred, THREAD_OR_PROC)
+afs_sync(struct mount *mp, int waitfor, struct ucred *cred, struct thread *p)
 #endif
 {
     return 0;
index 6a2f1368323fb53365691b59471e7114a1438b3b..4dcbd93cb5855d12de5985f49bffd5ce3c4aed44 100644 (file)
 #if defined(AFS_FBSD80_ENV)
 #define        lock_vnode(v)   vn_lock((v), LK_EXCLUSIVE | LK_RETRY)
 #define unlock_vnode(v)        VOP_UNLOCK((v), 0)
-#elif defined(AFS_FBSD50_ENV)
+#else
 #define        lock_vnode(v)   vn_lock((v), LK_EXCLUSIVE | LK_RETRY, curthread)
 #define unlock_vnode(v)        VOP_UNLOCK((v), 0, curthread)
-#else
-#define        lock_vnode(v)   vn_lock((v), LK_EXCLUSIVE | LK_RETRY, curproc)
-#define unlock_vnode(v)        VOP_UNLOCK((v), 0, curproc)
-/* need splvm() protection? */
-#define        VM_OBJECT_LOCK(o)
-#define VM_OBJECT_UNLOCK(o)
 #endif
 
 /* Try to discard pages, in order to recycle a vcache entry.
@@ -162,11 +156,7 @@ osi_VM_StoreAllSegments(struct vcache *avc)
     do {
        anyio = 0;
        if (VOP_GETVOBJECT(vp, &obj) == 0 && (obj->flags & OBJ_MIGHTBEDIRTY)) {
-#ifdef AFS_FBSD50_ENV
            if (!vget(vp, LK_EXCLUSIVE | LK_RETRY, curthread)) {
-#else
-               if (!vget(vp, LK_EXCLUSIVE | LK_RETRY | LK_NOOBJ, curproc)) {
-#endif
                    if (VOP_GETVOBJECT(vp, &obj) == 0) {
                        VM_OBJECT_LOCK(obj);
                        vm_object_page_clean(obj, 0, 0, OBJPC_SYNC);
index 4842e9664944ac7aac16a4c53fcead55ed5f08af..6dca7f4133244a58c6202c80d96c190d9ffead28 100644 (file)
@@ -474,11 +474,7 @@ afs_vop_lookup(ap)
     register int flags = ap->a_cnp->cn_flags;
     int lockparent;            /* 1 => lockparent flag is set */
     int wantparent;            /* 1 => wantparent or lockparent flag */
-#ifdef AFS_FBSD50_ENV
     struct thread *p = ap->a_cnp->cn_thread;
-#else
-    struct proc *p = ap->a_cnp->cn_proc;
-#endif
 
     dvp = ap->a_dvp;
     if (dvp->v_type != VDIR) {
@@ -570,11 +566,7 @@ afs_vop_create(ap)
     int error = 0;
     struct vcache *vcp;
     register struct vnode *dvp = ap->a_dvp;
-#ifdef AFS_FBSD50_ENV
     struct thread *p = ap->a_cnp->cn_thread;
-#else
-    struct proc *p = ap->a_cnp->cn_proc;
-#endif
     GETNAME();
 
     AFS_GLOCK();
@@ -637,7 +629,8 @@ afs_vop_open(ap)
                                 * struct vnode *a_vp;
                                 * int  a_mode;
                                 * struct ucred *a_cred;
-                                * struct proc *a_p;
+                                * struct thread *a_td;
+                                * struct file *a_fp;
                                 * } */ *ap;
 {
     int error;
@@ -663,7 +656,7 @@ afs_vop_close(ap)
                                 * struct vnode *a_vp;
                                 * int  a_fflag;
                                 * struct ucred *a_cred;
-                                * struct proc *a_p;
+                                * struct thread *a_td;
                                 * } */ *ap;
 {
     int code;
@@ -682,9 +675,9 @@ int
 afs_vop_access(ap)
      struct vop_access_args    /* {
                                 * struct vnode *a_vp;
-                                * int  a_mode;
+                                * accmode_t a_accmode;
                                 * struct ucred *a_cred;
-                                * struct proc *a_p;
+                                * struct thread *a_td;
                                 * } */ *ap;
 {
     int code;
@@ -704,7 +697,6 @@ afs_vop_getattr(ap)
                                 * struct vnode *a_vp;
                                 * struct vattr *a_vap;
                                 * struct ucred *a_cred;
-                                * struct proc *a_p;
                                 * } */ *ap;
 {
     int code;
@@ -720,7 +712,6 @@ afs_vop_setattr(ap)
                                 * struct vnode *a_vp;
                                 * struct vattr *a_vap;
                                 * struct ucred *a_cred;
-                                * struct proc *a_p;
                                 * } */ *ap;
 {
     int code;
@@ -828,11 +819,7 @@ afs_vop_getpages(struct vop_getpages_args *ap)
     uio.uio_resid = ap->a_count;
     uio.uio_segflg = UIO_SYSSPACE;
     uio.uio_rw = UIO_READ;
-#ifdef AFS_FBSD50_ENV
     uio.uio_td = curthread;
-#else
-    uio.uio_procp = curproc;
-#endif
 
     AFS_GLOCK();
     osi_FlushPages(avc, osi_curcred());        /* hold bozon lock, but not basic vnode lock */
@@ -1001,11 +988,7 @@ afs_vop_putpages(struct vop_putpages_args *ap)
     uio.uio_resid = ap->a_count;
     uio.uio_segflg = UIO_SYSSPACE;
     uio.uio_rw = UIO_WRITE;
-#ifdef AFS_FBSD50_ENV
     uio.uio_td = curthread;
-#else
-    uio.uio_procp = curproc;
-#endif
     sync = IO_VMIO;
     if (ap->a_sync & VM_PAGER_PUT_SYNC)
        sync |= IO_SYNC;
@@ -1033,11 +1016,11 @@ int
 afs_vop_ioctl(ap)
      struct vop_ioctl_args     /* {
                                 * struct vnode *a_vp;
-                                * int  a_command;
-                                * caddr_t  a_data;
+                                * u_long a_command;
+                                * void *a_data;
                                 * int  a_fflag;
                                 * struct ucred *a_cred;
-                                * struct proc *a_p;
+                                * struct thread *a_td;
                                 * } */ *ap;
 {
     struct vcache *tvc = VTOAFS(ap->a_vp);
@@ -1065,7 +1048,7 @@ afs_vop_poll(ap)
                                 * struct vnode *a_vp;
                                 * int  a_events;
                                 * struct ucred *a_cred;
-                                * struct proc *a_p;
+                                * struct thread *td;
                                 * } */ *ap;
 {
     /*
@@ -1086,7 +1069,7 @@ afs_vop_mmap(ap)
                                 * struct vnode *a_vp;
                                 * int  a_fflags;
                                 * struct ucred *a_cred;
-                                * struct proc *a_p;
+                                * struct thread *td;
                                 * } */ *ap;
 {
     return (EINVAL);
@@ -1096,9 +1079,8 @@ int
 afs_vop_fsync(ap)
      struct vop_fsync_args     /* {
                                 * struct vnode *a_vp;
-                                * struct ucred *a_cred;
                                 * int a_waitfor;
-                                * struct proc *a_p;
+                                * struct thread *td;
                                 * } */ *ap;
 {
     int error;
@@ -1150,11 +1132,7 @@ afs_vop_link(ap)
     int error = 0;
     register struct vnode *dvp = ap->a_tdvp;
     register struct vnode *vp = ap->a_vp;
-#ifdef AFS_FBSD50_ENV
     struct thread *p = ap->a_cnp->cn_thread;
-#else
-    struct proc *p = ap->a_cnp->cn_proc;
-#endif
 
     GETNAME();
     if (dvp->v_mount != vp->v_mount) {
@@ -1198,11 +1176,7 @@ afs_vop_rename(ap)
     register struct vnode *tdvp = ap->a_tdvp;
     struct vnode *fvp = ap->a_fvp;
     register struct vnode *fdvp = ap->a_fdvp;
-#ifdef AFS_FBSD50_ENV
     struct thread *p = fcnp->cn_thread;
-#else
-    struct proc *p = fcnp->cn_proc;
-#endif
 
     /*
      * Check for cross-device rename.
@@ -1304,11 +1278,7 @@ afs_vop_mkdir(ap)
     register struct vattr *vap = ap->a_vap;
     int error = 0;
     struct vcache *vcp;
-#ifdef AFS_FBSD50_ENV
     struct thread *p = ap->a_cnp->cn_thread;
-#else
-    struct proc *p = ap->a_cnp->cn_proc;
-#endif
 
     GETNAME();
 #ifdef DIAGNOSTIC
@@ -1378,11 +1348,7 @@ afs_vop_symlink(struct vop_symlink_args *ap)
        error = afs_lookup(VTOAFS(dvp), name, &vcp, cnp->cn_cred);
        if (error == 0) {
            newvp = AFSTOV(vcp);
-#ifdef AFS_FBSD50_ENV
            ma_vn_lock(newvp, LK_EXCLUSIVE | LK_RETRY, cnp->cn_thread);
-#else
-           ma_vn_lock(newvp, LK_EXCLUSIVE | LK_RETRY, cnp->cn_proc);
-#endif
        }
     }
     AFS_GUNLOCK();
@@ -1463,7 +1429,7 @@ int
 afs_vop_inactive(ap)
      struct vop_inactive_args  /* {
                                 * struct vnode *a_vp;
-                                * struct proc *a_p;
+                                * struct thread *td;
                                 * } */ *ap;
 {
     register struct vnode *vp = ap->a_vp;
index b1043ebfc23b2e10e043cb7034d80c4c083a997e..4f2cf7d0ca9bf1cee0a0cc9b2d2b41049e28a9b9 100644 (file)
@@ -191,6 +191,8 @@ afs_pag_wait(afs_ucred_t **acred)
 int
 #if    defined(AFS_SUN5_ENV)
 afs_setpag(afs_ucred_t **credpp)
+#elif  defined(AFS_FBSD_ENV)
+afs_setpag(struct thread *td, void *args)
 #elif  defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 afs_setpag(afs_proc_t *p, void *args, int *retval)
 #else
@@ -220,6 +222,8 @@ afs_setpag(void)
 
 #if    defined(AFS_SUN5_ENV)
     code = AddPag(genpag(), credpp);
+#elif  defined(AFS_FBSD_ENV)
+    code = AddPag(td, genpag(), &td->td_ucred);
 #elif  defined(AFS_XBSD_ENV)
     code = AddPag(p, genpag(), &p->p_rcred);
 #elif  defined(AFS_AIX41_ENV)
@@ -295,6 +299,8 @@ afs_setpag(void)
 int
 #if    defined(AFS_SUN5_ENV)
 afs_setpag_val(afs_ucred_t **credpp, int pagval)
+#elif  defined(AFS_FBSD_ENV)
+afs_setpag_val(struct thread *td, void *args, int pagval)
 #elif  defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 afs_setpag_val(afs_proc_t *p, void *args, int *retval, int pagval)
 #else
@@ -323,6 +329,8 @@ afs_setpag_val(int pagval)
 
 #if    defined(AFS_SUN5_ENV)
     code = AddPag(pagval, credpp);
+#elif  defined(AFS_FBSD_ENV)
+    code = AddPag(td, pagval, &td->td_ucred);
 #elif  defined(AFS_XBSD_ENV)
     code = AddPag(p, pagval, &p->p_rcred);
 #elif  defined(AFS_AIX41_ENV)
@@ -407,11 +415,12 @@ afs_getpag_val(void)
 
 
 /* Note - needs to be available on AIX, others can be static - rework this */
-#if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 int
+#if defined(AFS_FBSD_ENV)
+AddPag(struct thread *p, afs_int32 aval, afs_ucred_t **credpp)
+#elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 AddPag(afs_proc_t *p, afs_int32 aval, afs_ucred_t **credpp)
 #else
-int
 AddPag(afs_int32 aval, afs_ucred_t **credpp)
 #endif
 {
index f1e26e3dc6e887e0f6bf844c40a1a8d3f58e0174..c9c3f8fa74e92384f0a8ece930233b2d29f06c54 100644 (file)
@@ -176,6 +176,9 @@ int afspag_PSetTokens(char *ain, afs_int32 ainSize, afs_ucred_t **acred)
        afs_proc_t *p = current_proc(); /* XXX */
        char procname[256];
        proc_selfname(procname, 256);
+# elif defined(AFS_FBSD_ENV)
+       struct thread *p = curthread;
+       char *procname = p->td_proc->p_comm;
 # else
        afs_proc_t *p = curproc;        /* XXX */
        char *procname = p->p_comm;
index 9f6e4b43698d7e756668d62fd94bc239d9e0a868..6d6e6efa6d8cdd397d161e84fb590ad01de629d4 100644 (file)
@@ -947,7 +947,11 @@ afs_pioctl(struct thread *td, void *args, int *retval)
 
 #elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 int
+# if defined(AFS_FBSD_ENV)
+afs_pioctl(struct thread *td, void *args)
+# else
 afs_pioctl(afs_proc_t *p, void *args, int *retval)
+# endif
 {
     struct a {
        char *path;
@@ -964,7 +968,11 @@ afs_pioctl(afs_proc_t *p, void *args, int *retval)
 # else
     return (afs_syscall_pioctl
            (uap->path, uap->cmd, uap->cmarg, uap->follow,
+#  if defined(AFS_FBSD_ENV)
+            td->td_ucred));
+#  else
             p->p_cred->pc_ucred));
+#  endif
 # endif
 }
 
@@ -1838,6 +1846,9 @@ DECL_PIOCTL(PSetTokens)
        afs_proc_t *p = current_proc(); /* XXX */
        char procname[256];
        proc_selfname(procname, 256);
+# elif defined(AFS_FBSD_ENV)
+       struct thread *p = curthread;
+       char *procname = p->td_proc->p_comm;
 # else
        afs_proc_t *p = curproc;        /* XXX */
        char *procname = p->p_comm;
index 2fc653c83c06bdbeddea61f4dfa9b1a58ad9885b..c31d5f3ab1092efe231891ef1cd8a698e5541a3a 100644 (file)
@@ -572,6 +572,8 @@ extern void shutdown_osinet(void);
 /* afs_osi_pag.c */
 #if defined(AFS_SUN5_ENV)
 extern int afs_setpag(afs_ucred_t **credpp);
+#elif defined(AFS_FBSD_ENV)
+extern int afs_setpag(struct thread *td, void *args);
 #elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 extern int afs_setpag(afs_proc_t *p, void *args, int *retval);
 #else
@@ -580,7 +582,9 @@ extern int afs_setpag(void);
        
 extern afs_uint32 genpag(void);
 extern afs_uint32 getpag(void);
-#if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
+#if defined(AFS_FBSD_ENV)
+extern int AddPag(struct thread *td, afs_int32 aval, afs_ucred_t **credpp);
+#elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 extern int AddPag(afs_proc_t *p, afs_int32 aval, afs_ucred_t **credpp);
 #else
 extern int AddPag(afs_int32 aval, afs_ucred_t **credpp);
@@ -701,11 +705,16 @@ extern int usr_setpag(afs_ucred_t **cred, afs_uint32 pagvalue,
 #else
 # if defined AFS_XBSD_ENV
 #  if !defined(AFS_DFBSD_ENV)
+#   if defined(AFS_FBSD_ENV)
+extern int setpag(struct thread *td, struct ucred **cred, afs_uint32 pagvalue,
+                 afs_uint32 * newpag, int change_parent);
+#   else
 extern int setpag(afs_proc_t *proc, struct ucred **cred, afs_uint32 pagvalue,
                  afs_uint32 * newpag, int change_parent);
-#  endif
-# endif
-#endif
+#   endif /* AFS_FBSD_ENV */
+#  endif /* ! AFS_DFBSD_ENV */
+# endif /* AFS_XBSD_ENV */
+#endif /* UKERNEL */
 
 #if defined(AFS_LINUX26_ENV)
 extern afs_int32 osi_get_group_pag(afs_ucred_t *cred);
@@ -887,8 +896,8 @@ extern int copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst);
 #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 #ifdef AFS_DARWIN100_ENV
 extern int afs3_syscall(afs_proc_t *p, void *args, unsigned int *retval);
-#elif defined(AFS_FBSD50_ENV)
-extern int afs3_syscall(struct thread *p, void *args, long *retval);
+#elif defined(AFS_FBSD_ENV)
+extern int afs3_syscall(struct thread *p, void *args);
 #else
 extern int afs3_syscall(afs_proc_t *p, void *args, long *retval);
 #endif
index 0486d6e4dab115bec1673c3a79691cd562e022b9..b581423dd1df0db333d00d56d00208b84acf4e14 100644 (file)
@@ -497,16 +497,23 @@ afs3_syscall(afs_proc_t *p, void *args, unsigned int *retval)
 {
     struct afssysa64 *uap64 = NULL;
     struct afssysa *uap = NULL;
+#elif defined(AFS_FBSD_ENV)
+int
+afs3_syscall(struct thread *p, void *args)
+{
+    register struct a {
+       long syscall;
+       long parm1;
+       long parm2;
+       long parm3;
+       long parm4;
+       long parm5;
+       long parm6;
+    } *uap = (struct a *)args;
+    long *retval;
 #elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 int
-afs3_syscall(p, args, retval)
-# ifdef AFS_FBSD50_ENV
-     struct thread *p;
-# else
-     afs_proc_t *p;
-# endif
-     void *args;
-     long *retval;
+afs3_syscall(afs_proc_t *p, void *args, long *retval)
 {
     register struct a {
        long syscall;
@@ -698,7 +705,9 @@ Afs_syscall()
            AFS_GUNLOCK();
 #else
            AFS_GLOCK();
-#if    defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
+#if    defined(AFS_FBSD_ENV)
+           code = afs_setpag(p, args);
+#elif  defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
            code = afs_setpag(p, args, retval);
 #else /* AFS_DARWIN_ENV || AFS_XBSD_ENV */
            code = afs_setpag();