BSD CMs: Don't call nonexistent afs_FlushVS in afs_vop_reclaim
[openafs.git] / src / afs / OBSD / osi_vnodeops.c
index 2748bb1..b45ba6c 100644 (file)
@@ -98,154 +98,146 @@ NONINFRINGEMENT.
 #include <afsconfig.h>
 #include "afs/param.h"
 
-RCSID("$Header$");
 
 #include "afs/sysincludes.h"   /* Standard vendor system headers */
 #include "afs/afsincludes.h"   /* Afs-based standard headers */
-#include "afs/afs_stats.h" /* statistics */
+#include "afs/afs_stats.h"     /* statistics */
 
 #include <sys/malloc.h>
 #include <sys/namei.h>
+#ifdef AFS_OBSD36_ENV
+#include <sys/pool.h>
+#endif
 
 #include "afs/afs_cbqueue.h"
 #include "afs/nfsclient.h"
 #include "afs/afs_osidnlc.h"
 
-#ifdef AFS_DISCON_ENV
-extern int afs_FlushVS(struct vcache *tvc);
-#endif
-
-#define M_AFSNODE (M_TEMP-1)           /* XXX */
-
-int afs_nbsd_lookup(struct vop_lookup_args *);
-int afs_nbsd_create(struct vop_create_args *);
-int afs_nbsd_mknod(struct vop_mknod_args *);
-int afs_nbsd_open(struct vop_open_args *);
-int afs_nbsd_close(struct vop_close_args *);
-int afs_nbsd_access(struct vop_access_args *);
-int afs_nbsd_getattr(struct vop_getattr_args *);
-int afs_nbsd_setattr(struct vop_setattr_args *);
-int afs_nbsd_read(struct vop_read_args *);
-int afs_nbsd_write(struct vop_write_args *);
-int afs_nbsd_ioctl(struct vop_ioctl_args *);
-int afs_nbsd_select(struct vop_select_args *);
-int afs_nbsd_fsync(struct vop_fsync_args *);
-int afs_nbsd_remove(struct vop_remove_args *);
-int afs_nbsd_link(struct vop_link_args *);
-int afs_nbsd_rename(struct vop_rename_args *);
-int afs_nbsd_mkdir(struct vop_mkdir_args *);
-int afs_nbsd_rmdir(struct vop_rmdir_args *);
-int afs_nbsd_symlink(struct vop_symlink_args *);
-int afs_nbsd_readdir(struct vop_readdir_args *);
-int afs_nbsd_readlink(struct vop_readlink_args *);
-extern int ufs_abortop(struct vop_abortop_args *);
-int afs_nbsd_inactive(struct vop_inactive_args *);
-int afs_nbsd_reclaim(struct vop_reclaim_args *);
-int afs_nbsd_lock(struct vop_lock_args *);
-int afs_nbsd_unlock(struct vop_unlock_args *);
-int afs_nbsd_bmap(struct vop_bmap_args *);
-int afs_nbsd_strategy(struct vop_strategy_args *);
-int afs_nbsd_print(struct vop_print_args *);
-int afs_nbsd_islocked(struct vop_islocked_args *);
-int afs_nbsd_pathconf(struct vop_pathconf_args *);
-int afs_nbsd_advlock(struct vop_advlock_args *);
-
-#define afs_nbsd_opnotsupp \
-       ((int (*) __P((struct  vop_reallocblks_args *)))eopnotsupp)
-#define afs_nbsd_reallocblks afs_nbsd_opnotsupp
+#define M_AFSNODE (M_TEMP-1)   /* XXX */
+
+int afs_obsd_lookup(void *);
+int afs_obsd_create(void *);
+int afs_obsd_mknod(void *);
+int afs_obsd_open(void *);
+int afs_obsd_close(void *);
+int afs_obsd_access(void *);
+int afs_obsd_getattr(void *);
+int afs_obsd_setattr(void *);
+int afs_obsd_read(void *);
+int afs_obsd_write(void *);
+int afs_obsd_ioctl(void *);
+int afs_obsd_select(void *);
+int afs_obsd_fsync(void *);
+int afs_obsd_remove(void *);
+int afs_obsd_link(void *);
+int afs_obsd_rename(void *);
+int afs_obsd_mkdir(void *);
+int afs_obsd_rmdir(void *);
+int afs_obsd_symlink(void *);
+int afs_obsd_readdir(void *);
+int afs_obsd_readlink(void *);
+int afs_obsd_inactive(void *);
+int afs_obsd_reclaim(void *);
+int afs_obsd_lock(void *);
+int afs_obsd_unlock(void *);
+int afs_obsd_bmap(void *);
+int afs_obsd_strategy(void *);
+int afs_obsd_print(void *);
+int afs_obsd_islocked(void *);
+int afs_obsd_pathconf(void *);
+int afs_obsd_advlock(void *);
+
+#define afs_obsd_opnotsupp \
+       ((int (*) __P((void *)))eopnotsupp)
+#define afs_obsd_reallocblks afs_obsd_opnotsupp
 
 /* Global vfs data structures for AFS. */
 int (**afs_vnodeop_p) __P((void *));
 struct vnodeopv_entry_desc afs_vnodeop_entries[] = {
-       { &vop_default_desc, vn_default_error },
-       { &vop_lookup_desc, afs_nbsd_lookup },          /* lookup */
-       { &vop_create_desc, afs_nbsd_create },          /* create */
-       { &vop_mknod_desc, afs_nbsd_mknod },            /* mknod */
-       { &vop_open_desc, afs_nbsd_open },              /* open */
-       { &vop_close_desc, afs_nbsd_close },            /* close */
-       { &vop_access_desc, afs_nbsd_access },          /* access */
-       { &vop_getattr_desc, afs_nbsd_getattr },        /* getattr */
-       { &vop_setattr_desc, afs_nbsd_setattr },        /* setattr */
-       { &vop_read_desc, afs_nbsd_read },              /* read */
-       { &vop_write_desc, afs_nbsd_write },            /* write */
-       { &vop_ioctl_desc, afs_nbsd_ioctl },            /* XXX ioctl */
-       { &vop_select_desc, afs_nbsd_select },          /* select */
-       { &vop_fsync_desc, afs_nbsd_fsync },            /* fsync */
-       { &vop_remove_desc, afs_nbsd_remove },          /* remove */
-       { &vop_link_desc, afs_nbsd_link },              /* link */
-       { &vop_rename_desc, afs_nbsd_rename },          /* rename */
-       { &vop_mkdir_desc, afs_nbsd_mkdir },            /* mkdir */
-       { &vop_rmdir_desc, afs_nbsd_rmdir },            /* rmdir */
-       { &vop_symlink_desc, afs_nbsd_symlink },        /* symlink */
-       { &vop_readdir_desc, afs_nbsd_readdir },        /* readdir */
-       { &vop_readlink_desc, afs_nbsd_readlink },      /* readlink */
-       { &vop_abortop_desc, vop_generic_abortop },     /* abortop */
-       { &vop_inactive_desc, afs_nbsd_inactive },      /* inactive */
-       { &vop_reclaim_desc, afs_nbsd_reclaim },        /* reclaim */
-       { &vop_lock_desc, afs_nbsd_lock },              /* lock */
-       { &vop_unlock_desc, afs_nbsd_unlock },          /* unlock */
-       { &vop_bmap_desc, afs_nbsd_bmap },              /* bmap */
-       { &vop_strategy_desc, afs_nbsd_strategy },      /* strategy */
-       { &vop_print_desc, afs_nbsd_print },            /* print */
-       { &vop_islocked_desc, afs_nbsd_islocked },      /* islocked */
-       { &vop_pathconf_desc, afs_nbsd_pathconf },      /* pathconf */
-       { &vop_advlock_desc, afs_nbsd_advlock },        /* advlock */
-       { &vop_reallocblks_desc, afs_nbsd_reallocblks }, /* reallocblks */
-       { &vop_bwrite_desc, vop_generic_bwrite },
-       { (struct vnodeop_desc *) NULL, (int (*) __P((void *))) NULL}
+#ifdef AFS_OBSD44_ENV /* feel free to zero in on this */
+  {&vop_default_desc, eopnotsupp},
+#else
+    {&vop_default_desc, vn_default_error},
+#endif
+    {&vop_lookup_desc, afs_obsd_lookup},       /* lookup */
+    {&vop_create_desc, afs_obsd_create},       /* create */
+    {&vop_mknod_desc, afs_obsd_mknod},         /* mknod */
+    {&vop_open_desc, afs_obsd_open},           /* open */
+    {&vop_close_desc, afs_obsd_close},         /* close */
+    {&vop_access_desc, afs_obsd_access},       /* access */
+    {&vop_getattr_desc, afs_obsd_getattr},     /* getattr */
+    {&vop_setattr_desc, afs_obsd_setattr},     /* setattr */
+    {&vop_read_desc, afs_obsd_read},           /* read */
+    {&vop_write_desc, afs_obsd_write},         /* write */
+    {&vop_ioctl_desc, afs_obsd_ioctl},         /* XXX ioctl */
+#ifdef AFS_OBSD35_ENV
+    {&vop_poll_desc, afs_obsd_select},         /* select */
+#else
+    {&vop_select_desc, afs_obsd_select},       /* select */
+#endif
+    {&vop_fsync_desc, afs_obsd_fsync},         /* fsync */
+    {&vop_remove_desc, afs_obsd_remove},       /* remove */
+    {&vop_link_desc, afs_obsd_link},           /* link */
+    {&vop_rename_desc, afs_obsd_rename},       /* rename */
+    {&vop_mkdir_desc, afs_obsd_mkdir},         /* mkdir */
+    {&vop_rmdir_desc, afs_obsd_rmdir},         /* rmdir */
+    {&vop_symlink_desc, afs_obsd_symlink},     /* symlink */
+    {&vop_readdir_desc, afs_obsd_readdir},     /* readdir */
+    {&vop_readlink_desc, afs_obsd_readlink},   /* readlink */
+    {&vop_abortop_desc, vop_generic_abortop},  /* abortop */
+    {&vop_inactive_desc, afs_obsd_inactive},   /* inactive */
+    {&vop_reclaim_desc, afs_obsd_reclaim},     /* reclaim */
+    {&vop_lock_desc, afs_obsd_lock},           /* lock */
+    {&vop_unlock_desc, afs_obsd_unlock},       /* unlock */
+    {&vop_bmap_desc, afs_obsd_bmap},           /* bmap */
+    {&vop_strategy_desc, afs_obsd_strategy},   /* strategy */
+    {&vop_print_desc, afs_obsd_print},         /* print */
+    {&vop_islocked_desc, afs_obsd_islocked},   /* islocked */
+    {&vop_pathconf_desc, afs_obsd_pathconf},   /* pathconf */
+    {&vop_advlock_desc, afs_obsd_advlock},     /* advlock */
+    {&vop_reallocblks_desc, afs_obsd_reallocblks},     /* reallocblks */
+    {&vop_bwrite_desc, vop_generic_bwrite},
+    {(struct vnodeop_desc *)NULL, (int (*)__P((void *)))NULL}
 };
 struct vnodeopv_desc afs_vnodeop_opv_desc =
-       { &afs_vnodeop_p, afs_vnodeop_entries };
+    { &afs_vnodeop_p, afs_vnodeop_entries };
 
 #define GETNAME()      \
     struct componentname *cnp = ap->a_cnp; \
     char *name; \
-    MALLOC(name, char *, cnp->cn_namelen+1, M_TEMP, M_WAITOK); \
+    BSD_KMALLOC(name, char *, cnp->cn_namelen+1, M_TEMP, M_WAITOK); \
     bcopy(cnp->cn_nameptr, name, cnp->cn_namelen); \
     name[cnp->cn_namelen] = '\0'
 
-#define DROPNAME() FREE(name, M_TEMP)
+#define DROPNAME() BSD_KFREE(name, M_TEMP)
 
-int afs_debug;
+#ifdef AFS_OBSD36_ENV
+#define DROPCNP(cnp) pool_put(&namei_pool, (cnp)->cn_pnbuf)
+#else
+#define DROPCNP(cnp) FREE((cnp)->cn_pnbuf, M_NAMEI)
+#endif
 
-#undef vrele
-#define vrele afs_nbsd_rele
-#undef VREF
-#define VREF afs_nbsd_ref
-
-extern int afs_lookup();
-extern int afs_open();
-extern int afs_close();
-extern int HandleIoctl(struct vcache *avc, afs_int32 acom, struct afs_ioctl *adata);
-extern int afs_fsync();
-extern int afs_remove();
-extern int afs_link();
-extern int afs_rename();
-extern int afs_mkdir();
-extern int afs_rmdir();
-extern int afs_symlink();
-extern int afs_readdir();
-extern int afs_readlink();
+int afs_debug;
 
 int
-afs_nbsd_lookup(ap)
-struct vop_lookup_args /* {
-                         struct vnodeop_desc * a_desc;
-                         struct vnode *a_dvp;
-                         struct vnode **a_vpp;
-                         struct componentname *a_cnp;
-                         } */ *ap;
+afs_obsd_lookup(void *v)
 {
+    struct vop_lookup_args     /* {
+                                * struct vnodeop_desc * a_desc;
+                                * struct vnode *a_dvp;
+                                * struct vnode **a_vpp;
+                                * struct componentname *a_cnp;
+                                * } */ *ap = v;
     int code;
     struct vcache *vcp;
     struct vnode *vp, *dvp;
     int flags = ap->a_cnp->cn_flags;
-    int lockparent;                    /* 1 => lockparent flag is set */
-    int wantparent;                    /* 1 => wantparent or lockparent flag */
+    int lockparent;            /* 1 => lockparent flag is set */
+    int wantparent;            /* 1 => wantparent or lockparent flag */
 
     GETNAME();
     lockparent = flags & LOCKPARENT;
-    wantparent = flags & (LOCKPARENT|WANTPARENT);
+    wantparent = flags & (LOCKPARENT | WANTPARENT);
 #ifdef PDIRUNLOCK
     cnp->cn_flags &= ~PDIRUNLOCK;
 #endif
@@ -257,13 +249,14 @@ struct vop_lookup_args /* {
     }
     dvp = ap->a_dvp;
     if (afs_debug & AFSDEB_VNLAYER && !(dvp->v_flag & VROOT))
-       printf("nbsd_lookup dvp %p flags %x name %s cnt %d\n", dvp, flags, name, dvp->v_usecount);
+       printf("nbsd_lookup dvp %p flags %x name %s cnt %d\n", dvp, flags,
+              name, dvp->v_usecount);
     AFS_GLOCK();
     code = afs_lookup(VTOAFS(dvp), name, &vcp, cnp->cn_cred);
     AFS_GUNLOCK();
     if (code) {
-       if ((cnp->cn_nameiop == CREATE || cnp->cn_nameiop == RENAME) &&
-           (flags & ISLASTCN) && code == ENOENT)
+       if ((cnp->cn_nameiop == CREATE || cnp->cn_nameiop == RENAME)
+           && (flags & ISLASTCN) && code == ENOENT)
            code = EJUSTRETURN;
        if (cnp->cn_nameiop != LOOKUP && (flags & ISLASTCN))
            cnp->cn_flags |= SAVENAME;
@@ -271,7 +264,7 @@ struct vop_lookup_args /* {
        *ap->a_vpp = NULL;
        return (code);
     }
-    vp = AFSTOV(vcp);                  /* always get a node if no error */
+    vp = AFSTOV(vcp);          /* always get a node if no error */
 
     /*
      * The parent directory comes in locked.  We unlock it on return
@@ -281,12 +274,12 @@ struct vop_lookup_args /* {
 
     if (vp == dvp) {
        /* they're the same; afs_lookup() already ref'ed the leaf.
-          It came in locked, so we don't need to ref OR lock it */
+        * It came in locked, so we don't need to ref OR lock it */
        if (afs_debug & AFSDEB_VNLAYER)
            printf("ref'ed %p as .\n", dvp);
     } else {
        if (!lockparent || !(flags & ISLASTCN)) {
-           VOP_UNLOCK(dvp, 0, curproc);                /* done with parent. */
+           VOP_UNLOCK(dvp, 0, curproc);        /* done with parent. */
 #ifdef PDIRUNLOCK
            cnp->cn_flags |= PDIRUNLOCK;
 #endif
@@ -308,14 +301,14 @@ struct vop_lookup_args /* {
 }
 
 int
-afs_nbsd_create(ap)
-       struct vop_create_args /* {
-               struct vnode *a_dvp;
-               struct vnode **a_vpp;
-               struct componentname *a_cnp;
-               struct vattr *a_vap;
-       } */ *ap;
+afs_obsd_create(void *v)
 {
+    struct vop_create_args     /* {
+                                * struct vnode *a_dvp;
+                                * struct vnode **a_vpp;
+                                * struct componentname *a_cnp;
+                                * struct vattr *a_vap;
+                                * } */ *ap = v;
     int code = 0;
     struct vcache *vcp;
     struct vnode *dvp = ap->a_dvp;
@@ -327,25 +320,25 @@ afs_nbsd_create(ap)
     /* vnode layer handles excl/nonexcl */
 
     AFS_GLOCK();
-    code = afs_create(VTOAFS(dvp), name, ap->a_vap, NONEXCL,
-                      ap->a_vap->va_mode, &vcp,
-                      cnp->cn_cred);
+    code =
+       afs_create(VTOAFS(dvp), name, ap->a_vap, NONEXCL, ap->a_vap->va_mode,
+                  &vcp, cnp->cn_cred);
     AFS_GUNLOCK();
     if (code) {
        VOP_ABORTOP(dvp, cnp);
        vput(dvp);
        DROPNAME();
-       return(code);
+       return (code);
     }
 
     if (vcp) {
        *ap->a_vpp = AFSTOV(vcp);
        vn_lock(AFSTOV(vcp), LK_EXCLUSIVE | LK_RETRY, curproc);
-    }
-    else *ap->a_vpp = 0;
+    } else
+       *ap->a_vpp = 0;
 
     if ((cnp->cn_flags & SAVESTART) == 0)
-       FREE(cnp->cn_pnbuf, M_NAMEI);
+       DROPCNP(cnp);
     vput(dvp);
     DROPNAME();
     if (afs_debug & AFSDEB_VNLAYER)
@@ -354,28 +347,28 @@ afs_nbsd_create(ap)
 }
 
 int
-afs_nbsd_mknod(ap)
-       struct vop_mknod_args /* {
-               struct vnode *a_dvp;
-               struct vnode **a_vpp;
-               struct componentname *a_cnp;
-               struct vattr *a_vap;
-       } */ *ap;
+afs_obsd_mknod(void *v)
 {
-    free(ap->a_cnp->cn_pnbuf, M_NAMEI);
+    struct vop_mknod_args      /* {
+                                * struct vnode *a_dvp;
+                                * struct vnode **a_vpp;
+                                * struct componentname *a_cnp;
+                                * struct vattr *a_vap;
+                                * } */ *ap = v;
+    DROPCNP(ap->a_cnp);
     vput(ap->a_dvp);
-    return(ENODEV);
+    return (ENODEV);
 }
 
 int
-afs_nbsd_open(ap)
-       struct vop_open_args /* {
-               struct vnode *a_vp;
-               int  a_mode;
-               struct ucred *a_cred;
-               struct proc *a_p;
-       } */ *ap;
+afs_obsd_open(void *v)
 {
+    struct vop_open_args       /* {
+                                * struct vnode *a_vp;
+                                * int  a_mode;
+                                * struct ucred *a_cred;
+                                * struct proc *a_p;
+                                * } */ *ap = v;
     int code;
     struct vcache *vc = VTOAFS(ap->a_vp);
 
@@ -390,14 +383,14 @@ afs_nbsd_open(ap)
 }
 
 int
-afs_nbsd_close(ap)
-       struct vop_close_args /* {
-               struct vnode *a_vp;
-               int  a_fflag;
-               struct ucred *a_cred;
-               struct proc *a_p;
-       } */ *ap;
+afs_obsd_close(void *v)
 {
+    struct vop_close_args      /* {
+                                * struct vnode *a_vp;
+                                * int  a_fflag;
+                                * struct ucred *a_cred;
+                                * struct proc *a_p;
+                                * } */ *ap = v;
     int code;
 
     AFS_GLOCK();
@@ -407,14 +400,14 @@ afs_nbsd_close(ap)
 }
 
 int
-afs_nbsd_access(ap)
-       struct vop_access_args /* {
-               struct vnode *a_vp;
-               int  a_mode;
-               struct ucred *a_cred;
-               struct proc *a_p;
-       } */ *ap;
+afs_obsd_access(void *v)
 {
+    struct vop_access_args     /* {
+                                * struct vnode *a_vp;
+                                * int  a_mode;
+                                * struct ucred *a_cred;
+                                * struct proc *a_p;
+                                * } */ *ap = v;
     int code;
 
     AFS_GLOCK();
@@ -424,14 +417,14 @@ afs_nbsd_access(ap)
 }
 
 int
-afs_nbsd_getattr(ap)
-       struct vop_getattr_args /* {
-               struct vnode *a_vp;
-               struct vattr *a_vap;
-               struct ucred *a_cred;
-               struct proc *a_p;
-       } */ *ap;
+afs_obsd_getattr(void *v)
 {
+    struct vop_getattr_args    /* {
+                                * struct vnode *a_vp;
+                                * struct vattr *a_vap;
+                                * struct ucred *a_cred;
+                                * struct proc *a_p;
+                                * } */ *ap = v;
     int code;
 
     AFS_GLOCK();
@@ -441,14 +434,14 @@ afs_nbsd_getattr(ap)
 }
 
 int
-afs_nbsd_setattr(ap)
-       struct vop_setattr_args /* {
-               struct vnode *a_vp;
-               struct vattr *a_vap;
-               struct ucred *a_cred;
-               struct proc *a_p;
-       } */ *ap;
+afs_obsd_setattr(void *v)
 {
+    struct vop_setattr_args    /* {
+                                * struct vnode *a_vp;
+                                * struct vattr *a_vap;
+                                * struct ucred *a_cred;
+                                * struct proc *a_p;
+                                * } */ *ap = v;
     int code;
 
     AFS_GLOCK();
@@ -458,55 +451,58 @@ afs_nbsd_setattr(ap)
 }
 
 int
-afs_nbsd_read(ap)
-       struct vop_read_args /* {
-               struct vnode *a_vp;
-               struct uio *a_uio;
-               int a_ioflag;
-               struct ucred *a_cred;
-       } */ *ap;
+afs_obsd_read(void *v)
 {
+    struct vop_read_args       /* {
+                                * struct vnode *a_vp;
+                                * struct uio *a_uio;
+                                * int a_ioflag;
+                                * struct ucred *a_cred;
+                                * } */ *ap = v;
     int code;
 
     AFS_GLOCK();
-    code = afs_read(VTOAFS(ap->a_vp), ap->a_uio, ap->a_cred, (daddr_t)0, NULL, 0);
+    code =
+       afs_read(VTOAFS(ap->a_vp), ap->a_uio, ap->a_cred, (daddr_t) 0, NULL,
+                0);
     AFS_GUNLOCK();
     return code;
 }
 
 int
-afs_nbsd_write(ap)
-       struct vop_write_args /* {
-               struct vnode *a_vp;
-               struct uio *a_uio;
-               int a_ioflag;
-               struct ucred *a_cred;
-       } */ *ap;
+afs_obsd_write(void *v)
 {
+    struct vop_write_args      /* {
+                                * struct vnode *a_vp;
+                                * struct uio *a_uio;
+                                * int a_ioflag;
+                                * struct ucred *a_cred;
+                                * } */ *ap = v;
     int code;
 
 #ifdef UVM
-    (void) uvm_vnp_uncache(ap->a_vp);  /* toss stale pages */
+    (void)uvm_vnp_uncache(ap->a_vp);   /* toss stale pages */
 #else
     vnode_pager_uncache(ap->a_vp);
 #endif
     AFS_GLOCK();
-    code = afs_write(VTOAFS(ap->a_vp), ap->a_uio, ap->a_ioflag, ap->a_cred, 0);
+    code =
+       afs_write(VTOAFS(ap->a_vp), ap->a_uio, ap->a_ioflag, ap->a_cred, 0);
     AFS_GUNLOCK();
     return code;
 }
 
 int
-afs_nbsd_ioctl(ap)
-       struct vop_ioctl_args /* {
-               struct vnode *a_vp;
-               int  a_command;
-               caddr_t  a_data;
-               int  a_fflag;
-               struct ucred *a_cred;
-               struct proc *a_p;
-       } */ *ap;
+afs_obsd_ioctl(void *v)
 {
+    struct vop_ioctl_args      /* {
+                                * struct vnode *a_vp;
+                                * int  a_command;
+                                * caddr_t  a_data;
+                                * int  a_fflag;
+                                * struct ucred *a_cred;
+                                * struct proc *a_p;
+                                * } */ *ap = v;
     int code;
 
     /* in case we ever get in here... */
@@ -515,7 +511,9 @@ afs_nbsd_ioctl(ap)
     AFS_GLOCK();
     if (((ap->a_command >> 8) & 0xff) == 'V')
        /* This is a VICEIOCTL call */
-       code = HandleIoctl(VTOAFS(ap->a_vp), ap->a_command, (struct afs_ioctl *) ap->a_data);
+       code =
+           HandleIoctl(VTOAFS(ap->a_vp), ap->a_command,
+                       (struct afs_ioctl *)ap->a_data);
     else
        /* No-op call; just return. */
        code = ENOTTY;
@@ -523,32 +521,21 @@ afs_nbsd_ioctl(ap)
     return code;
 }
 
-/* ARGSUSED */
 int
-afs_nbsd_select(ap)
-       struct vop_select_args /* {
-               struct vnode *a_vp;
-               int  a_which;
-               int  a_fflags;
-               struct ucred *a_cred;
-               struct proc *a_p;
-       } */ *ap;
+afs_obsd_select(void *v)
 {
-    /*
-     * We should really check to see if I/O is possible.
-     */
-    return (1);
+    return 1;
 }
 
 int
-afs_nbsd_fsync(ap)
-       struct vop_fsync_args /* {
-               struct vnode *a_vp;
-               struct ucred *a_cred;
-               int a_waitfor;
-               struct proc *a_p;
-       } */ *ap;
+afs_obsd_fsync(void *v)
 {
+    struct vop_fsync_args      /* {
+                                * struct vnode *a_vp;
+                                * struct ucred *a_cred;
+                                * int a_waitfor;
+                                * struct proc *a_p;
+                                * } */ *ap = v;
     int wait = ap->a_waitfor == MNT_WAIT;
     struct vnode *vp = ap->a_vp;
     int code;
@@ -561,39 +548,39 @@ afs_nbsd_fsync(ap)
 }
 
 int
-afs_nbsd_remove(ap)
-       struct vop_remove_args /* {
-               struct vnode *a_dvp;
-               struct vnode *a_vp;
-               struct componentname *a_cnp;
-       } */ *ap;
+afs_obsd_remove(void *v)
 {
+    struct vop_remove_args     /* {
+                                * struct vnode *a_dvp;
+                                * struct vnode *a_vp;
+                                * struct componentname *a_cnp;
+                                * } */ *ap = v;
     int code;
     struct vnode *vp = ap->a_vp;
     struct vnode *dvp = ap->a_dvp;
 
     GETNAME();
     AFS_GLOCK();
-    code =  afs_remove(VTOAFS(dvp), name, cnp->cn_cred);
+    code = afs_remove(VTOAFS(dvp), name, cnp->cn_cred);
     AFS_GUNLOCK();
     if (dvp == vp)
        vrele(vp);
     else
        vput(vp);
     vput(dvp);
-    FREE(cnp->cn_pnbuf, M_NAMEI);
+    DROPCNP(cnp);
     DROPNAME();
     return code;
 }
 
 int
-afs_nbsd_link(ap)
-       struct vop_link_args /* {
-               struct vnode *a_vp;
-               struct vnode *a_tdvp;
-               struct componentname *a_cnp;
-       } */ *ap;
+afs_obsd_link(void *v)
 {
+    struct vop_link_args       /* {
+                                * struct vnode *a_vp;
+                                * struct vnode *a_tdvp;
+                                * struct componentname *a_cnp;
+                                * } */ *ap = v;
     int code;
     struct vnode *dvp = ap->a_dvp;
     struct vnode *vp = ap->a_vp;
@@ -617,27 +604,27 @@ afs_nbsd_link(ap)
     AFS_GLOCK();
     code = afs_link(VTOAFS(vp), VTOAFS(dvp), name, cnp->cn_cred);
     AFS_GUNLOCK();
-    FREE(cnp->cn_pnbuf, M_NAMEI);
+    DROPCNP(cnp);
     if (dvp != vp)
        VOP_UNLOCK(vp, 0, curproc);
 
-out:
+  out:
     vput(dvp);
     DROPNAME();
     return code;
 }
 
 int
-afs_nbsd_rename(ap)
-       struct vop_rename_args  /* {
-               struct vnode *a_fdvp;
-               struct vnode *a_fvp;
-               struct componentname *a_fcnp;
-               struct vnode *a_tdvp;
-               struct vnode *a_tvp;
-               struct componentname *a_tcnp;
-       } */ *ap;
+afs_obsd_rename(void *v)
 {
+    struct vop_rename_args     /* {
+                                * struct vnode *a_fdvp;
+                                * struct vnode *a_fvp;
+                                * struct componentname *a_fcnp;
+                                * struct vnode *a_tdvp;
+                                * struct vnode *a_tvp;
+                                * struct componentname *a_tcnp;
+                                * } */ *ap = v;
     int code = 0;
     struct componentname *fcnp = ap->a_fcnp;
     char *fname;
@@ -651,18 +638,18 @@ afs_nbsd_rename(ap)
     /*
      * Check for cross-device rename.
      */
-    if ((fvp->v_mount != tdvp->v_mount) ||
-       (tvp && (fvp->v_mount != tvp->v_mount))) {
+    if ((fvp->v_mount != tdvp->v_mount)
+       || (tvp && (fvp->v_mount != tvp->v_mount))) {
        code = EXDEV;
-abortit:
-       VOP_ABORTOP(tdvp, tcnp); /* XXX, why not in NFS? */
+      abortit:
+       VOP_ABORTOP(tdvp, tcnp);        /* XXX, why not in NFS? */
        if (tdvp == tvp)
            vrele(tdvp);
        else
            vput(tdvp);
        if (tvp)
            vput(tvp);
-       VOP_ABORTOP(fdvp, fcnp); /* XXX, why not in NFS? */
+       VOP_ABORTOP(fdvp, fcnp);        /* XXX, why not in NFS? */
        vrele(fdvp);
        vrele(fvp);
        return (code);
@@ -691,31 +678,32 @@ abortit:
        if ((fcnp->cn_flags & SAVESTART) == 0)
            panic("afs_rename: lost from startdir");
        fcnp->cn_nameiop = DELETE;
-       (void) relookup(fdvp, &fvp, fcnp);
+       (void)relookup(fdvp, &fvp, fcnp);
        return (VOP_REMOVE(fdvp, fvp, fcnp));
     }
 
     if ((code = vn_lock(fvp, LK_EXCLUSIVE | LK_RETRY, curproc)))
        goto abortit;
 
-    MALLOC(fname, char *, fcnp->cn_namelen+1, M_TEMP, M_WAITOK);
+    BSD_KMALLOC(fname, char *, fcnp->cn_namelen + 1, M_TEMP, M_WAITOK);
     bcopy(fcnp->cn_nameptr, fname, fcnp->cn_namelen);
     fname[fcnp->cn_namelen] = '\0';
-    MALLOC(tname, char *, tcnp->cn_namelen+1, M_TEMP, M_WAITOK);
+    BSD_KMALLOC(tname, char *, tcnp->cn_namelen + 1, M_TEMP, M_WAITOK);
     bcopy(tcnp->cn_nameptr, tname, tcnp->cn_namelen);
     tname[tcnp->cn_namelen] = '\0';
 
 
     AFS_GLOCK();
     /* XXX use "from" or "to" creds? NFS uses "to" creds */
-    code = afs_rename(VTOAFS(fdvp), fname, VTOAFS(tdvp), tname, tcnp->cn_cred);
+    code =
+       afs_rename(VTOAFS(fdvp), fname, VTOAFS(tdvp), tname, tcnp->cn_cred);
     AFS_GUNLOCK();
 
     VOP_UNLOCK(fvp, 0, curproc);
-    FREE(fname, M_TEMP);
-    FREE(tname, M_TEMP);
+    BSD_KFREE(fname, M_TEMP);
+    BSD_KFREE(tname, M_TEMP);
     if (code)
-       goto abortit;                   /* XXX */
+       goto abortit;           /* XXX */
     if (tdvp == tvp)
        vrele(tdvp);
     else
@@ -728,14 +716,14 @@ abortit:
 }
 
 int
-afs_nbsd_mkdir(ap)
-       struct vop_mkdir_args /* {
-               struct vnode *a_dvp;
-               struct vnode **a_vpp;
-               struct componentname *a_cnp;
-               struct vattr *a_vap;
-       } */ *ap;
+afs_obsd_mkdir(void *v)
 {
+    struct vop_mkdir_args      /* {
+                                * struct vnode *a_dvp;
+                                * struct vnode **a_vpp;
+                                * struct componentname *a_cnp;
+                                * struct vattr *a_vap;
+                                * } */ *ap = v;
     struct vnode *dvp = ap->a_dvp;
     struct vattr *vap = ap->a_vap;
     int code;
@@ -744,7 +732,7 @@ afs_nbsd_mkdir(ap)
     GETNAME();
 #ifdef DIAGNOSTIC
     if ((cnp->cn_flags & HASBUF) == 0)
-       panic("afs_nbsd_mkdir: no name");
+       panic("afs_obsd_mkdir: no name");
 #endif
     AFS_GLOCK();
     code = afs_mkdir(VTOAFS(dvp), name, vap, &vcp, cnp->cn_cred);
@@ -753,27 +741,27 @@ afs_nbsd_mkdir(ap)
        VOP_ABORTOP(dvp, cnp);
        vput(dvp);
        DROPNAME();
-       return(code);
+       return (code);
     }
     if (vcp) {
        *ap->a_vpp = AFSTOV(vcp);
        vn_lock(AFSTOV(vcp), LK_EXCLUSIVE | LK_RETRY, curproc);
     } else
        *ap->a_vpp = 0;
+    DROPCNP(cnp);
     DROPNAME();
-    FREE(cnp->cn_pnbuf, M_NAMEI);
     vput(dvp);
     return code;
 }
 
 int
-afs_nbsd_rmdir(ap)
-       struct vop_rmdir_args /* {
-               struct vnode *a_dvp;
-               struct vnode *a_vp;
-               struct componentname *a_cnp;
-       } */ *ap;
+afs_obsd_rmdir(void *v)
 {
+    struct vop_rmdir_args      /* {
+                                * struct vnode *a_dvp;
+                                * struct vnode *a_vp;
+                                * struct componentname *a_cnp;
+                                * } */ *ap = v;
     int code;
     struct vnode *vp = ap->a_vp;
     struct vnode *dvp = ap->a_dvp;
@@ -782,7 +770,7 @@ afs_nbsd_rmdir(ap)
     if (dvp == vp) {
        vrele(dvp);
        vput(vp);
-       FREE(cnp->cn_pnbuf, M_NAMEI);
+       DROPCNP(cnp);
        DROPNAME();
        return (EINVAL);
     }
@@ -797,64 +785,66 @@ afs_nbsd_rmdir(ap)
 }
 
 int
-afs_nbsd_symlink(ap)
-       struct vop_symlink_args /* {
-               struct vnode *a_dvp;
-               struct vnode **a_vpp;
-               struct componentname *a_cnp;
-               struct vattr *a_vap;
-               char *a_target;
-       } */ *ap;
+afs_obsd_symlink(void *v)
 {
+    struct vop_symlink_args    /* {
+                                * struct vnode *a_dvp;
+                                * struct vnode **a_vpp;
+                                * struct componentname *a_cnp;
+                                * struct vattr *a_vap;
+                                * char *a_target;
+                                * } */ *ap = v;
     struct vnode *dvp = ap->a_dvp;
     int code;
     /* NFS ignores a_vpp; so do we. */
 
     GETNAME();
     AFS_GLOCK();
-    code = afs_symlink(VTOAFS(dvp), name, ap->a_vap, ap->a_target,
-                       cnp->cn_cred);
+    code =
+       afs_symlink(VTOAFS(dvp), name, ap->a_vap, ap->a_target, cnp->cn_cred);
     AFS_GUNLOCK();
+    DROPCNP(cnp);
     DROPNAME();
-    FREE(cnp->cn_pnbuf, M_NAMEI);
     vput(dvp);
     return code;
 }
 
 int
-afs_nbsd_readdir(ap)
-       struct vop_readdir_args /* {
-               struct vnode *a_vp;
-               struct uio *a_uio;
-               struct ucred *a_cred;
-               int *a_eofflag;
-               int *a_ncookies;
-               u_long **a_cookies;
-       } */ *ap;
+afs_obsd_readdir(void *v)
 {
+    struct vop_readdir_args    /* {
+                                * struct vnode *a_vp;
+                                * struct uio *a_uio;
+                                * struct ucred *a_cred;
+                                * int *a_eofflag;
+                                * int *a_ncookies;
+                                * u_long **a_cookies;
+                                * } */ *ap = v;
     int code;
 
     AFS_GLOCK();
 #ifdef AFS_HAVE_COOKIES
     printf("readdir %p cookies %p ncookies %d\n", ap->a_vp, ap->a_cookies,
           ap->a_ncookies);
-    code = afs_readdir(VTOAFS(ap->a_vp), ap->a_uio, ap->a_cred,
-                      ap->a_eofflag, ap->a_ncookies, ap->a_cookies);
+    code =
+       afs_readdir(VTOAFS(ap->a_vp), ap->a_uio, ap->a_cred, ap->a_eofflag,
+                   ap->a_ncookies, ap->a_cookies);
 #else
-    code = afs_readdir(VTOAFS(ap->a_vp), ap->a_uio, ap->a_cred, ap->a_eofflag);
+    code =
+       afs_readdir(VTOAFS(ap->a_vp), ap->a_uio, ap->a_cred, ap->a_eofflag);
 #endif
     AFS_GUNLOCK();
     return code;
 }
 
 int
-afs_nbsd_readlink(ap)
-       struct vop_readlink_args /* {
-               struct vnode *a_vp;
-               struct uio *a_uio;
-               struct ucred *a_cred;
-       } */ *ap;
+afs_obsd_readlink(void *v)
 {
+    struct vop_readlink_args   /* {
+                                * struct vnode *a_vp;
+                                * struct uio *a_uio;
+                                * struct ucred *a_cred;
+                                * } */ *ap = v;
     int code;
 
     AFS_GLOCK();
@@ -866,11 +856,11 @@ afs_nbsd_readlink(ap)
 extern int prtactive;
 
 int
-afs_nbsd_inactive(ap)
-       struct vop_inactive_args /* {
-               struct vnode *a_vp;
-       } */ *ap;
+afs_obsd_inactive(void *v)
 {
+    struct vop_inactive_args   /* {
+                                * struct vnode *a_vp;
+                                * } */ *ap = v;
     struct vnode *vp = ap->a_vp;
     struct vcache *vc = VTOAFS(vp);
     int haveGlock = ISAFS_GLOCK();
@@ -878,11 +868,11 @@ afs_nbsd_inactive(ap)
     AFS_STATCNT(afs_inactive);
 
     if (prtactive && vp->v_usecount != 0)
-       vprint("afs_nbsd_inactive(): pushing active", vp);
+       vprint("afs_obsd_inactive(): pushing active", vp);
 
     if (!haveGlock)
        AFS_GLOCK();
-    afs_InactiveVCache(vc, 0);   /* decrs ref counts */
+    afs_InactiveVCache(vc, 0); /* decrs ref counts */
     if (!haveGlock)
        AFS_GUNLOCK();
 
@@ -891,92 +881,103 @@ afs_nbsd_inactive(ap)
 }
 
 int
-afs_nbsd_reclaim(ap)
-       struct vop_reclaim_args /* {
-               struct vnode *a_vp;
-       } */ *ap;
+afs_obsd_reclaim(void *v)
 {
+    struct vop_reclaim_args    /* {
+                                * struct vnode *a_vp;
+                                * } */ *ap = v;
     int code, slept;
     struct vnode *vp = ap->a_vp;
     struct vcache *avc = VTOAFS(vp);
     int haveGlock = ISAFS_GLOCK();
     int haveVlock = CheckLock(&afs_xvcache);
 
+#if 0
+    printf("reclaim usecount %d\n", vp->v_usecount);
+    /* OK, there are no internal vrefCounts, so there shouldn't
+     * be any more refs here. */
+    vp->v_data = NULL;         /* remove from vnode */
+    avc->v = NULL;             /* also drop the ptr to vnode */
+    return 0;
+#else
     if (!haveGlock)
        AFS_GLOCK();
     if (!haveVlock)
        ObtainWriteLock(&afs_xvcache, 901);
-#ifndef AFS_DISCON_ENV
-    code = afs_FlushVCache(avc, &slept); /* tosses our stuff from vnode */
-#else
     /* reclaim the vnode and the in-memory vcache, but keep the on-disk vcache */
-    code = afs_FlushVS(avc);
-#endif
+    code = afs_FlushVCache(avc, &slept);
     if (!haveVlock)
        ReleaseWriteLock(&afs_xvcache);
     if (!haveGlock)
        AFS_GUNLOCK();
     return code;
+#endif
 }
 
+#ifdef AFS_OBSD42_ENV
+#define VP_INTERLOCK NULL
+#else
+#define VP_INTERLOCK (&vp->v_interlock)
+#endif
+
 int
-afs_nbsd_lock(ap)
-       struct vop_lock_args /* {
-               struct vnode *a_vp;
-               int a_flags;
-               sturct proc *a_p;
-       } */ *ap;
+afs_obsd_lock(void *v)
 {
+    struct vop_lock_args       /* {
+                                * struct vnode *a_vp;
+                                * int a_flags;
+                                * sturct proc *a_p;
+                                * } */ *ap = v;
     struct vnode *vp = ap->a_vp;
     struct vcache *vc = VTOAFS(vp);
 
     if (!vc)
-       panic("afs_nbsd_lock: null vcache");
-    return lockmgr(&vc->rwlock, ap->a_flags | LK_CANRECURSE, &vp->v_interlock, ap->a_p);
+       panic("afs_obsd_lock: null vcache");
+    return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_CANRECURSE, VP_INTERLOCK, ap->a_p);
 }
 
 int
-afs_nbsd_unlock(ap)
-       struct vop_unlock_args /* {
-               struct vnode *a_vp;
-               int a_flags;
-               struct proc *a_p;
-       } */ *ap;
+afs_obsd_unlock(void *v)
 {
+    struct vop_unlock_args     /* {
+                                * struct vnode *a_vp;
+                                * int a_flags;
+                                * struct proc *a_p;
+                                * } */ *ap = v;
     struct vnode *vp = ap->a_vp;
     struct vcache *vc = VTOAFS(vp);
 
     if (!vc)
-       panic("afs_nbsd_unlock: null vcache");
-    return lockmgr(&vc->rwlock, ap->a_flags | LK_RELEASE, &vp->v_interlock, ap->a_p);
+       panic("afs_obsd_unlock: null vcache");
+    return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_RELEASE, VP_INTERLOCK, ap->a_p);
 }
 
 int
-afs_nbsd_bmap(ap)
-       struct vop_bmap_args /* {
-               struct vnode *a_vp;
-               daddr_t  a_bn;
-               struct vnode **a_vpp;
-               daddr_t *a_bnp;
-               int *a_runp;
-       } */ *ap;
+afs_obsd_bmap(void *v)
 {
+    struct vop_bmap_args       /* {
+                                * struct vnode *a_vp;
+                                * daddr_t  a_bn;
+                                * struct vnode **a_vpp;
+                                * daddr_t *a_bnp;
+                                * int *a_runp;
+                                * } */ *ap = v;
     struct vcache *vcp = VTOAFS(ap->a_vp);
 
     AFS_STATCNT(afs_bmap);
     if (ap->a_bnp)
-       ap->a_bnp = (daddr_t *) (ap->a_bn * (8192 / DEV_BSIZE));
+       *ap->a_bnp = ap->a_bn * btodb(8192);
     if (ap->a_vpp)
        *ap->a_vpp = (vcp) ? AFSTOV(vcp) : NULL;
     return 0;
 }
 
 int
-afs_nbsd_strategy(ap)
-    struct vop_strategy_args /* {
-       struct buf *a_bp;
-    } */ *ap;
+afs_obsd_strategy(void *v)
 {
+    struct vop_strategy_args   /* {
+                                * struct buf *a_bp;
+                                * } */ *ap = v;
     struct buf *abp = ap->a_bp;
     struct uio tuio;
     struct iovec tiovec[1];
@@ -991,14 +992,14 @@ afs_nbsd_strategy(ap)
     tuio.afsio_iovcnt = 1;
     tuio.afsio_seg = AFS_UIOSYS;
     tuio.afsio_resid = len;
-    tiovec[0].iov_base = abp->b_un.b_addr;
+    tiovec[0].iov_base = abp->b_data;
     tiovec[0].iov_len = len;
 
     AFS_GLOCK();
     if ((abp->b_flags & B_READ) == B_READ) {
        code = afs_rdwr(tvc, &tuio, UIO_READ, 0, credp);
        if (code == 0 && tuio.afsio_resid > 0)
-           bzero(abp->b_un.b_addr + len - tuio.afsio_resid, tuio.afsio_resid);
+           bzero(abp->b_data + len - tuio.afsio_resid, tuio.afsio_resid);
     } else
        code = afs_rdwr(tvc, &tuio, UIO_WRITE, 0, credp);
     AFS_GUNLOCK();
@@ -1009,27 +1010,28 @@ afs_nbsd_strategy(ap)
 }
 
 int
-afs_nbsd_print(ap)
-       struct vop_print_args /* {
-               struct vnode *a_vp;
-       } */ *ap;
+afs_obsd_print(void *v)
 {
+    struct vop_print_args      /* {
+                                * struct vnode *a_vp;
+                                * } */ *ap = v;
     struct vnode *vp = ap->a_vp;
     struct vcache *vc = VTOAFS(ap->a_vp);
 
-    printf("tag %d, fid: %d.%x.%x.%x, ", vp->v_tag, vc->fid.Cell,
-          (int) vc->fid.Fid.Volume, (int) vc->fid.Fid.Vnode, (int) vc->fid.Fid.Unique);
+    printf("tag %d, fid: %d.%x.%x.%x, ", vp->v_tag, vc->f.fid.Cell,
+          (int)vc->f.fid.Fid.Volume, (int)vc->f.fid.Fid.Vnode,
+          (int)vc->f.fid.Fid.Unique);
     lockmgr_printinfo(&vc->rwlock);
     printf("\n");
     return 0;
 }
 
 int
-afs_nbsd_islocked(ap)
-       struct vop_islocked_args /* {
-               struct vnode *a_vp;
-       } */ *ap;
+afs_obsd_islocked(void *v)
 {
+    struct vop_islocked_args   /* {
+                                * struct vnode *a_vp;
+                                * } */ *ap = v;
     return lockstatus(&VTOAFS(ap->a_vp)->rwlock);
 }
 
@@ -1037,13 +1039,13 @@ afs_nbsd_islocked(ap)
  * Return POSIX pathconf information applicable to ufs filesystems.
  */
 int
-afs_nbsd_pathconf(ap)
-       struct vop_pathconf_args /* {
-               struct vnode *a_vp;
-               int a_name;
-               int *a_retval;
-       } */ *ap;
+afs_obsd_pathconf(void *v)
 {
+    struct vop_pathconf_args   /* {
+                                * struct vnode *a_vp;
+                                * int a_name;
+                                * int *a_retval;
+                                * } */ *ap = v;
     AFS_STATCNT(afs_cntl);
     switch (ap->a_name) {
     case _PC_LINK_MAX:
@@ -1071,26 +1073,28 @@ afs_nbsd_pathconf(ap)
 }
 
 extern int
-afs_lockctl(struct vcache *avc, struct AFS_FLOCK *af, int acmd, struct AFS_UCRED *acred, pid_t clid);
+  afs_lockctl(struct vcache *avc, struct AFS_FLOCK *af, int acmd,
+             afs_ucred_t *acred, pid_t clid);
 
 /*
  * Advisory record locking support (fcntl() POSIX style)
  */
 int
-afs_nbsd_advlock(ap)
-       struct vop_advlock_args /* {
-               struct vnode *a_vp;
-               caddr_t  a_id;
-               int  a_op;
-               struct flock *a_fl;
-               int  a_flags;
-       } */ *ap;
+afs_obsd_advlock(void *v)
 {
+    struct vop_advlock_args    /* {
+                                * struct vnode *a_vp;
+                                * caddr_t  a_id;
+                                * int  a_op;
+                                * struct flock *a_fl;
+                                * int  a_flags;
+                                * } */ *ap = v;
     int code;
 
     AFS_GLOCK();
-    code = afs_lockctl(VTOAFS(ap->a_vp), ap->a_fl, ap->a_op, osi_curcred(),
-                      (int) ap->a_id);
+    code =
+       afs_lockctl(VTOAFS(ap->a_vp), ap->a_fl, ap->a_op, osi_curcred(),
+                   (int)ap->a_id);
     AFS_GUNLOCK();
     return code;
 }