freebsd-50-20030429
authorJim Rees <rees@umich.edu>
Tue, 29 Apr 2003 22:39:36 +0000 (22:39 +0000)
committerJim Rees <rees@umich.edu>
Tue, 29 Apr 2003 22:39:36 +0000 (22:39 +0000)
FreeBSD 5.0 kernel module compiles now, but not likely to work yet.

src/afs/FBSD/osi_vfsops.c
src/afs/FBSD/osi_vnodeops.c
src/afs/FBSD/vnode_if.h
src/afs/FBSD/vnode_if_4x.h [new file with mode: 0644]
src/afs/FBSD/vnode_if_5x.h [new file with mode: 0644]
src/afs/afs_call.c
src/afs/afs_pioctl.c

index 4ac23d0..5820173 100644 (file)
@@ -60,7 +60,6 @@ struct proc *p;
     /* ndp contains the mounted-from device.  Just ignore it.
        we also don't care about our proc struct. */
     size_t size;
-    int error;
 
     if (mp->mnt_flag & MNT_UPDATE)
        return EINVAL;
@@ -111,11 +110,15 @@ afs_root(struct mount *mp,
 {
     int error;
     struct vrequest treq;
-    register struct vcache *tvp=0;
-    struct proc *p=curproc;
-    struct ucred cr;
+    register struct vcache *tvp = 0;
+#ifdef AFS_FBSD50_ENV
+    struct thread *td = curthread;
+    struct ucred cr = *td->td_ucred;
+#else
+    struct proc *p = curproc;
+    struct ucred cr = *p->p_cred->pc_ucred;
+#endif
 
-    cr=*p->p_cred->pc_ucred;
     AFS_GLOCK();
     AFS_STATCNT(afs_root);
     if (afs_globalVp && (afs_globalVp->states & CStatd)) {
@@ -140,7 +143,11 @@ afs_root(struct mount *mp,
     if (tvp) {
         osi_vnhold(tvp,0);
     AFS_GUNLOCK();
+#ifdef AFS_FBSD50_ENV
+        vn_lock(AFSTOV(tvp), LK_EXCLUSIVE | LK_RETRY, td);
+#else
         vn_lock(AFSTOV(tvp), LK_EXCLUSIVE | LK_RETRY, p);
+#endif
     AFS_GLOCK();
        afs_globalVFS = mp;
        *vpp = AFSTOV(tvp);
@@ -160,12 +167,17 @@ struct vnode *vp;
 int lfl;
 {
     int error;
+
     printf("vget called. help!\n");
     if (vp->v_usecount < 0) {
        vprint("bad usecount", vp);
        panic("afs_vget");
     }
+#ifdef AFS_FBSD50_ENV
+    error = vget(vp, lfl, curthread);
+#else
     error = vget(vp, lfl, curproc);
+#endif
     if (!error)
        insmntque(vp, afs_globalVFS);   /* take off free list */
     return error;
index 39fa35a..d24206f 100644 (file)
@@ -31,7 +31,9 @@ int afs_vop_getpages(struct vop_getpages_args *);
 int afs_vop_putpages(struct vop_putpages_args *);
 int afs_vop_ioctl(struct vop_ioctl_args *);
 int afs_vop_poll(struct vop_poll_args *);
+#ifndef AFS_FBSD50_ENV
 int afs_vop_mmap(struct vop_mmap_args *);
+#endif
 int afs_vop_fsync(struct vop_fsync_args *);
 int afs_vop_remove(struct vop_remove_args *);
 int afs_vop_link(struct vop_link_args *);
@@ -80,7 +82,9 @@ struct vnodeopv_entry_desc afs_vnodeop_entries[] = {
        { &vop_lookup_desc, (vop_t *) afs_vop_lookup },          /* lookup */
        { &vop_mkdir_desc, (vop_t *) afs_vop_mkdir },            /* mkdir */
        { &vop_mknod_desc, (vop_t *) afs_vop_mknod },            /* mknod */
+#ifndef AFS_FBSD50_ENV
        { &vop_mmap_desc, (vop_t *) afs_vop_mmap },              /* mmap */
+#endif
        { &vop_open_desc, (vop_t *) afs_vop_open },              /* open */
        { &vop_poll_desc, (vop_t *) afs_vop_poll },          /* select */
        { &vop_print_desc, (vop_t *) afs_vop_print },            /* print */
@@ -111,6 +115,11 @@ struct vnodeopv_desc afs_vnodeop_opv_desc =
     name[cnp->cn_namelen] = '\0'
 
 #define DROPNAME() FREE(name, M_TEMP)
+
+/* This is a bit of a cheat... */
+#ifdef AFS_FBSD50_ENV
+#define a_p a_td
+#endif
        
 
 
@@ -303,12 +312,12 @@ afs_vop_close(ap)
        } */ *ap;
 {
     int code;
-    struct vcache *avc=ap->a_vp;
+    struct vcache *avc = VTOAFS(ap->a_vp);
     AFS_GLOCK();
     if (ap->a_cred) 
-        code=afs_close(avc, ap->a_fflag, ap->a_cred, ap->a_p);
+        code = afs_close(avc, ap->a_fflag, ap->a_cred, ap->a_p);
     else
-        code=afs_close(avc, ap->a_fflag, &afs_osi_cred, ap->a_p);
+        code = afs_close(avc, ap->a_fflag, &afs_osi_cred, ap->a_p);
     afs_BozonLock(&avc->pvnLock, avc);
     osi_FlushPages(avc, ap->a_cred);        /* hold bozon lock, but not basic vnode lock */
     afs_BozonUnlock(&avc->pvnLock, avc);
@@ -327,7 +336,7 @@ afs_vop_access(ap)
 {
     int code;
     AFS_GLOCK();
-    code=afs_access(VTOAFS(ap->a_vp), ap->a_mode, ap->a_cred);
+    code = afs_access(VTOAFS(ap->a_vp), ap->a_mode, ap->a_cred);
     AFS_GUNLOCK();
     return code;
 }
@@ -342,7 +351,7 @@ afs_vop_getattr(ap)
 {
     int code;
     AFS_GLOCK();
-    code=afs_getattr(VTOAFS(ap->a_vp), ap->a_vap, ap->a_cred);
+    code = afs_getattr(VTOAFS(ap->a_vp), ap->a_vap, ap->a_cred);
     AFS_GUNLOCK();
     return code;
 }
@@ -357,7 +366,7 @@ afs_vop_setattr(ap)
 {
     int code;
     AFS_GLOCK();
-    code=afs_setattr(VTOAFS(ap->a_vp), ap->a_vap, ap->a_cred);
+    code = afs_setattr(VTOAFS(ap->a_vp), ap->a_vap, ap->a_cred);
     AFS_GUNLOCK();
     return code;
 }int
@@ -375,7 +384,7 @@ afs_vop_read(ap)
     AFS_GLOCK();
     afs_BozonLock(&avc->pvnLock, avc);
     osi_FlushPages(avc, ap->a_cred);        /* hold bozon lock, but not basic vnode lock */
-    code=afs_read(avc, ap->a_uio, ap->a_cred, 0, 0, 0);
+    code = afs_read(avc, ap->a_uio, ap->a_cred, 0, 0, 0);
     afs_BozonUnlock(&avc->pvnLock, avc);
     AFS_GUNLOCK();
     return code;
@@ -441,7 +450,7 @@ afs_vop_getpages(ap)
     AFS_GLOCK();
     afs_BozonLock(&avc->pvnLock, avc);
     osi_FlushPages(avc, osi_curcred());  /* hold bozon lock, but not basic vnode lock */
-    code=afs_read(avc, &uio, osi_curcred(), 0, 0, 0);
+    code = afs_read(avc, &uio, osi_curcred(), 0, 0, 0);
     afs_BozonUnlock(&avc->pvnLock, avc);
     AFS_GUNLOCK();
     pmap_qremove(kva, npages);
@@ -515,11 +524,11 @@ afs_vop_write(ap)
        } */ *ap;
 {
     int code;
-    struct vcache *avc=VTOAFS(ap->a_vp);
+    struct vcache *avc = VTOAFS(ap->a_vp);
     AFS_GLOCK();
     afs_BozonLock(&avc->pvnLock, avc);
     osi_FlushPages(avc, ap->a_cred);        /* hold bozon lock, but not basic vnode lock */
-    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_BozonUnlock(&avc->pvnLock, avc);
     AFS_GUNLOCK();
     return code;
@@ -1030,13 +1039,14 @@ afs_vop_reclaim(ap)
                struct vnode *a_vp;
        } */ *ap;
 {
-    int error;
-    int sl;
+#ifdef AFS_DO_FLUSH_IN_RECLAIM
+    int error, sl;
+#endif
     register struct vnode *vp = ap->a_vp;
 
     cache_purge(vp);                    /* just in case... */
 
-#if 0 
+#ifdef AFS_DO_FLUSH_IN_RECLAIM
     AFS_GLOCK();
     error = afs_FlushVCache(VTOAFS(vp), &sl); /* tosses our stuff from vnode */
     AFS_GUNLOCK();
@@ -1133,9 +1143,15 @@ afs_vop_print(ap)
     register struct vnode *vp = ap->a_vp;
     register struct vcache *vc = VTOAFS(ap->a_vp);
     int s = vc->states;
+#ifdef AFS_FBSD50_ENV
+    printf("tag %s, fid: %ld.%x.%x.%x, opens %d, writers %d", vp->v_tag, vc->fid.Cell,
+          (u_int) vc->fid.Fid.Volume, (u_int) vc->fid.Fid.Vnode, (u_int) vc->fid.Fid.Unique,
+          vc->opens, vc->execsOrWriters);
+#else
     printf("tag %d, fid: %ld.%x.%x.%x, opens %d, writers %d", vp->v_tag, vc->fid.Cell,
-          vc->fid.Fid.Volume, vc->fid.Fid.Vnode, vc->fid.Fid.Unique, vc->opens,
-          vc->execsOrWriters);
+          (u_int) vc->fid.Fid.Volume, (u_int) vc->fid.Fid.Vnode, (u_int) vc->fid.Fid.Unique,
+          vc->opens, vc->execsOrWriters);
+#endif
     printf("\n  states%s%s%s%s%s", (s&CStatd) ? " statd" : "", (s&CRO) ? " readonly" : "",(s&CDirty) ? " dirty" : "",(s&CMAPPED) ? " mapped" : "", (s&CVFlushed) ? " flush in progress" : "");
     printf("\n");
     return 0;
index ded87a1..659f4fd 100644 (file)
-/*
- * This file is produced automatically.
- * Do not modify anything in here by hand.
- *
- * Created from @(#)vnode_if.sh        8.1 (Berkeley) 6/10/93
- */
-
-extern struct vnodeop_desc vop_default_desc;
-struct vop_islocked_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_islocked_desc;
-static __inline int VOP_ISLOCKED __P((
-       struct vnode *vp,
-       struct proc *p));
-static __inline int VOP_ISLOCKED(vp, p)
-       struct vnode *vp;
-       struct proc *p;
-{
-       struct vop_islocked_args a;
-       int rc;
-       a.a_desc = VDESC(vop_islocked);
-       a.a_vp = vp;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_islocked), &a);
-       return (rc);
-}
-struct vop_lookup_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_dvp;
-       struct vnode **a_vpp;
-       struct componentname *a_cnp;
-};
-extern struct vnodeop_desc vop_lookup_desc;
-static __inline int VOP_LOOKUP __P((
-       struct vnode *dvp,
-       struct vnode **vpp,
-       struct componentname *cnp));
-static __inline int VOP_LOOKUP(dvp, vpp, cnp)
-       struct vnode *dvp;
-       struct vnode **vpp;
-       struct componentname *cnp;
-{
-       struct vop_lookup_args a;
-       int rc;
-       a.a_desc = VDESC(vop_lookup);
-       a.a_dvp = dvp;
-       a.a_vpp = vpp;
-       a.a_cnp = cnp;
-       rc = VCALL(dvp, VOFFSET(vop_lookup), &a);
-       return (rc);
-}
-struct vop_cachedlookup_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_dvp;
-       struct vnode **a_vpp;
-       struct componentname *a_cnp;
-};
-extern struct vnodeop_desc vop_cachedlookup_desc;
-static __inline int VOP_CACHEDLOOKUP __P((
-       struct vnode *dvp,
-       struct vnode **vpp,
-       struct componentname *cnp));
-static __inline int VOP_CACHEDLOOKUP(dvp, vpp, cnp)
-       struct vnode *dvp;
-       struct vnode **vpp;
-       struct componentname *cnp;
-{
-       struct vop_cachedlookup_args a;
-       int rc;
-       a.a_desc = VDESC(vop_cachedlookup);
-       a.a_dvp = dvp;
-       a.a_vpp = vpp;
-       a.a_cnp = cnp;
-       rc = VCALL(dvp, VOFFSET(vop_cachedlookup), &a);
-       return (rc);
-}
-struct vop_create_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_dvp;
-       struct vnode **a_vpp;
-       struct componentname *a_cnp;
-       struct vattr *a_vap;
-};
-extern struct vnodeop_desc vop_create_desc;
-static __inline int VOP_CREATE __P((
-       struct vnode *dvp,
-       struct vnode **vpp,
-       struct componentname *cnp,
-       struct vattr *vap));
-static __inline int VOP_CREATE(dvp, vpp, cnp, vap)
-       struct vnode *dvp;
-       struct vnode **vpp;
-       struct componentname *cnp;
-       struct vattr *vap;
-{
-       struct vop_create_args a;
-       int rc;
-       a.a_desc = VDESC(vop_create);
-       a.a_dvp = dvp;
-       a.a_vpp = vpp;
-       a.a_cnp = cnp;
-       a.a_vap = vap;
-       rc = VCALL(dvp, VOFFSET(vop_create), &a);
-       return (rc);
-}
-struct vop_whiteout_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_dvp;
-       struct componentname *a_cnp;
-       int a_flags;
-};
-extern struct vnodeop_desc vop_whiteout_desc;
-static __inline int VOP_WHITEOUT __P((
-       struct vnode *dvp,
-       struct componentname *cnp,
-       int flags));
-static __inline int VOP_WHITEOUT(dvp, cnp, flags)
-       struct vnode *dvp;
-       struct componentname *cnp;
-       int flags;
-{
-       struct vop_whiteout_args a;
-       int rc;
-       a.a_desc = VDESC(vop_whiteout);
-       a.a_dvp = dvp;
-       a.a_cnp = cnp;
-       a.a_flags = flags;
-       rc = VCALL(dvp, VOFFSET(vop_whiteout), &a);
-       return (rc);
-}
-struct vop_mknod_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_dvp;
-       struct vnode **a_vpp;
-       struct componentname *a_cnp;
-       struct vattr *a_vap;
-};
-extern struct vnodeop_desc vop_mknod_desc;
-static __inline int VOP_MKNOD __P((
-       struct vnode *dvp,
-       struct vnode **vpp,
-       struct componentname *cnp,
-       struct vattr *vap));
-static __inline int VOP_MKNOD(dvp, vpp, cnp, vap)
-       struct vnode *dvp;
-       struct vnode **vpp;
-       struct componentname *cnp;
-       struct vattr *vap;
-{
-       struct vop_mknod_args a;
-       int rc;
-       a.a_desc = VDESC(vop_mknod);
-       a.a_dvp = dvp;
-       a.a_vpp = vpp;
-       a.a_cnp = cnp;
-       a.a_vap = vap;
-       rc = VCALL(dvp, VOFFSET(vop_mknod), &a);
-       return (rc);
-}
-struct vop_open_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       int a_mode;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_open_desc;
-static __inline int VOP_OPEN __P((
-       struct vnode *vp,
-       int mode,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_OPEN(vp, mode, cred, p)
-       struct vnode *vp;
-       int mode;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_open_args a;
-       int rc;
-       a.a_desc = VDESC(vop_open);
-       a.a_vp = vp;
-       a.a_mode = mode;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_open), &a);
-       return (rc);
-}
-struct vop_close_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       int a_fflag;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_close_desc;
-static __inline int VOP_CLOSE __P((
-       struct vnode *vp,
-       int fflag,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_CLOSE(vp, fflag, cred, p)
-       struct vnode *vp;
-       int fflag;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_close_args a;
-       int rc;
-       a.a_desc = VDESC(vop_close);
-       a.a_vp = vp;
-       a.a_fflag = fflag;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_close), &a);
-       return (rc);
-}
-struct vop_access_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       int a_mode;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_access_desc;
-static __inline int VOP_ACCESS __P((
-       struct vnode *vp,
-       int mode,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_ACCESS(vp, mode, cred, p)
-       struct vnode *vp;
-       int mode;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_access_args a;
-       int rc;
-       a.a_desc = VDESC(vop_access);
-       a.a_vp = vp;
-       a.a_mode = mode;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_access), &a);
-       return (rc);
-}
-struct vop_getattr_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct vattr *a_vap;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_getattr_desc;
-static __inline int VOP_GETATTR __P((
-       struct vnode *vp,
-       struct vattr *vap,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_GETATTR(vp, vap, cred, p)
-       struct vnode *vp;
-       struct vattr *vap;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_getattr_args a;
-       int rc;
-       a.a_desc = VDESC(vop_getattr);
-       a.a_vp = vp;
-       a.a_vap = vap;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_getattr), &a);
-       return (rc);
-}
-struct vop_setattr_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct vattr *a_vap;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_setattr_desc;
-static __inline int VOP_SETATTR __P((
-       struct vnode *vp,
-       struct vattr *vap,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_SETATTR(vp, vap, cred, p)
-       struct vnode *vp;
-       struct vattr *vap;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_setattr_args a;
-       int rc;
-       a.a_desc = VDESC(vop_setattr);
-       a.a_vp = vp;
-       a.a_vap = vap;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_setattr), &a);
-       return (rc);
-}
-struct vop_read_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct uio *a_uio;
-       int a_ioflag;
-       struct ucred *a_cred;
-};
-extern struct vnodeop_desc vop_read_desc;
-static __inline int VOP_READ __P((
-       struct vnode *vp,
-       struct uio *uio,
-       int ioflag,
-       struct ucred *cred));
-static __inline int VOP_READ(vp, uio, ioflag, cred)
-       struct vnode *vp;
-       struct uio *uio;
-       int ioflag;
-       struct ucred *cred;
-{
-       struct vop_read_args a;
-       int rc;
-       a.a_desc = VDESC(vop_read);
-       a.a_vp = vp;
-       a.a_uio = uio;
-       a.a_ioflag = ioflag;
-       a.a_cred = cred;
-       rc = VCALL(vp, VOFFSET(vop_read), &a);
-       return (rc);
-}
-struct vop_write_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct uio *a_uio;
-       int a_ioflag;
-       struct ucred *a_cred;
-};
-extern struct vnodeop_desc vop_write_desc;
-static __inline int VOP_WRITE __P((
-       struct vnode *vp,
-       struct uio *uio,
-       int ioflag,
-       struct ucred *cred));
-static __inline int VOP_WRITE(vp, uio, ioflag, cred)
-       struct vnode *vp;
-       struct uio *uio;
-       int ioflag;
-       struct ucred *cred;
-{
-       struct vop_write_args a;
-       int rc;
-       a.a_desc = VDESC(vop_write);
-       a.a_vp = vp;
-       a.a_uio = uio;
-       a.a_ioflag = ioflag;
-       a.a_cred = cred;
-       rc = VCALL(vp, VOFFSET(vop_write), &a);
-       return (rc);
-}
-struct vop_lease_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct proc *a_p;
-       struct ucred *a_cred;
-       int a_flag;
-};
-extern struct vnodeop_desc vop_lease_desc;
-static __inline int VOP_LEASE __P((
-       struct vnode *vp,
-       struct proc *p,
-       struct ucred *cred,
-       int flag));
-static __inline int VOP_LEASE(vp, p, cred, flag)
-       struct vnode *vp;
-       struct proc *p;
-       struct ucred *cred;
-       int flag;
-{
-       struct vop_lease_args a;
-       int rc;
-       a.a_desc = VDESC(vop_lease);
-       a.a_vp = vp;
-       a.a_p = p;
-       a.a_cred = cred;
-       a.a_flag = flag;
-       rc = VCALL(vp, VOFFSET(vop_lease), &a);
-       return (rc);
-}
-struct vop_ioctl_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       u_long a_command;
-       caddr_t a_data;
-       int a_fflag;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_ioctl_desc;
-static __inline int VOP_IOCTL __P((
-       struct vnode *vp,
-       u_long command,
-       caddr_t data,
-       int fflag,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_IOCTL(vp, command, data, fflag, cred, p)
-       struct vnode *vp;
-       u_long command;
-       caddr_t data;
-       int fflag;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_ioctl_args a;
-       int rc;
-       a.a_desc = VDESC(vop_ioctl);
-       a.a_vp = vp;
-       a.a_command = command;
-       a.a_data = data;
-       a.a_fflag = fflag;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_ioctl), &a);
-       return (rc);
-}
-struct vop_poll_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       int a_events;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_poll_desc;
-static __inline int VOP_POLL __P((
-       struct vnode *vp,
-       int events,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_POLL(vp, events, cred, p)
-       struct vnode *vp;
-       int events;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_poll_args a;
-       int rc;
-       a.a_desc = VDESC(vop_poll);
-       a.a_vp = vp;
-       a.a_events = events;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_poll), &a);
-       return (rc);
-}
-struct vop_kqfilter_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct knote *a_kn;
-};
-extern struct vnodeop_desc vop_kqfilter_desc;
-static __inline int VOP_KQFILTER __P((
-       struct vnode *vp,
-       struct knote *kn));
-static __inline int VOP_KQFILTER(vp, kn)
-       struct vnode *vp;
-       struct knote *kn;
-{
-       struct vop_kqfilter_args a;
-       int rc;
-       a.a_desc = VDESC(vop_kqfilter);
-       a.a_vp = vp;
-       a.a_kn = kn;
-       rc = VCALL(vp, VOFFSET(vop_kqfilter), &a);
-       return (rc);
-}
-struct vop_revoke_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       int a_flags;
-};
-extern struct vnodeop_desc vop_revoke_desc;
-static __inline int VOP_REVOKE __P((
-       struct vnode *vp,
-       int flags));
-static __inline int VOP_REVOKE(vp, flags)
-       struct vnode *vp;
-       int flags;
-{
-       struct vop_revoke_args a;
-       int rc;
-       a.a_desc = VDESC(vop_revoke);
-       a.a_vp = vp;
-       a.a_flags = flags;
-       rc = VCALL(vp, VOFFSET(vop_revoke), &a);
-       return (rc);
-}
-struct vop_mmap_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       int a_fflags;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_mmap_desc;
-static __inline int VOP_MMAP __P((
-       struct vnode *vp,
-       int fflags,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_MMAP(vp, fflags, cred, p)
-       struct vnode *vp;
-       int fflags;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_mmap_args a;
-       int rc;
-       a.a_desc = VDESC(vop_mmap);
-       a.a_vp = vp;
-       a.a_fflags = fflags;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_mmap), &a);
-       return (rc);
-}
-struct vop_fsync_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct ucred *a_cred;
-       int a_waitfor;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_fsync_desc;
-static __inline int VOP_FSYNC __P((
-       struct vnode *vp,
-       struct ucred *cred,
-       int waitfor,
-       struct proc *p));
-static __inline int VOP_FSYNC(vp, cred, waitfor, p)
-       struct vnode *vp;
-       struct ucred *cred;
-       int waitfor;
-       struct proc *p;
-{
-       struct vop_fsync_args a;
-       int rc;
-       a.a_desc = VDESC(vop_fsync);
-       a.a_vp = vp;
-       a.a_cred = cred;
-       a.a_waitfor = waitfor;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_fsync), &a);
-       return (rc);
-}
-struct vop_remove_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_dvp;
-       struct vnode *a_vp;
-       struct componentname *a_cnp;
-};
-extern struct vnodeop_desc vop_remove_desc;
-static __inline int VOP_REMOVE __P((
-       struct vnode *dvp,
-       struct vnode *vp,
-       struct componentname *cnp));
-static __inline int VOP_REMOVE(dvp, vp, cnp)
-       struct vnode *dvp;
-       struct vnode *vp;
-       struct componentname *cnp;
-{
-       struct vop_remove_args a;
-       int rc;
-       a.a_desc = VDESC(vop_remove);
-       a.a_dvp = dvp;
-       a.a_vp = vp;
-       a.a_cnp = cnp;
-       rc = VCALL(dvp, VOFFSET(vop_remove), &a);
-       return (rc);
-}
-struct vop_link_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_tdvp;
-       struct vnode *a_vp;
-       struct componentname *a_cnp;
-};
-extern struct vnodeop_desc vop_link_desc;
-static __inline int VOP_LINK __P((
-       struct vnode *tdvp,
-       struct vnode *vp,
-       struct componentname *cnp));
-static __inline int VOP_LINK(tdvp, vp, cnp)
-       struct vnode *tdvp;
-       struct vnode *vp;
-       struct componentname *cnp;
-{
-       struct vop_link_args a;
-       int rc;
-       a.a_desc = VDESC(vop_link);
-       a.a_tdvp = tdvp;
-       a.a_vp = vp;
-       a.a_cnp = cnp;
-       rc = VCALL(tdvp, VOFFSET(vop_link), &a);
-       return (rc);
-}
-struct vop_rename_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_fdvp;
-       struct vnode *a_fvp;
-       struct componentname *a_fcnp;
-       struct vnode *a_tdvp;
-       struct vnode *a_tvp;
-       struct componentname *a_tcnp;
-};
-extern struct vnodeop_desc vop_rename_desc;
-static __inline int VOP_RENAME __P((
-       struct vnode *fdvp,
-       struct vnode *fvp,
-       struct componentname *fcnp,
-       struct vnode *tdvp,
-       struct vnode *tvp,
-       struct componentname *tcnp));
-static __inline int VOP_RENAME(fdvp, fvp, fcnp, tdvp, tvp, tcnp)
-       struct vnode *fdvp;
-       struct vnode *fvp;
-       struct componentname *fcnp;
-       struct vnode *tdvp;
-       struct vnode *tvp;
-       struct componentname *tcnp;
-{
-       struct vop_rename_args a;
-       int rc;
-       a.a_desc = VDESC(vop_rename);
-       a.a_fdvp = fdvp;
-       a.a_fvp = fvp;
-       a.a_fcnp = fcnp;
-       a.a_tdvp = tdvp;
-       a.a_tvp = tvp;
-       a.a_tcnp = tcnp;
-       rc = VCALL(fdvp, VOFFSET(vop_rename), &a);
-       return (rc);
-}
-struct vop_mkdir_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_dvp;
-       struct vnode **a_vpp;
-       struct componentname *a_cnp;
-       struct vattr *a_vap;
-};
-extern struct vnodeop_desc vop_mkdir_desc;
-static __inline int VOP_MKDIR __P((
-       struct vnode *dvp,
-       struct vnode **vpp,
-       struct componentname *cnp,
-       struct vattr *vap));
-static __inline int VOP_MKDIR(dvp, vpp, cnp, vap)
-       struct vnode *dvp;
-       struct vnode **vpp;
-       struct componentname *cnp;
-       struct vattr *vap;
-{
-       struct vop_mkdir_args a;
-       int rc;
-       a.a_desc = VDESC(vop_mkdir);
-       a.a_dvp = dvp;
-       a.a_vpp = vpp;
-       a.a_cnp = cnp;
-       a.a_vap = vap;
-       rc = VCALL(dvp, VOFFSET(vop_mkdir), &a);
-       return (rc);
-}
-struct vop_rmdir_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_dvp;
-       struct vnode *a_vp;
-       struct componentname *a_cnp;
-};
-extern struct vnodeop_desc vop_rmdir_desc;
-static __inline int VOP_RMDIR __P((
-       struct vnode *dvp,
-       struct vnode *vp,
-       struct componentname *cnp));
-static __inline int VOP_RMDIR(dvp, vp, cnp)
-       struct vnode *dvp;
-       struct vnode *vp;
-       struct componentname *cnp;
-{
-       struct vop_rmdir_args a;
-       int rc;
-       a.a_desc = VDESC(vop_rmdir);
-       a.a_dvp = dvp;
-       a.a_vp = vp;
-       a.a_cnp = cnp;
-       rc = VCALL(dvp, VOFFSET(vop_rmdir), &a);
-       return (rc);
-}
-struct vop_symlink_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_dvp;
-       struct vnode **a_vpp;
-       struct componentname *a_cnp;
-       struct vattr *a_vap;
-       char *a_target;
-};
-extern struct vnodeop_desc vop_symlink_desc;
-static __inline int VOP_SYMLINK __P((
-       struct vnode *dvp,
-       struct vnode **vpp,
-       struct componentname *cnp,
-       struct vattr *vap,
-       char *target));
-static __inline int VOP_SYMLINK(dvp, vpp, cnp, vap, target)
-       struct vnode *dvp;
-       struct vnode **vpp;
-       struct componentname *cnp;
-       struct vattr *vap;
-       char *target;
-{
-       struct vop_symlink_args a;
-       int rc;
-       a.a_desc = VDESC(vop_symlink);
-       a.a_dvp = dvp;
-       a.a_vpp = vpp;
-       a.a_cnp = cnp;
-       a.a_vap = vap;
-       a.a_target = target;
-       rc = VCALL(dvp, VOFFSET(vop_symlink), &a);
-       return (rc);
-}
-struct vop_readdir_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct uio *a_uio;
-       struct ucred *a_cred;
-       int *a_eofflag;
-       int *a_ncookies;
-       u_long **a_cookies;
-};
-extern struct vnodeop_desc vop_readdir_desc;
-static __inline int VOP_READDIR __P((
-       struct vnode *vp,
-       struct uio *uio,
-       struct ucred *cred,
-       int *eofflag,
-       int *ncookies,
-       u_long **cookies));
-static __inline int VOP_READDIR(vp, uio, cred, eofflag, ncookies, cookies)
-       struct vnode *vp;
-       struct uio *uio;
-       struct ucred *cred;
-       int *eofflag;
-       int *ncookies;
-       u_long **cookies;
-{
-       struct vop_readdir_args a;
-       int rc;
-       a.a_desc = VDESC(vop_readdir);
-       a.a_vp = vp;
-       a.a_uio = uio;
-       a.a_cred = cred;
-       a.a_eofflag = eofflag;
-       a.a_ncookies = ncookies;
-       a.a_cookies = cookies;
-       rc = VCALL(vp, VOFFSET(vop_readdir), &a);
-       return (rc);
-}
-struct vop_readlink_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct uio *a_uio;
-       struct ucred *a_cred;
-};
-extern struct vnodeop_desc vop_readlink_desc;
-static __inline int VOP_READLINK __P((
-       struct vnode *vp,
-       struct uio *uio,
-       struct ucred *cred));
-static __inline int VOP_READLINK(vp, uio, cred)
-       struct vnode *vp;
-       struct uio *uio;
-       struct ucred *cred;
-{
-       struct vop_readlink_args a;
-       int rc;
-       a.a_desc = VDESC(vop_readlink);
-       a.a_vp = vp;
-       a.a_uio = uio;
-       a.a_cred = cred;
-       rc = VCALL(vp, VOFFSET(vop_readlink), &a);
-       return (rc);
-}
-struct vop_inactive_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_inactive_desc;
-static __inline int VOP_INACTIVE __P((
-       struct vnode *vp,
-       struct proc *p));
-static __inline int VOP_INACTIVE(vp, p)
-       struct vnode *vp;
-       struct proc *p;
-{
-       struct vop_inactive_args a;
-       int rc;
-       a.a_desc = VDESC(vop_inactive);
-       a.a_vp = vp;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_inactive), &a);
-       return (rc);
-}
-struct vop_reclaim_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_reclaim_desc;
-static __inline int VOP_RECLAIM __P((
-       struct vnode *vp,
-       struct proc *p));
-static __inline int VOP_RECLAIM(vp, p)
-       struct vnode *vp;
-       struct proc *p;
-{
-       struct vop_reclaim_args a;
-       int rc;
-       a.a_desc = VDESC(vop_reclaim);
-       a.a_vp = vp;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_reclaim), &a);
-       return (rc);
-}
-struct vop_lock_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       int a_flags;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_lock_desc;
-static __inline int VOP_LOCK __P((
-       struct vnode *vp,
-       int flags,
-       struct proc *p));
-static __inline int VOP_LOCK(vp, flags, p)
-       struct vnode *vp;
-       int flags;
-       struct proc *p;
-{
-       struct vop_lock_args a;
-       int rc;
-       a.a_desc = VDESC(vop_lock);
-       a.a_vp = vp;
-       a.a_flags = flags;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_lock), &a);
-       return (rc);
-}
-struct vop_unlock_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       int a_flags;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_unlock_desc;
-static __inline int VOP_UNLOCK __P((
-       struct vnode *vp,
-       int flags,
-       struct proc *p));
-static __inline int VOP_UNLOCK(vp, flags, p)
-       struct vnode *vp;
-       int flags;
-       struct proc *p;
-{
-       struct vop_unlock_args a;
-       int rc;
-       a.a_desc = VDESC(vop_unlock);
-       a.a_vp = vp;
-       a.a_flags = flags;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_unlock), &a);
-       return (rc);
-}
-struct vop_bmap_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       daddr_t a_bn;
-       struct vnode **a_vpp;
-       daddr_t *a_bnp;
-       int *a_runp;
-       int *a_runb;
-};
-extern struct vnodeop_desc vop_bmap_desc;
-static __inline int VOP_BMAP __P((
-       struct vnode *vp,
-       daddr_t bn,
-       struct vnode **vpp,
-       daddr_t *bnp,
-       int *runp,
-       int *runb));
-static __inline int VOP_BMAP(vp, bn, vpp, bnp, runp, runb)
-       struct vnode *vp;
-       daddr_t bn;
-       struct vnode **vpp;
-       daddr_t *bnp;
-       int *runp;
-       int *runb;
-{
-       struct vop_bmap_args a;
-       int rc;
-       a.a_desc = VDESC(vop_bmap);
-       a.a_vp = vp;
-       a.a_bn = bn;
-       a.a_vpp = vpp;
-       a.a_bnp = bnp;
-       a.a_runp = runp;
-       a.a_runb = runb;
-       rc = VCALL(vp, VOFFSET(vop_bmap), &a);
-       return (rc);
-}
-struct vop_strategy_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct buf *a_bp;
-};
-extern struct vnodeop_desc vop_strategy_desc;
-static __inline int VOP_STRATEGY __P((
-       struct vnode *vp,
-       struct buf *bp));
-static __inline int VOP_STRATEGY(vp, bp)
-       struct vnode *vp;
-       struct buf *bp;
-{
-       struct vop_strategy_args a;
-       int rc;
-       a.a_desc = VDESC(vop_strategy);
-       a.a_vp = vp;
-       a.a_bp = bp;
-       rc = VCALL(vp, VOFFSET(vop_strategy), &a);
-       return (rc);
-}
-struct vop_print_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-};
-extern struct vnodeop_desc vop_print_desc;
-static __inline int VOP_PRINT __P((
-       struct vnode *vp));
-static __inline int VOP_PRINT(vp)
-       struct vnode *vp;
-{
-       struct vop_print_args a;
-       int rc;
-       a.a_desc = VDESC(vop_print);
-       a.a_vp = vp;
-       rc = VCALL(vp, VOFFSET(vop_print), &a);
-       return (rc);
-}
-struct vop_pathconf_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       int a_name;
-       register_t *a_retval;
-};
-extern struct vnodeop_desc vop_pathconf_desc;
-static __inline int VOP_PATHCONF __P((
-       struct vnode *vp,
-       int name,
-       register_t *retval));
-static __inline int VOP_PATHCONF(vp, name, retval)
-       struct vnode *vp;
-       int name;
-       register_t *retval;
-{
-       struct vop_pathconf_args a;
-       int rc;
-       a.a_desc = VDESC(vop_pathconf);
-       a.a_vp = vp;
-       a.a_name = name;
-       a.a_retval = retval;
-       rc = VCALL(vp, VOFFSET(vop_pathconf), &a);
-       return (rc);
-}
-struct vop_advlock_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       caddr_t a_id;
-       int a_op;
-       struct flock *a_fl;
-       int a_flags;
-};
-extern struct vnodeop_desc vop_advlock_desc;
-static __inline int VOP_ADVLOCK __P((
-       struct vnode *vp,
-       caddr_t id,
-       int op,
-       struct flock *fl,
-       int flags));
-static __inline int VOP_ADVLOCK(vp, id, op, fl, flags)
-       struct vnode *vp;
-       caddr_t id;
-       int op;
-       struct flock *fl;
-       int flags;
-{
-       struct vop_advlock_args a;
-       int rc;
-       a.a_desc = VDESC(vop_advlock);
-       a.a_vp = vp;
-       a.a_id = id;
-       a.a_op = op;
-       a.a_fl = fl;
-       a.a_flags = flags;
-       rc = VCALL(vp, VOFFSET(vop_advlock), &a);
-       return (rc);
-}
-struct vop_balloc_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       off_t a_startoffset;
-       int a_size;
-       struct ucred *a_cred;
-       int a_flags;
-       struct buf **a_bpp;
-};
-extern struct vnodeop_desc vop_balloc_desc;
-static __inline int VOP_BALLOC __P((
-       struct vnode *vp,
-       off_t startoffset,
-       int size,
-       struct ucred *cred,
-       int flags,
-       struct buf **bpp));
-static __inline int VOP_BALLOC(vp, startoffset, size, cred, flags, bpp)
-       struct vnode *vp;
-       off_t startoffset;
-       int size;
-       struct ucred *cred;
-       int flags;
-       struct buf **bpp;
-{
-       struct vop_balloc_args a;
-       int rc;
-       a.a_desc = VDESC(vop_balloc);
-       a.a_vp = vp;
-       a.a_startoffset = startoffset;
-       a.a_size = size;
-       a.a_cred = cred;
-       a.a_flags = flags;
-       a.a_bpp = bpp;
-       rc = VCALL(vp, VOFFSET(vop_balloc), &a);
-       return (rc);
-}
-struct vop_reallocblks_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct cluster_save *a_buflist;
-};
-extern struct vnodeop_desc vop_reallocblks_desc;
-static __inline int VOP_REALLOCBLKS __P((
-       struct vnode *vp,
-       struct cluster_save *buflist));
-static __inline int VOP_REALLOCBLKS(vp, buflist)
-       struct vnode *vp;
-       struct cluster_save *buflist;
-{
-       struct vop_reallocblks_args a;
-       int rc;
-       a.a_desc = VDESC(vop_reallocblks);
-       a.a_vp = vp;
-       a.a_buflist = buflist;
-       rc = VCALL(vp, VOFFSET(vop_reallocblks), &a);
-       return (rc);
-}
-struct vop_getpages_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       vm_page_t *a_m;
-       int a_count;
-       int a_reqpage;
-       vm_ooffset_t a_offset;
-};
-extern struct vnodeop_desc vop_getpages_desc;
-static __inline int VOP_GETPAGES __P((
-       struct vnode *vp,
-       vm_page_t *m,
-       int count,
-       int reqpage,
-       vm_ooffset_t offset));
-static __inline int VOP_GETPAGES(vp, m, count, reqpage, offset)
-       struct vnode *vp;
-       vm_page_t *m;
-       int count;
-       int reqpage;
-       vm_ooffset_t offset;
-{
-       struct vop_getpages_args a;
-       int rc;
-       a.a_desc = VDESC(vop_getpages);
-       a.a_vp = vp;
-       a.a_m = m;
-       a.a_count = count;
-       a.a_reqpage = reqpage;
-       a.a_offset = offset;
-       rc = VCALL(vp, VOFFSET(vop_getpages), &a);
-       return (rc);
-}
-struct vop_putpages_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       vm_page_t *a_m;
-       int a_count;
-       int a_sync;
-       int *a_rtvals;
-       vm_ooffset_t a_offset;
-};
-extern struct vnodeop_desc vop_putpages_desc;
-static __inline int VOP_PUTPAGES __P((
-       struct vnode *vp,
-       vm_page_t *m,
-       int count,
-       int sync,
-       int *rtvals,
-       vm_ooffset_t offset));
-static __inline int VOP_PUTPAGES(vp, m, count, sync, rtvals, offset)
-       struct vnode *vp;
-       vm_page_t *m;
-       int count;
-       int sync;
-       int *rtvals;
-       vm_ooffset_t offset;
-{
-       struct vop_putpages_args a;
-       int rc;
-       a.a_desc = VDESC(vop_putpages);
-       a.a_vp = vp;
-       a.a_m = m;
-       a.a_count = count;
-       a.a_sync = sync;
-       a.a_rtvals = rtvals;
-       a.a_offset = offset;
-       rc = VCALL(vp, VOFFSET(vop_putpages), &a);
-       return (rc);
-}
-struct vop_freeblks_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       daddr_t a_addr;
-       daddr_t a_length;
-};
-extern struct vnodeop_desc vop_freeblks_desc;
-static __inline int VOP_FREEBLKS __P((
-       struct vnode *vp,
-       daddr_t addr,
-       daddr_t length));
-static __inline int VOP_FREEBLKS(vp, addr, length)
-       struct vnode *vp;
-       daddr_t addr;
-       daddr_t length;
-{
-       struct vop_freeblks_args a;
-       int rc;
-       a.a_desc = VDESC(vop_freeblks);
-       a.a_vp = vp;
-       a.a_addr = addr;
-       a.a_length = length;
-       rc = VCALL(vp, VOFFSET(vop_freeblks), &a);
-       return (rc);
-}
-struct vop_bwrite_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct buf *a_bp;
-};
-extern struct vnodeop_desc vop_bwrite_desc;
-static __inline int VOP_BWRITE __P((
-       struct vnode *vp,
-       struct buf *bp));
-static __inline int VOP_BWRITE(vp, bp)
-       struct vnode *vp;
-       struct buf *bp;
-{
-       struct vop_bwrite_args a;
-       int rc;
-       a.a_desc = VDESC(vop_bwrite);
-       a.a_vp = vp;
-       a.a_bp = bp;
-       rc = VCALL(vp, VOFFSET(vop_bwrite), &a);
-       return (rc);
-}
-struct vop_getacl_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       acl_type_t a_type;
-       struct acl *a_aclp;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_getacl_desc;
-static __inline int VOP_GETACL __P((
-       struct vnode *vp,
-       acl_type_t type,
-       struct acl *aclp,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_GETACL(vp, type, aclp, cred, p)
-       struct vnode *vp;
-       acl_type_t type;
-       struct acl *aclp;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_getacl_args a;
-       int rc;
-       a.a_desc = VDESC(vop_getacl);
-       a.a_vp = vp;
-       a.a_type = type;
-       a.a_aclp = aclp;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_getacl), &a);
-       return (rc);
-}
-struct vop_setacl_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       acl_type_t a_type;
-       struct acl *a_aclp;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_setacl_desc;
-static __inline int VOP_SETACL __P((
-       struct vnode *vp,
-       acl_type_t type,
-       struct acl *aclp,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_SETACL(vp, type, aclp, cred, p)
-       struct vnode *vp;
-       acl_type_t type;
-       struct acl *aclp;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_setacl_args a;
-       int rc;
-       a.a_desc = VDESC(vop_setacl);
-       a.a_vp = vp;
-       a.a_type = type;
-       a.a_aclp = aclp;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_setacl), &a);
-       return (rc);
-}
-struct vop_aclcheck_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       acl_type_t a_type;
-       struct acl *a_aclp;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_aclcheck_desc;
-static __inline int VOP_ACLCHECK __P((
-       struct vnode *vp,
-       acl_type_t type,
-       struct acl *aclp,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_ACLCHECK(vp, type, aclp, cred, p)
-       struct vnode *vp;
-       acl_type_t type;
-       struct acl *aclp;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_aclcheck_args a;
-       int rc;
-       a.a_desc = VDESC(vop_aclcheck);
-       a.a_vp = vp;
-       a.a_type = type;
-       a.a_aclp = aclp;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_aclcheck), &a);
-       return (rc);
-}
-struct vop_getextattr_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       char *a_name;
-       struct uio *a_uio;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_getextattr_desc;
-static __inline int VOP_GETEXTATTR __P((
-       struct vnode *vp,
-       char *name,
-       struct uio *uio,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_GETEXTATTR(vp, name, uio, cred, p)
-       struct vnode *vp;
-       char *name;
-       struct uio *uio;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_getextattr_args a;
-       int rc;
-       a.a_desc = VDESC(vop_getextattr);
-       a.a_vp = vp;
-       a.a_name = name;
-       a.a_uio = uio;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_getextattr), &a);
-       return (rc);
-}
-struct vop_setextattr_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       char *a_name;
-       struct uio *a_uio;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_setextattr_desc;
-static __inline int VOP_SETEXTATTR __P((
-       struct vnode *vp,
-       char *name,
-       struct uio *uio,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_SETEXTATTR(vp, name, uio, cred, p)
-       struct vnode *vp;
-       char *name;
-       struct uio *uio;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_setextattr_args a;
-       int rc;
-       a.a_desc = VDESC(vop_setextattr);
-       a.a_vp = vp;
-       a.a_name = name;
-       a.a_uio = uio;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_setextattr), &a);
-       return (rc);
-}
-struct vop_createvobject_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct ucred *a_cred;
-       struct proc *a_p;
-};
-extern struct vnodeop_desc vop_createvobject_desc;
-static __inline int VOP_CREATEVOBJECT __P((
-       struct vnode *vp,
-       struct ucred *cred,
-       struct proc *p));
-static __inline int VOP_CREATEVOBJECT(vp, cred, p)
-       struct vnode *vp;
-       struct ucred *cred;
-       struct proc *p;
-{
-       struct vop_createvobject_args a;
-       int rc;
-       a.a_desc = VDESC(vop_createvobject);
-       a.a_vp = vp;
-       a.a_cred = cred;
-       a.a_p = p;
-       rc = VCALL(vp, VOFFSET(vop_createvobject), &a);
-       return (rc);
-}
-struct vop_destroyvobject_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-};
-extern struct vnodeop_desc vop_destroyvobject_desc;
-static __inline int VOP_DESTROYVOBJECT __P((
-       struct vnode *vp));
-static __inline int VOP_DESTROYVOBJECT(vp)
-       struct vnode *vp;
-{
-       struct vop_destroyvobject_args a;
-       int rc;
-       a.a_desc = VDESC(vop_destroyvobject);
-       a.a_vp = vp;
-       rc = VCALL(vp, VOFFSET(vop_destroyvobject), &a);
-       return (rc);
-}
-struct vop_getvobject_args {
-       struct vnodeop_desc *a_desc;
-       struct vnode *a_vp;
-       struct vm_object **a_objpp;
-};
-extern struct vnodeop_desc vop_getvobject_desc;
-static __inline int VOP_GETVOBJECT __P((
-       struct vnode *vp,
-       struct vm_object **objpp));
-static __inline int VOP_GETVOBJECT(vp, objpp)
-       struct vnode *vp;
-       struct vm_object **objpp;
-{
-       struct vop_getvobject_args a;
-       int rc;
-       a.a_desc = VDESC(vop_getvobject);
-       a.a_vp = vp;
-       a.a_objpp = objpp;
-       rc = VCALL(vp, VOFFSET(vop_getvobject), &a);
-       return (rc);
-}
+#if defined(AFS_FBSD50_ENV)
+#include "vnode_if_5x.h"
+#else
+#include "vnode_if_4x.h"
+#endif
diff --git a/src/afs/FBSD/vnode_if_4x.h b/src/afs/FBSD/vnode_if_4x.h
new file mode 100644 (file)
index 0000000..ded87a1
--- /dev/null
@@ -0,0 +1,1423 @@
+/*
+ * This file is produced automatically.
+ * Do not modify anything in here by hand.
+ *
+ * Created from @(#)vnode_if.sh        8.1 (Berkeley) 6/10/93
+ */
+
+extern struct vnodeop_desc vop_default_desc;
+struct vop_islocked_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_islocked_desc;
+static __inline int VOP_ISLOCKED __P((
+       struct vnode *vp,
+       struct proc *p));
+static __inline int VOP_ISLOCKED(vp, p)
+       struct vnode *vp;
+       struct proc *p;
+{
+       struct vop_islocked_args a;
+       int rc;
+       a.a_desc = VDESC(vop_islocked);
+       a.a_vp = vp;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_islocked), &a);
+       return (rc);
+}
+struct vop_lookup_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_lookup_desc;
+static __inline int VOP_LOOKUP __P((
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp));
+static __inline int VOP_LOOKUP(dvp, vpp, cnp)
+       struct vnode *dvp;
+       struct vnode **vpp;
+       struct componentname *cnp;
+{
+       struct vop_lookup_args a;
+       int rc;
+       a.a_desc = VDESC(vop_lookup);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       rc = VCALL(dvp, VOFFSET(vop_lookup), &a);
+       return (rc);
+}
+struct vop_cachedlookup_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_cachedlookup_desc;
+static __inline int VOP_CACHEDLOOKUP __P((
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp));
+static __inline int VOP_CACHEDLOOKUP(dvp, vpp, cnp)
+       struct vnode *dvp;
+       struct vnode **vpp;
+       struct componentname *cnp;
+{
+       struct vop_cachedlookup_args a;
+       int rc;
+       a.a_desc = VDESC(vop_cachedlookup);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       rc = VCALL(dvp, VOFFSET(vop_cachedlookup), &a);
+       return (rc);
+}
+struct vop_create_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+};
+extern struct vnodeop_desc vop_create_desc;
+static __inline int VOP_CREATE __P((
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp,
+       struct vattr *vap));
+static __inline int VOP_CREATE(dvp, vpp, cnp, vap)
+       struct vnode *dvp;
+       struct vnode **vpp;
+       struct componentname *cnp;
+       struct vattr *vap;
+{
+       struct vop_create_args a;
+       int rc;
+       a.a_desc = VDESC(vop_create);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       rc = VCALL(dvp, VOFFSET(vop_create), &a);
+       return (rc);
+}
+struct vop_whiteout_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct componentname *a_cnp;
+       int a_flags;
+};
+extern struct vnodeop_desc vop_whiteout_desc;
+static __inline int VOP_WHITEOUT __P((
+       struct vnode *dvp,
+       struct componentname *cnp,
+       int flags));
+static __inline int VOP_WHITEOUT(dvp, cnp, flags)
+       struct vnode *dvp;
+       struct componentname *cnp;
+       int flags;
+{
+       struct vop_whiteout_args a;
+       int rc;
+       a.a_desc = VDESC(vop_whiteout);
+       a.a_dvp = dvp;
+       a.a_cnp = cnp;
+       a.a_flags = flags;
+       rc = VCALL(dvp, VOFFSET(vop_whiteout), &a);
+       return (rc);
+}
+struct vop_mknod_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+};
+extern struct vnodeop_desc vop_mknod_desc;
+static __inline int VOP_MKNOD __P((
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp,
+       struct vattr *vap));
+static __inline int VOP_MKNOD(dvp, vpp, cnp, vap)
+       struct vnode *dvp;
+       struct vnode **vpp;
+       struct componentname *cnp;
+       struct vattr *vap;
+{
+       struct vop_mknod_args a;
+       int rc;
+       a.a_desc = VDESC(vop_mknod);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       rc = VCALL(dvp, VOFFSET(vop_mknod), &a);
+       return (rc);
+}
+struct vop_open_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_mode;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_open_desc;
+static __inline int VOP_OPEN __P((
+       struct vnode *vp,
+       int mode,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_OPEN(vp, mode, cred, p)
+       struct vnode *vp;
+       int mode;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_open_args a;
+       int rc;
+       a.a_desc = VDESC(vop_open);
+       a.a_vp = vp;
+       a.a_mode = mode;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_open), &a);
+       return (rc);
+}
+struct vop_close_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_fflag;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_close_desc;
+static __inline int VOP_CLOSE __P((
+       struct vnode *vp,
+       int fflag,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_CLOSE(vp, fflag, cred, p)
+       struct vnode *vp;
+       int fflag;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_close_args a;
+       int rc;
+       a.a_desc = VDESC(vop_close);
+       a.a_vp = vp;
+       a.a_fflag = fflag;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_close), &a);
+       return (rc);
+}
+struct vop_access_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_mode;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_access_desc;
+static __inline int VOP_ACCESS __P((
+       struct vnode *vp,
+       int mode,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_ACCESS(vp, mode, cred, p)
+       struct vnode *vp;
+       int mode;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_access_args a;
+       int rc;
+       a.a_desc = VDESC(vop_access);
+       a.a_vp = vp;
+       a.a_mode = mode;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_access), &a);
+       return (rc);
+}
+struct vop_getattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct vattr *a_vap;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_getattr_desc;
+static __inline int VOP_GETATTR __P((
+       struct vnode *vp,
+       struct vattr *vap,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_GETATTR(vp, vap, cred, p)
+       struct vnode *vp;
+       struct vattr *vap;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_getattr_args a;
+       int rc;
+       a.a_desc = VDESC(vop_getattr);
+       a.a_vp = vp;
+       a.a_vap = vap;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_getattr), &a);
+       return (rc);
+}
+struct vop_setattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct vattr *a_vap;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_setattr_desc;
+static __inline int VOP_SETATTR __P((
+       struct vnode *vp,
+       struct vattr *vap,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_SETATTR(vp, vap, cred, p)
+       struct vnode *vp;
+       struct vattr *vap;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_setattr_args a;
+       int rc;
+       a.a_desc = VDESC(vop_setattr);
+       a.a_vp = vp;
+       a.a_vap = vap;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_setattr), &a);
+       return (rc);
+}
+struct vop_read_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       int a_ioflag;
+       struct ucred *a_cred;
+};
+extern struct vnodeop_desc vop_read_desc;
+static __inline int VOP_READ __P((
+       struct vnode *vp,
+       struct uio *uio,
+       int ioflag,
+       struct ucred *cred));
+static __inline int VOP_READ(vp, uio, ioflag, cred)
+       struct vnode *vp;
+       struct uio *uio;
+       int ioflag;
+       struct ucred *cred;
+{
+       struct vop_read_args a;
+       int rc;
+       a.a_desc = VDESC(vop_read);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_ioflag = ioflag;
+       a.a_cred = cred;
+       rc = VCALL(vp, VOFFSET(vop_read), &a);
+       return (rc);
+}
+struct vop_write_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       int a_ioflag;
+       struct ucred *a_cred;
+};
+extern struct vnodeop_desc vop_write_desc;
+static __inline int VOP_WRITE __P((
+       struct vnode *vp,
+       struct uio *uio,
+       int ioflag,
+       struct ucred *cred));
+static __inline int VOP_WRITE(vp, uio, ioflag, cred)
+       struct vnode *vp;
+       struct uio *uio;
+       int ioflag;
+       struct ucred *cred;
+{
+       struct vop_write_args a;
+       int rc;
+       a.a_desc = VDESC(vop_write);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_ioflag = ioflag;
+       a.a_cred = cred;
+       rc = VCALL(vp, VOFFSET(vop_write), &a);
+       return (rc);
+}
+struct vop_lease_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct proc *a_p;
+       struct ucred *a_cred;
+       int a_flag;
+};
+extern struct vnodeop_desc vop_lease_desc;
+static __inline int VOP_LEASE __P((
+       struct vnode *vp,
+       struct proc *p,
+       struct ucred *cred,
+       int flag));
+static __inline int VOP_LEASE(vp, p, cred, flag)
+       struct vnode *vp;
+       struct proc *p;
+       struct ucred *cred;
+       int flag;
+{
+       struct vop_lease_args a;
+       int rc;
+       a.a_desc = VDESC(vop_lease);
+       a.a_vp = vp;
+       a.a_p = p;
+       a.a_cred = cred;
+       a.a_flag = flag;
+       rc = VCALL(vp, VOFFSET(vop_lease), &a);
+       return (rc);
+}
+struct vop_ioctl_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       u_long a_command;
+       caddr_t a_data;
+       int a_fflag;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_ioctl_desc;
+static __inline int VOP_IOCTL __P((
+       struct vnode *vp,
+       u_long command,
+       caddr_t data,
+       int fflag,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_IOCTL(vp, command, data, fflag, cred, p)
+       struct vnode *vp;
+       u_long command;
+       caddr_t data;
+       int fflag;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_ioctl_args a;
+       int rc;
+       a.a_desc = VDESC(vop_ioctl);
+       a.a_vp = vp;
+       a.a_command = command;
+       a.a_data = data;
+       a.a_fflag = fflag;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_ioctl), &a);
+       return (rc);
+}
+struct vop_poll_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_events;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_poll_desc;
+static __inline int VOP_POLL __P((
+       struct vnode *vp,
+       int events,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_POLL(vp, events, cred, p)
+       struct vnode *vp;
+       int events;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_poll_args a;
+       int rc;
+       a.a_desc = VDESC(vop_poll);
+       a.a_vp = vp;
+       a.a_events = events;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_poll), &a);
+       return (rc);
+}
+struct vop_kqfilter_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct knote *a_kn;
+};
+extern struct vnodeop_desc vop_kqfilter_desc;
+static __inline int VOP_KQFILTER __P((
+       struct vnode *vp,
+       struct knote *kn));
+static __inline int VOP_KQFILTER(vp, kn)
+       struct vnode *vp;
+       struct knote *kn;
+{
+       struct vop_kqfilter_args a;
+       int rc;
+       a.a_desc = VDESC(vop_kqfilter);
+       a.a_vp = vp;
+       a.a_kn = kn;
+       rc = VCALL(vp, VOFFSET(vop_kqfilter), &a);
+       return (rc);
+}
+struct vop_revoke_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_flags;
+};
+extern struct vnodeop_desc vop_revoke_desc;
+static __inline int VOP_REVOKE __P((
+       struct vnode *vp,
+       int flags));
+static __inline int VOP_REVOKE(vp, flags)
+       struct vnode *vp;
+       int flags;
+{
+       struct vop_revoke_args a;
+       int rc;
+       a.a_desc = VDESC(vop_revoke);
+       a.a_vp = vp;
+       a.a_flags = flags;
+       rc = VCALL(vp, VOFFSET(vop_revoke), &a);
+       return (rc);
+}
+struct vop_mmap_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_fflags;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_mmap_desc;
+static __inline int VOP_MMAP __P((
+       struct vnode *vp,
+       int fflags,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_MMAP(vp, fflags, cred, p)
+       struct vnode *vp;
+       int fflags;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_mmap_args a;
+       int rc;
+       a.a_desc = VDESC(vop_mmap);
+       a.a_vp = vp;
+       a.a_fflags = fflags;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_mmap), &a);
+       return (rc);
+}
+struct vop_fsync_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct ucred *a_cred;
+       int a_waitfor;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_fsync_desc;
+static __inline int VOP_FSYNC __P((
+       struct vnode *vp,
+       struct ucred *cred,
+       int waitfor,
+       struct proc *p));
+static __inline int VOP_FSYNC(vp, cred, waitfor, p)
+       struct vnode *vp;
+       struct ucred *cred;
+       int waitfor;
+       struct proc *p;
+{
+       struct vop_fsync_args a;
+       int rc;
+       a.a_desc = VDESC(vop_fsync);
+       a.a_vp = vp;
+       a.a_cred = cred;
+       a.a_waitfor = waitfor;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_fsync), &a);
+       return (rc);
+}
+struct vop_remove_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode *a_vp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_remove_desc;
+static __inline int VOP_REMOVE __P((
+       struct vnode *dvp,
+       struct vnode *vp,
+       struct componentname *cnp));
+static __inline int VOP_REMOVE(dvp, vp, cnp)
+       struct vnode *dvp;
+       struct vnode *vp;
+       struct componentname *cnp;
+{
+       struct vop_remove_args a;
+       int rc;
+       a.a_desc = VDESC(vop_remove);
+       a.a_dvp = dvp;
+       a.a_vp = vp;
+       a.a_cnp = cnp;
+       rc = VCALL(dvp, VOFFSET(vop_remove), &a);
+       return (rc);
+}
+struct vop_link_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_tdvp;
+       struct vnode *a_vp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_link_desc;
+static __inline int VOP_LINK __P((
+       struct vnode *tdvp,
+       struct vnode *vp,
+       struct componentname *cnp));
+static __inline int VOP_LINK(tdvp, vp, cnp)
+       struct vnode *tdvp;
+       struct vnode *vp;
+       struct componentname *cnp;
+{
+       struct vop_link_args a;
+       int rc;
+       a.a_desc = VDESC(vop_link);
+       a.a_tdvp = tdvp;
+       a.a_vp = vp;
+       a.a_cnp = cnp;
+       rc = VCALL(tdvp, VOFFSET(vop_link), &a);
+       return (rc);
+}
+struct vop_rename_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_fdvp;
+       struct vnode *a_fvp;
+       struct componentname *a_fcnp;
+       struct vnode *a_tdvp;
+       struct vnode *a_tvp;
+       struct componentname *a_tcnp;
+};
+extern struct vnodeop_desc vop_rename_desc;
+static __inline int VOP_RENAME __P((
+       struct vnode *fdvp,
+       struct vnode *fvp,
+       struct componentname *fcnp,
+       struct vnode *tdvp,
+       struct vnode *tvp,
+       struct componentname *tcnp));
+static __inline int VOP_RENAME(fdvp, fvp, fcnp, tdvp, tvp, tcnp)
+       struct vnode *fdvp;
+       struct vnode *fvp;
+       struct componentname *fcnp;
+       struct vnode *tdvp;
+       struct vnode *tvp;
+       struct componentname *tcnp;
+{
+       struct vop_rename_args a;
+       int rc;
+       a.a_desc = VDESC(vop_rename);
+       a.a_fdvp = fdvp;
+       a.a_fvp = fvp;
+       a.a_fcnp = fcnp;
+       a.a_tdvp = tdvp;
+       a.a_tvp = tvp;
+       a.a_tcnp = tcnp;
+       rc = VCALL(fdvp, VOFFSET(vop_rename), &a);
+       return (rc);
+}
+struct vop_mkdir_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+};
+extern struct vnodeop_desc vop_mkdir_desc;
+static __inline int VOP_MKDIR __P((
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp,
+       struct vattr *vap));
+static __inline int VOP_MKDIR(dvp, vpp, cnp, vap)
+       struct vnode *dvp;
+       struct vnode **vpp;
+       struct componentname *cnp;
+       struct vattr *vap;
+{
+       struct vop_mkdir_args a;
+       int rc;
+       a.a_desc = VDESC(vop_mkdir);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       rc = VCALL(dvp, VOFFSET(vop_mkdir), &a);
+       return (rc);
+}
+struct vop_rmdir_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode *a_vp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_rmdir_desc;
+static __inline int VOP_RMDIR __P((
+       struct vnode *dvp,
+       struct vnode *vp,
+       struct componentname *cnp));
+static __inline int VOP_RMDIR(dvp, vp, cnp)
+       struct vnode *dvp;
+       struct vnode *vp;
+       struct componentname *cnp;
+{
+       struct vop_rmdir_args a;
+       int rc;
+       a.a_desc = VDESC(vop_rmdir);
+       a.a_dvp = dvp;
+       a.a_vp = vp;
+       a.a_cnp = cnp;
+       rc = VCALL(dvp, VOFFSET(vop_rmdir), &a);
+       return (rc);
+}
+struct vop_symlink_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+       char *a_target;
+};
+extern struct vnodeop_desc vop_symlink_desc;
+static __inline int VOP_SYMLINK __P((
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp,
+       struct vattr *vap,
+       char *target));
+static __inline int VOP_SYMLINK(dvp, vpp, cnp, vap, target)
+       struct vnode *dvp;
+       struct vnode **vpp;
+       struct componentname *cnp;
+       struct vattr *vap;
+       char *target;
+{
+       struct vop_symlink_args a;
+       int rc;
+       a.a_desc = VDESC(vop_symlink);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       a.a_target = target;
+       rc = VCALL(dvp, VOFFSET(vop_symlink), &a);
+       return (rc);
+}
+struct vop_readdir_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       struct ucred *a_cred;
+       int *a_eofflag;
+       int *a_ncookies;
+       u_long **a_cookies;
+};
+extern struct vnodeop_desc vop_readdir_desc;
+static __inline int VOP_READDIR __P((
+       struct vnode *vp,
+       struct uio *uio,
+       struct ucred *cred,
+       int *eofflag,
+       int *ncookies,
+       u_long **cookies));
+static __inline int VOP_READDIR(vp, uio, cred, eofflag, ncookies, cookies)
+       struct vnode *vp;
+       struct uio *uio;
+       struct ucred *cred;
+       int *eofflag;
+       int *ncookies;
+       u_long **cookies;
+{
+       struct vop_readdir_args a;
+       int rc;
+       a.a_desc = VDESC(vop_readdir);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_cred = cred;
+       a.a_eofflag = eofflag;
+       a.a_ncookies = ncookies;
+       a.a_cookies = cookies;
+       rc = VCALL(vp, VOFFSET(vop_readdir), &a);
+       return (rc);
+}
+struct vop_readlink_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       struct ucred *a_cred;
+};
+extern struct vnodeop_desc vop_readlink_desc;
+static __inline int VOP_READLINK __P((
+       struct vnode *vp,
+       struct uio *uio,
+       struct ucred *cred));
+static __inline int VOP_READLINK(vp, uio, cred)
+       struct vnode *vp;
+       struct uio *uio;
+       struct ucred *cred;
+{
+       struct vop_readlink_args a;
+       int rc;
+       a.a_desc = VDESC(vop_readlink);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_cred = cred;
+       rc = VCALL(vp, VOFFSET(vop_readlink), &a);
+       return (rc);
+}
+struct vop_inactive_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_inactive_desc;
+static __inline int VOP_INACTIVE __P((
+       struct vnode *vp,
+       struct proc *p));
+static __inline int VOP_INACTIVE(vp, p)
+       struct vnode *vp;
+       struct proc *p;
+{
+       struct vop_inactive_args a;
+       int rc;
+       a.a_desc = VDESC(vop_inactive);
+       a.a_vp = vp;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_inactive), &a);
+       return (rc);
+}
+struct vop_reclaim_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_reclaim_desc;
+static __inline int VOP_RECLAIM __P((
+       struct vnode *vp,
+       struct proc *p));
+static __inline int VOP_RECLAIM(vp, p)
+       struct vnode *vp;
+       struct proc *p;
+{
+       struct vop_reclaim_args a;
+       int rc;
+       a.a_desc = VDESC(vop_reclaim);
+       a.a_vp = vp;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_reclaim), &a);
+       return (rc);
+}
+struct vop_lock_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_flags;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_lock_desc;
+static __inline int VOP_LOCK __P((
+       struct vnode *vp,
+       int flags,
+       struct proc *p));
+static __inline int VOP_LOCK(vp, flags, p)
+       struct vnode *vp;
+       int flags;
+       struct proc *p;
+{
+       struct vop_lock_args a;
+       int rc;
+       a.a_desc = VDESC(vop_lock);
+       a.a_vp = vp;
+       a.a_flags = flags;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_lock), &a);
+       return (rc);
+}
+struct vop_unlock_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_flags;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_unlock_desc;
+static __inline int VOP_UNLOCK __P((
+       struct vnode *vp,
+       int flags,
+       struct proc *p));
+static __inline int VOP_UNLOCK(vp, flags, p)
+       struct vnode *vp;
+       int flags;
+       struct proc *p;
+{
+       struct vop_unlock_args a;
+       int rc;
+       a.a_desc = VDESC(vop_unlock);
+       a.a_vp = vp;
+       a.a_flags = flags;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_unlock), &a);
+       return (rc);
+}
+struct vop_bmap_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       daddr_t a_bn;
+       struct vnode **a_vpp;
+       daddr_t *a_bnp;
+       int *a_runp;
+       int *a_runb;
+};
+extern struct vnodeop_desc vop_bmap_desc;
+static __inline int VOP_BMAP __P((
+       struct vnode *vp,
+       daddr_t bn,
+       struct vnode **vpp,
+       daddr_t *bnp,
+       int *runp,
+       int *runb));
+static __inline int VOP_BMAP(vp, bn, vpp, bnp, runp, runb)
+       struct vnode *vp;
+       daddr_t bn;
+       struct vnode **vpp;
+       daddr_t *bnp;
+       int *runp;
+       int *runb;
+{
+       struct vop_bmap_args a;
+       int rc;
+       a.a_desc = VDESC(vop_bmap);
+       a.a_vp = vp;
+       a.a_bn = bn;
+       a.a_vpp = vpp;
+       a.a_bnp = bnp;
+       a.a_runp = runp;
+       a.a_runb = runb;
+       rc = VCALL(vp, VOFFSET(vop_bmap), &a);
+       return (rc);
+}
+struct vop_strategy_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct buf *a_bp;
+};
+extern struct vnodeop_desc vop_strategy_desc;
+static __inline int VOP_STRATEGY __P((
+       struct vnode *vp,
+       struct buf *bp));
+static __inline int VOP_STRATEGY(vp, bp)
+       struct vnode *vp;
+       struct buf *bp;
+{
+       struct vop_strategy_args a;
+       int rc;
+       a.a_desc = VDESC(vop_strategy);
+       a.a_vp = vp;
+       a.a_bp = bp;
+       rc = VCALL(vp, VOFFSET(vop_strategy), &a);
+       return (rc);
+}
+struct vop_print_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+};
+extern struct vnodeop_desc vop_print_desc;
+static __inline int VOP_PRINT __P((
+       struct vnode *vp));
+static __inline int VOP_PRINT(vp)
+       struct vnode *vp;
+{
+       struct vop_print_args a;
+       int rc;
+       a.a_desc = VDESC(vop_print);
+       a.a_vp = vp;
+       rc = VCALL(vp, VOFFSET(vop_print), &a);
+       return (rc);
+}
+struct vop_pathconf_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_name;
+       register_t *a_retval;
+};
+extern struct vnodeop_desc vop_pathconf_desc;
+static __inline int VOP_PATHCONF __P((
+       struct vnode *vp,
+       int name,
+       register_t *retval));
+static __inline int VOP_PATHCONF(vp, name, retval)
+       struct vnode *vp;
+       int name;
+       register_t *retval;
+{
+       struct vop_pathconf_args a;
+       int rc;
+       a.a_desc = VDESC(vop_pathconf);
+       a.a_vp = vp;
+       a.a_name = name;
+       a.a_retval = retval;
+       rc = VCALL(vp, VOFFSET(vop_pathconf), &a);
+       return (rc);
+}
+struct vop_advlock_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       caddr_t a_id;
+       int a_op;
+       struct flock *a_fl;
+       int a_flags;
+};
+extern struct vnodeop_desc vop_advlock_desc;
+static __inline int VOP_ADVLOCK __P((
+       struct vnode *vp,
+       caddr_t id,
+       int op,
+       struct flock *fl,
+       int flags));
+static __inline int VOP_ADVLOCK(vp, id, op, fl, flags)
+       struct vnode *vp;
+       caddr_t id;
+       int op;
+       struct flock *fl;
+       int flags;
+{
+       struct vop_advlock_args a;
+       int rc;
+       a.a_desc = VDESC(vop_advlock);
+       a.a_vp = vp;
+       a.a_id = id;
+       a.a_op = op;
+       a.a_fl = fl;
+       a.a_flags = flags;
+       rc = VCALL(vp, VOFFSET(vop_advlock), &a);
+       return (rc);
+}
+struct vop_balloc_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       off_t a_startoffset;
+       int a_size;
+       struct ucred *a_cred;
+       int a_flags;
+       struct buf **a_bpp;
+};
+extern struct vnodeop_desc vop_balloc_desc;
+static __inline int VOP_BALLOC __P((
+       struct vnode *vp,
+       off_t startoffset,
+       int size,
+       struct ucred *cred,
+       int flags,
+       struct buf **bpp));
+static __inline int VOP_BALLOC(vp, startoffset, size, cred, flags, bpp)
+       struct vnode *vp;
+       off_t startoffset;
+       int size;
+       struct ucred *cred;
+       int flags;
+       struct buf **bpp;
+{
+       struct vop_balloc_args a;
+       int rc;
+       a.a_desc = VDESC(vop_balloc);
+       a.a_vp = vp;
+       a.a_startoffset = startoffset;
+       a.a_size = size;
+       a.a_cred = cred;
+       a.a_flags = flags;
+       a.a_bpp = bpp;
+       rc = VCALL(vp, VOFFSET(vop_balloc), &a);
+       return (rc);
+}
+struct vop_reallocblks_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct cluster_save *a_buflist;
+};
+extern struct vnodeop_desc vop_reallocblks_desc;
+static __inline int VOP_REALLOCBLKS __P((
+       struct vnode *vp,
+       struct cluster_save *buflist));
+static __inline int VOP_REALLOCBLKS(vp, buflist)
+       struct vnode *vp;
+       struct cluster_save *buflist;
+{
+       struct vop_reallocblks_args a;
+       int rc;
+       a.a_desc = VDESC(vop_reallocblks);
+       a.a_vp = vp;
+       a.a_buflist = buflist;
+       rc = VCALL(vp, VOFFSET(vop_reallocblks), &a);
+       return (rc);
+}
+struct vop_getpages_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       vm_page_t *a_m;
+       int a_count;
+       int a_reqpage;
+       vm_ooffset_t a_offset;
+};
+extern struct vnodeop_desc vop_getpages_desc;
+static __inline int VOP_GETPAGES __P((
+       struct vnode *vp,
+       vm_page_t *m,
+       int count,
+       int reqpage,
+       vm_ooffset_t offset));
+static __inline int VOP_GETPAGES(vp, m, count, reqpage, offset)
+       struct vnode *vp;
+       vm_page_t *m;
+       int count;
+       int reqpage;
+       vm_ooffset_t offset;
+{
+       struct vop_getpages_args a;
+       int rc;
+       a.a_desc = VDESC(vop_getpages);
+       a.a_vp = vp;
+       a.a_m = m;
+       a.a_count = count;
+       a.a_reqpage = reqpage;
+       a.a_offset = offset;
+       rc = VCALL(vp, VOFFSET(vop_getpages), &a);
+       return (rc);
+}
+struct vop_putpages_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       vm_page_t *a_m;
+       int a_count;
+       int a_sync;
+       int *a_rtvals;
+       vm_ooffset_t a_offset;
+};
+extern struct vnodeop_desc vop_putpages_desc;
+static __inline int VOP_PUTPAGES __P((
+       struct vnode *vp,
+       vm_page_t *m,
+       int count,
+       int sync,
+       int *rtvals,
+       vm_ooffset_t offset));
+static __inline int VOP_PUTPAGES(vp, m, count, sync, rtvals, offset)
+       struct vnode *vp;
+       vm_page_t *m;
+       int count;
+       int sync;
+       int *rtvals;
+       vm_ooffset_t offset;
+{
+       struct vop_putpages_args a;
+       int rc;
+       a.a_desc = VDESC(vop_putpages);
+       a.a_vp = vp;
+       a.a_m = m;
+       a.a_count = count;
+       a.a_sync = sync;
+       a.a_rtvals = rtvals;
+       a.a_offset = offset;
+       rc = VCALL(vp, VOFFSET(vop_putpages), &a);
+       return (rc);
+}
+struct vop_freeblks_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       daddr_t a_addr;
+       daddr_t a_length;
+};
+extern struct vnodeop_desc vop_freeblks_desc;
+static __inline int VOP_FREEBLKS __P((
+       struct vnode *vp,
+       daddr_t addr,
+       daddr_t length));
+static __inline int VOP_FREEBLKS(vp, addr, length)
+       struct vnode *vp;
+       daddr_t addr;
+       daddr_t length;
+{
+       struct vop_freeblks_args a;
+       int rc;
+       a.a_desc = VDESC(vop_freeblks);
+       a.a_vp = vp;
+       a.a_addr = addr;
+       a.a_length = length;
+       rc = VCALL(vp, VOFFSET(vop_freeblks), &a);
+       return (rc);
+}
+struct vop_bwrite_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct buf *a_bp;
+};
+extern struct vnodeop_desc vop_bwrite_desc;
+static __inline int VOP_BWRITE __P((
+       struct vnode *vp,
+       struct buf *bp));
+static __inline int VOP_BWRITE(vp, bp)
+       struct vnode *vp;
+       struct buf *bp;
+{
+       struct vop_bwrite_args a;
+       int rc;
+       a.a_desc = VDESC(vop_bwrite);
+       a.a_vp = vp;
+       a.a_bp = bp;
+       rc = VCALL(vp, VOFFSET(vop_bwrite), &a);
+       return (rc);
+}
+struct vop_getacl_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       acl_type_t a_type;
+       struct acl *a_aclp;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_getacl_desc;
+static __inline int VOP_GETACL __P((
+       struct vnode *vp,
+       acl_type_t type,
+       struct acl *aclp,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_GETACL(vp, type, aclp, cred, p)
+       struct vnode *vp;
+       acl_type_t type;
+       struct acl *aclp;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_getacl_args a;
+       int rc;
+       a.a_desc = VDESC(vop_getacl);
+       a.a_vp = vp;
+       a.a_type = type;
+       a.a_aclp = aclp;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_getacl), &a);
+       return (rc);
+}
+struct vop_setacl_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       acl_type_t a_type;
+       struct acl *a_aclp;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_setacl_desc;
+static __inline int VOP_SETACL __P((
+       struct vnode *vp,
+       acl_type_t type,
+       struct acl *aclp,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_SETACL(vp, type, aclp, cred, p)
+       struct vnode *vp;
+       acl_type_t type;
+       struct acl *aclp;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_setacl_args a;
+       int rc;
+       a.a_desc = VDESC(vop_setacl);
+       a.a_vp = vp;
+       a.a_type = type;
+       a.a_aclp = aclp;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_setacl), &a);
+       return (rc);
+}
+struct vop_aclcheck_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       acl_type_t a_type;
+       struct acl *a_aclp;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_aclcheck_desc;
+static __inline int VOP_ACLCHECK __P((
+       struct vnode *vp,
+       acl_type_t type,
+       struct acl *aclp,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_ACLCHECK(vp, type, aclp, cred, p)
+       struct vnode *vp;
+       acl_type_t type;
+       struct acl *aclp;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_aclcheck_args a;
+       int rc;
+       a.a_desc = VDESC(vop_aclcheck);
+       a.a_vp = vp;
+       a.a_type = type;
+       a.a_aclp = aclp;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_aclcheck), &a);
+       return (rc);
+}
+struct vop_getextattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       char *a_name;
+       struct uio *a_uio;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_getextattr_desc;
+static __inline int VOP_GETEXTATTR __P((
+       struct vnode *vp,
+       char *name,
+       struct uio *uio,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_GETEXTATTR(vp, name, uio, cred, p)
+       struct vnode *vp;
+       char *name;
+       struct uio *uio;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_getextattr_args a;
+       int rc;
+       a.a_desc = VDESC(vop_getextattr);
+       a.a_vp = vp;
+       a.a_name = name;
+       a.a_uio = uio;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_getextattr), &a);
+       return (rc);
+}
+struct vop_setextattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       char *a_name;
+       struct uio *a_uio;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_setextattr_desc;
+static __inline int VOP_SETEXTATTR __P((
+       struct vnode *vp,
+       char *name,
+       struct uio *uio,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_SETEXTATTR(vp, name, uio, cred, p)
+       struct vnode *vp;
+       char *name;
+       struct uio *uio;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_setextattr_args a;
+       int rc;
+       a.a_desc = VDESC(vop_setextattr);
+       a.a_vp = vp;
+       a.a_name = name;
+       a.a_uio = uio;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_setextattr), &a);
+       return (rc);
+}
+struct vop_createvobject_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct ucred *a_cred;
+       struct proc *a_p;
+};
+extern struct vnodeop_desc vop_createvobject_desc;
+static __inline int VOP_CREATEVOBJECT __P((
+       struct vnode *vp,
+       struct ucred *cred,
+       struct proc *p));
+static __inline int VOP_CREATEVOBJECT(vp, cred, p)
+       struct vnode *vp;
+       struct ucred *cred;
+       struct proc *p;
+{
+       struct vop_createvobject_args a;
+       int rc;
+       a.a_desc = VDESC(vop_createvobject);
+       a.a_vp = vp;
+       a.a_cred = cred;
+       a.a_p = p;
+       rc = VCALL(vp, VOFFSET(vop_createvobject), &a);
+       return (rc);
+}
+struct vop_destroyvobject_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+};
+extern struct vnodeop_desc vop_destroyvobject_desc;
+static __inline int VOP_DESTROYVOBJECT __P((
+       struct vnode *vp));
+static __inline int VOP_DESTROYVOBJECT(vp)
+       struct vnode *vp;
+{
+       struct vop_destroyvobject_args a;
+       int rc;
+       a.a_desc = VDESC(vop_destroyvobject);
+       a.a_vp = vp;
+       rc = VCALL(vp, VOFFSET(vop_destroyvobject), &a);
+       return (rc);
+}
+struct vop_getvobject_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct vm_object **a_objpp;
+};
+extern struct vnodeop_desc vop_getvobject_desc;
+static __inline int VOP_GETVOBJECT __P((
+       struct vnode *vp,
+       struct vm_object **objpp));
+static __inline int VOP_GETVOBJECT(vp, objpp)
+       struct vnode *vp;
+       struct vm_object **objpp;
+{
+       struct vop_getvobject_args a;
+       int rc;
+       a.a_desc = VDESC(vop_getvobject);
+       a.a_vp = vp;
+       a.a_objpp = objpp;
+       rc = VCALL(vp, VOFFSET(vop_getvobject), &a);
+       return (rc);
+}
diff --git a/src/afs/FBSD/vnode_if_5x.h b/src/afs/FBSD/vnode_if_5x.h
new file mode 100644 (file)
index 0000000..ebc7313
--- /dev/null
@@ -0,0 +1,1748 @@
+/*
+ * This file is produced automatically.
+ * Do not modify anything in here by hand.
+ *
+ * Created from $FreeBSD: src/sys/tools/vnode_if.awk,v 1.37 2002/09/26 04:48:43 jeff Exp $
+ */
+
+extern struct vnodeop_desc vop_default_desc;
+struct vop_islocked_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_islocked_desc;
+static __inline int VOP_ISLOCKED(
+       struct vnode *vp,
+       struct thread *td)
+{
+       struct vop_islocked_args a;
+       int rc;
+       a.a_desc = VDESC(vop_islocked);
+       a.a_vp = vp;
+       a.a_td = td;
+       rc = VCALL(vp, VOFFSET(vop_islocked), &a);
+       CTR2(KTR_VOP, "VOP_ISLOCKED(vp 0x%lX, td 0x%lX)", vp, td);
+if (rc == 0) {
+} else {
+}
+       return (rc);
+}
+struct vop_lookup_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_lookup_desc;
+static __inline int VOP_LOOKUP(
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp)
+{
+       struct vop_lookup_args a;
+       int rc;
+       a.a_desc = VDESC(vop_lookup);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+#ifdef DEBUG_VFS_LOCKS
+       vop_lookup_pre(&a);
+#endif
+       rc = VCALL(dvp, VOFFSET(vop_lookup), &a);
+       CTR3(KTR_VOP, "VOP_LOOKUP(dvp 0x%lX, vpp 0x%lX, cnp 0x%lX)", dvp, vpp, cnp);
+if (rc == 0) {
+} else {
+}
+#ifdef DEBUG_VFS_LOCKS
+       vop_lookup_post(&a, rc);
+#endif
+       return (rc);
+}
+struct vop_cachedlookup_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_cachedlookup_desc;
+static __inline int VOP_CACHEDLOOKUP(
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp)
+{
+       struct vop_cachedlookup_args a;
+       int rc;
+       a.a_desc = VDESC(vop_cachedlookup);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       ASSERT_VI_UNLOCKED(dvp, "VOP_CACHEDLOOKUP");
+       ASSERT_VOP_LOCKED(dvp, "VOP_CACHEDLOOKUP");
+       rc = VCALL(dvp, VOFFSET(vop_cachedlookup), &a);
+       CTR3(KTR_VOP, "VOP_CACHEDLOOKUP(dvp 0x%lX, vpp 0x%lX, cnp 0x%lX)", dvp, vpp, cnp);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_CACHEDLOOKUP");
+} else {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_CACHEDLOOKUP");
+}
+       return (rc);
+}
+struct vop_create_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+};
+extern struct vnodeop_desc vop_create_desc;
+static __inline int VOP_CREATE(
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp,
+       struct vattr *vap)
+{
+       struct vop_create_args a;
+       int rc;
+       a.a_desc = VDESC(vop_create);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       ASSERT_VI_UNLOCKED(dvp, "VOP_CREATE");
+       ASSERT_VOP_LOCKED(dvp, "VOP_CREATE");
+       rc = VCALL(dvp, VOFFSET(vop_create), &a);
+       CTR4(KTR_VOP, "VOP_CREATE(dvp 0x%lX, vpp 0x%lX, cnp 0x%lX, vap 0x%lX)", dvp, vpp, cnp, vap);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_CREATE");
+       ASSERT_VOP_LOCKED(dvp, "VOP_CREATE");
+} else {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_CREATE");
+       ASSERT_VOP_LOCKED(dvp, "VOP_CREATE");
+}
+       return (rc);
+}
+struct vop_whiteout_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct componentname *a_cnp;
+       int a_flags;
+};
+extern struct vnodeop_desc vop_whiteout_desc;
+static __inline int VOP_WHITEOUT(
+       struct vnode *dvp,
+       struct componentname *cnp,
+       int flags)
+{
+       struct vop_whiteout_args a;
+       int rc;
+       a.a_desc = VDESC(vop_whiteout);
+       a.a_dvp = dvp;
+       a.a_cnp = cnp;
+       a.a_flags = flags;
+       ASSERT_VI_UNLOCKED(dvp, "VOP_WHITEOUT");
+       ASSERT_VOP_LOCKED(dvp, "VOP_WHITEOUT");
+       rc = VCALL(dvp, VOFFSET(vop_whiteout), &a);
+       CTR3(KTR_VOP, "VOP_WHITEOUT(dvp 0x%lX, cnp 0x%lX, flags %ld)", dvp, cnp, flags);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_WHITEOUT");
+       ASSERT_VOP_LOCKED(dvp, "VOP_WHITEOUT");
+} else {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_WHITEOUT");
+       ASSERT_VOP_LOCKED(dvp, "VOP_WHITEOUT");
+}
+       return (rc);
+}
+struct vop_mknod_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+};
+extern struct vnodeop_desc vop_mknod_desc;
+static __inline int VOP_MKNOD(
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp,
+       struct vattr *vap)
+{
+       struct vop_mknod_args a;
+       int rc;
+       a.a_desc = VDESC(vop_mknod);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       ASSERT_VI_UNLOCKED(dvp, "VOP_MKNOD");
+       ASSERT_VOP_LOCKED(dvp, "VOP_MKNOD");
+       rc = VCALL(dvp, VOFFSET(vop_mknod), &a);
+       CTR4(KTR_VOP, "VOP_MKNOD(dvp 0x%lX, vpp 0x%lX, cnp 0x%lX, vap 0x%lX)", dvp, vpp, cnp, vap);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_MKNOD");
+       ASSERT_VOP_LOCKED(dvp, "VOP_MKNOD");
+} else {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_MKNOD");
+       ASSERT_VOP_LOCKED(dvp, "VOP_MKNOD");
+}
+       return (rc);
+}
+struct vop_open_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_mode;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_open_desc;
+static __inline int VOP_OPEN(
+       struct vnode *vp,
+       int mode,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_open_args a;
+       int rc;
+       a.a_desc = VDESC(vop_open);
+       a.a_vp = vp;
+       a.a_mode = mode;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_OPEN");
+       ASSERT_VOP_LOCKED(vp, "VOP_OPEN");
+       rc = VCALL(vp, VOFFSET(vop_open), &a);
+       CTR4(KTR_VOP, "VOP_OPEN(vp 0x%lX, mode %ld, cred 0x%lX, td 0x%lX)", vp, mode, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_OPEN");
+       ASSERT_VOP_LOCKED(vp, "VOP_OPEN");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_OPEN");
+       ASSERT_VOP_LOCKED(vp, "VOP_OPEN");
+}
+       return (rc);
+}
+struct vop_close_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_fflag;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_close_desc;
+static __inline int VOP_CLOSE(
+       struct vnode *vp,
+       int fflag,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_close_args a;
+       int rc;
+       a.a_desc = VDESC(vop_close);
+       a.a_vp = vp;
+       a.a_fflag = fflag;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_CLOSE");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_CLOSE");
+       rc = VCALL(vp, VOFFSET(vop_close), &a);
+       CTR4(KTR_VOP, "VOP_CLOSE(vp 0x%lX, fflag %ld, cred 0x%lX, td 0x%lX)", vp, fflag, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_CLOSE");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_CLOSE");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_CLOSE");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_CLOSE");
+}
+       return (rc);
+}
+struct vop_access_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_mode;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_access_desc;
+static __inline int VOP_ACCESS(
+       struct vnode *vp,
+       int mode,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_access_args a;
+       int rc;
+       a.a_desc = VDESC(vop_access);
+       a.a_vp = vp;
+       a.a_mode = mode;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_ACCESS");
+       ASSERT_VOP_LOCKED(vp, "VOP_ACCESS");
+       rc = VCALL(vp, VOFFSET(vop_access), &a);
+       CTR4(KTR_VOP, "VOP_ACCESS(vp 0x%lX, mode %ld, cred 0x%lX, td 0x%lX)", vp, mode, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_ACCESS");
+       ASSERT_VOP_LOCKED(vp, "VOP_ACCESS");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_ACCESS");
+       ASSERT_VOP_LOCKED(vp, "VOP_ACCESS");
+}
+       return (rc);
+}
+struct vop_getattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct vattr *a_vap;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_getattr_desc;
+static __inline int VOP_GETATTR(
+       struct vnode *vp,
+       struct vattr *vap,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_getattr_args a;
+       int rc;
+       a.a_desc = VDESC(vop_getattr);
+       a.a_vp = vp;
+       a.a_vap = vap;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETATTR");
+       rc = VCALL(vp, VOFFSET(vop_getattr), &a);
+       CTR4(KTR_VOP, "VOP_GETATTR(vp 0x%lX, vap 0x%lX, cred 0x%lX, td 0x%lX)", vp, vap, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETATTR");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETATTR");
+}
+       return (rc);
+}
+struct vop_setattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct vattr *a_vap;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_setattr_desc;
+static __inline int VOP_SETATTR(
+       struct vnode *vp,
+       struct vattr *vap,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_setattr_args a;
+       int rc;
+       a.a_desc = VDESC(vop_setattr);
+       a.a_vp = vp;
+       a.a_vap = vap;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETATTR");
+       rc = VCALL(vp, VOFFSET(vop_setattr), &a);
+       CTR4(KTR_VOP, "VOP_SETATTR(vp 0x%lX, vap 0x%lX, cred 0x%lX, td 0x%lX)", vp, vap, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETATTR");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETATTR");
+}
+       return (rc);
+}
+struct vop_read_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       int a_ioflag;
+       struct ucred *a_cred;
+};
+extern struct vnodeop_desc vop_read_desc;
+static __inline int VOP_READ(
+       struct vnode *vp,
+       struct uio *uio,
+       int ioflag,
+       struct ucred *cred)
+{
+       struct vop_read_args a;
+       int rc;
+       a.a_desc = VDESC(vop_read);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_ioflag = ioflag;
+       a.a_cred = cred;
+       ASSERT_VI_UNLOCKED(vp, "VOP_READ");
+       ASSERT_VOP_LOCKED(vp, "VOP_READ");
+       rc = VCALL(vp, VOFFSET(vop_read), &a);
+       CTR4(KTR_VOP, "VOP_READ(vp 0x%lX, uio 0x%lX, ioflag %ld, cred 0x%lX)", vp, uio, ioflag, cred);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_READ");
+       ASSERT_VOP_LOCKED(vp, "VOP_READ");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_READ");
+       ASSERT_VOP_LOCKED(vp, "VOP_READ");
+}
+       return (rc);
+}
+struct vop_write_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       int a_ioflag;
+       struct ucred *a_cred;
+};
+extern struct vnodeop_desc vop_write_desc;
+static __inline int VOP_WRITE(
+       struct vnode *vp,
+       struct uio *uio,
+       int ioflag,
+       struct ucred *cred)
+{
+       struct vop_write_args a;
+       int rc;
+       a.a_desc = VDESC(vop_write);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_ioflag = ioflag;
+       a.a_cred = cred;
+       ASSERT_VI_UNLOCKED(vp, "VOP_WRITE");
+       ASSERT_VOP_LOCKED(vp, "VOP_WRITE");
+       rc = VCALL(vp, VOFFSET(vop_write), &a);
+       CTR4(KTR_VOP, "VOP_WRITE(vp 0x%lX, uio 0x%lX, ioflag %ld, cred 0x%lX)", vp, uio, ioflag, cred);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_WRITE");
+       ASSERT_VOP_LOCKED(vp, "VOP_WRITE");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_WRITE");
+       ASSERT_VOP_LOCKED(vp, "VOP_WRITE");
+}
+       return (rc);
+}
+struct vop_lease_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct thread *a_td;
+       struct ucred *a_cred;
+       int a_flag;
+};
+extern struct vnodeop_desc vop_lease_desc;
+static __inline int VOP_LEASE(
+       struct vnode *vp,
+       struct thread *td,
+       struct ucred *cred,
+       int flag)
+{
+       struct vop_lease_args a;
+       int rc;
+       a.a_desc = VDESC(vop_lease);
+       a.a_vp = vp;
+       a.a_td = td;
+       a.a_cred = cred;
+       a.a_flag = flag;
+       ASSERT_VI_UNLOCKED(vp, "VOP_LEASE");
+       rc = VCALL(vp, VOFFSET(vop_lease), &a);
+       CTR4(KTR_VOP, "VOP_LEASE(vp 0x%lX, td 0x%lX, cred 0x%lX, flag %ld)", vp, td, cred, flag);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_LEASE");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_LEASE");
+}
+       return (rc);
+}
+struct vop_ioctl_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       u_long a_command;
+       caddr_t a_data;
+       int a_fflag;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_ioctl_desc;
+static __inline int VOP_IOCTL(
+       struct vnode *vp,
+       u_long command,
+       caddr_t data,
+       int fflag,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_ioctl_args a;
+       int rc;
+       a.a_desc = VDESC(vop_ioctl);
+       a.a_vp = vp;
+       a.a_command = command;
+       a.a_data = data;
+       a.a_fflag = fflag;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_IOCTL");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_IOCTL");
+       rc = VCALL(vp, VOFFSET(vop_ioctl), &a);
+       CTR6(KTR_VOP, "VOP_IOCTL(vp 0x%lX, command %ld, data %ld, fflag %ld, cred 0x%lX, td 0x%lX)", vp, command, data, fflag, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_IOCTL");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_IOCTL");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_IOCTL");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_IOCTL");
+}
+       return (rc);
+}
+struct vop_poll_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_events;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_poll_desc;
+static __inline int VOP_POLL(
+       struct vnode *vp,
+       int events,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_poll_args a;
+       int rc;
+       a.a_desc = VDESC(vop_poll);
+       a.a_vp = vp;
+       a.a_events = events;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_POLL");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_POLL");
+       rc = VCALL(vp, VOFFSET(vop_poll), &a);
+       CTR4(KTR_VOP, "VOP_POLL(vp 0x%lX, events %ld, cred 0x%lX, td 0x%lX)", vp, events, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_POLL");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_POLL");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_POLL");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_POLL");
+}
+       return (rc);
+}
+struct vop_kqfilter_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct knote *a_kn;
+};
+extern struct vnodeop_desc vop_kqfilter_desc;
+static __inline int VOP_KQFILTER(
+       struct vnode *vp,
+       struct knote *kn)
+{
+       struct vop_kqfilter_args a;
+       int rc;
+       a.a_desc = VDESC(vop_kqfilter);
+       a.a_vp = vp;
+       a.a_kn = kn;
+       ASSERT_VI_UNLOCKED(vp, "VOP_KQFILTER");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_KQFILTER");
+       rc = VCALL(vp, VOFFSET(vop_kqfilter), &a);
+       CTR2(KTR_VOP, "VOP_KQFILTER(vp 0x%lX, kn 0x%lX)", vp, kn);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_KQFILTER");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_KQFILTER");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_KQFILTER");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_KQFILTER");
+}
+       return (rc);
+}
+struct vop_revoke_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_flags;
+};
+extern struct vnodeop_desc vop_revoke_desc;
+static __inline int VOP_REVOKE(
+       struct vnode *vp,
+       int flags)
+{
+       struct vop_revoke_args a;
+       int rc;
+       a.a_desc = VDESC(vop_revoke);
+       a.a_vp = vp;
+       a.a_flags = flags;
+       ASSERT_VI_UNLOCKED(vp, "VOP_REVOKE");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_REVOKE");
+       rc = VCALL(vp, VOFFSET(vop_revoke), &a);
+       CTR2(KTR_VOP, "VOP_REVOKE(vp 0x%lX, flags %ld)", vp, flags);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_REVOKE");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_REVOKE");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_REVOKE");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_REVOKE");
+}
+       return (rc);
+}
+struct vop_fsync_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct ucred *a_cred;
+       int a_waitfor;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_fsync_desc;
+static __inline int VOP_FSYNC(
+       struct vnode *vp,
+       struct ucred *cred,
+       int waitfor,
+       struct thread *td)
+{
+       struct vop_fsync_args a;
+       int rc;
+       a.a_desc = VDESC(vop_fsync);
+       a.a_vp = vp;
+       a.a_cred = cred;
+       a.a_waitfor = waitfor;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_FSYNC");
+       ASSERT_VOP_LOCKED(vp, "VOP_FSYNC");
+       rc = VCALL(vp, VOFFSET(vop_fsync), &a);
+       CTR4(KTR_VOP, "VOP_FSYNC(vp 0x%lX, cred 0x%lX, waitfor %ld, td 0x%lX)", vp, cred, waitfor, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_FSYNC");
+       ASSERT_VOP_LOCKED(vp, "VOP_FSYNC");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_FSYNC");
+       ASSERT_VOP_LOCKED(vp, "VOP_FSYNC");
+}
+       return (rc);
+}
+struct vop_remove_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode *a_vp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_remove_desc;
+static __inline int VOP_REMOVE(
+       struct vnode *dvp,
+       struct vnode *vp,
+       struct componentname *cnp)
+{
+       struct vop_remove_args a;
+       int rc;
+       a.a_desc = VDESC(vop_remove);
+       a.a_dvp = dvp;
+       a.a_vp = vp;
+       a.a_cnp = cnp;
+       ASSERT_VI_UNLOCKED(dvp, "VOP_REMOVE");
+       ASSERT_VOP_LOCKED(dvp, "VOP_REMOVE");
+       ASSERT_VI_UNLOCKED(vp, "VOP_REMOVE");
+       ASSERT_VOP_LOCKED(vp, "VOP_REMOVE");
+       rc = VCALL(dvp, VOFFSET(vop_remove), &a);
+       CTR3(KTR_VOP, "VOP_REMOVE(dvp 0x%lX, vp 0x%lX, cnp 0x%lX)", dvp, vp, cnp);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_REMOVE");
+       ASSERT_VOP_LOCKED(dvp, "VOP_REMOVE");
+       ASSERT_VI_UNLOCKED(vp, "VOP_REMOVE");
+       ASSERT_VOP_LOCKED(vp, "VOP_REMOVE");
+} else {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_REMOVE");
+       ASSERT_VOP_LOCKED(dvp, "VOP_REMOVE");
+       ASSERT_VI_UNLOCKED(vp, "VOP_REMOVE");
+       ASSERT_VOP_LOCKED(vp, "VOP_REMOVE");
+}
+       return (rc);
+}
+struct vop_link_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_tdvp;
+       struct vnode *a_vp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_link_desc;
+static __inline int VOP_LINK(
+       struct vnode *tdvp,
+       struct vnode *vp,
+       struct componentname *cnp)
+{
+       struct vop_link_args a;
+       int rc;
+       a.a_desc = VDESC(vop_link);
+       a.a_tdvp = tdvp;
+       a.a_vp = vp;
+       a.a_cnp = cnp;
+       ASSERT_VI_UNLOCKED(tdvp, "VOP_LINK");
+       ASSERT_VOP_LOCKED(tdvp, "VOP_LINK");
+       ASSERT_VI_UNLOCKED(vp, "VOP_LINK");
+       ASSERT_VOP_LOCKED(vp, "VOP_LINK");
+       rc = VCALL(tdvp, VOFFSET(vop_link), &a);
+       CTR3(KTR_VOP, "VOP_LINK(tdvp 0x%lX, vp 0x%lX, cnp 0x%lX)", tdvp, vp, cnp);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(tdvp, "VOP_LINK");
+       ASSERT_VOP_LOCKED(tdvp, "VOP_LINK");
+       ASSERT_VI_UNLOCKED(vp, "VOP_LINK");
+       ASSERT_VOP_LOCKED(vp, "VOP_LINK");
+} else {
+       ASSERT_VI_UNLOCKED(tdvp, "VOP_LINK");
+       ASSERT_VOP_LOCKED(tdvp, "VOP_LINK");
+       ASSERT_VI_UNLOCKED(vp, "VOP_LINK");
+       ASSERT_VOP_LOCKED(vp, "VOP_LINK");
+}
+       return (rc);
+}
+struct vop_rename_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_fdvp;
+       struct vnode *a_fvp;
+       struct componentname *a_fcnp;
+       struct vnode *a_tdvp;
+       struct vnode *a_tvp;
+       struct componentname *a_tcnp;
+};
+extern struct vnodeop_desc vop_rename_desc;
+static __inline int VOP_RENAME(
+       struct vnode *fdvp,
+       struct vnode *fvp,
+       struct componentname *fcnp,
+       struct vnode *tdvp,
+       struct vnode *tvp,
+       struct componentname *tcnp)
+{
+       struct vop_rename_args a;
+       int rc;
+       a.a_desc = VDESC(vop_rename);
+       a.a_fdvp = fdvp;
+       a.a_fvp = fvp;
+       a.a_fcnp = fcnp;
+       a.a_tdvp = tdvp;
+       a.a_tvp = tvp;
+       a.a_tcnp = tcnp;
+#ifdef DEBUG_VFS_LOCKS
+       vop_rename_pre(&a);
+#endif
+       rc = VCALL(fdvp, VOFFSET(vop_rename), &a);
+       CTR6(KTR_VOP, "VOP_RENAME(fdvp 0x%lX, fvp 0x%lX, fcnp 0x%lX, tdvp 0x%lX, tvp 0x%lX, tcnp 0x%lX)", fdvp, fvp, fcnp, tdvp, tvp, tcnp);
+if (rc == 0) {
+} else {
+}
+       return (rc);
+}
+struct vop_mkdir_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+};
+extern struct vnodeop_desc vop_mkdir_desc;
+static __inline int VOP_MKDIR(
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp,
+       struct vattr *vap)
+{
+       struct vop_mkdir_args a;
+       int rc;
+       a.a_desc = VDESC(vop_mkdir);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       ASSERT_VI_UNLOCKED(dvp, "VOP_MKDIR");
+       ASSERT_VOP_LOCKED(dvp, "VOP_MKDIR");
+       rc = VCALL(dvp, VOFFSET(vop_mkdir), &a);
+       CTR4(KTR_VOP, "VOP_MKDIR(dvp 0x%lX, vpp 0x%lX, cnp 0x%lX, vap 0x%lX)", dvp, vpp, cnp, vap);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_MKDIR");
+       ASSERT_VOP_LOCKED(dvp, "VOP_MKDIR");
+} else {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_MKDIR");
+       ASSERT_VOP_LOCKED(dvp, "VOP_MKDIR");
+}
+       return (rc);
+}
+struct vop_rmdir_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode *a_vp;
+       struct componentname *a_cnp;
+};
+extern struct vnodeop_desc vop_rmdir_desc;
+static __inline int VOP_RMDIR(
+       struct vnode *dvp,
+       struct vnode *vp,
+       struct componentname *cnp)
+{
+       struct vop_rmdir_args a;
+       int rc;
+       a.a_desc = VDESC(vop_rmdir);
+       a.a_dvp = dvp;
+       a.a_vp = vp;
+       a.a_cnp = cnp;
+       ASSERT_VI_UNLOCKED(dvp, "VOP_RMDIR");
+       ASSERT_VOP_LOCKED(dvp, "VOP_RMDIR");
+       ASSERT_VI_UNLOCKED(vp, "VOP_RMDIR");
+       ASSERT_VOP_LOCKED(vp, "VOP_RMDIR");
+       rc = VCALL(dvp, VOFFSET(vop_rmdir), &a);
+       CTR3(KTR_VOP, "VOP_RMDIR(dvp 0x%lX, vp 0x%lX, cnp 0x%lX)", dvp, vp, cnp);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_RMDIR");
+       ASSERT_VOP_LOCKED(dvp, "VOP_RMDIR");
+       ASSERT_VI_UNLOCKED(vp, "VOP_RMDIR");
+       ASSERT_VOP_LOCKED(vp, "VOP_RMDIR");
+} else {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_RMDIR");
+       ASSERT_VOP_LOCKED(dvp, "VOP_RMDIR");
+       ASSERT_VI_UNLOCKED(vp, "VOP_RMDIR");
+       ASSERT_VOP_LOCKED(vp, "VOP_RMDIR");
+}
+       return (rc);
+}
+struct vop_symlink_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_dvp;
+       struct vnode **a_vpp;
+       struct componentname *a_cnp;
+       struct vattr *a_vap;
+       char *a_target;
+};
+extern struct vnodeop_desc vop_symlink_desc;
+static __inline int VOP_SYMLINK(
+       struct vnode *dvp,
+       struct vnode **vpp,
+       struct componentname *cnp,
+       struct vattr *vap,
+       char *target)
+{
+       struct vop_symlink_args a;
+       int rc;
+       a.a_desc = VDESC(vop_symlink);
+       a.a_dvp = dvp;
+       a.a_vpp = vpp;
+       a.a_cnp = cnp;
+       a.a_vap = vap;
+       a.a_target = target;
+       ASSERT_VI_UNLOCKED(dvp, "VOP_SYMLINK");
+       ASSERT_VOP_LOCKED(dvp, "VOP_SYMLINK");
+       rc = VCALL(dvp, VOFFSET(vop_symlink), &a);
+       CTR5(KTR_VOP, "VOP_SYMLINK(dvp 0x%lX, vpp 0x%lX, cnp 0x%lX, vap 0x%lX, target 0x%lX)", dvp, vpp, cnp, vap, target);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_SYMLINK");
+       ASSERT_VOP_LOCKED(dvp, "VOP_SYMLINK");
+} else {
+       ASSERT_VI_UNLOCKED(dvp, "VOP_SYMLINK");
+       ASSERT_VOP_LOCKED(dvp, "VOP_SYMLINK");
+}
+       return (rc);
+}
+struct vop_readdir_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       struct ucred *a_cred;
+       int *a_eofflag;
+       int *a_ncookies;
+       u_long **a_cookies;
+};
+extern struct vnodeop_desc vop_readdir_desc;
+static __inline int VOP_READDIR(
+       struct vnode *vp,
+       struct uio *uio,
+       struct ucred *cred,
+       int *eofflag,
+       int *ncookies,
+       u_long **cookies)
+{
+       struct vop_readdir_args a;
+       int rc;
+       a.a_desc = VDESC(vop_readdir);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_cred = cred;
+       a.a_eofflag = eofflag;
+       a.a_ncookies = ncookies;
+       a.a_cookies = cookies;
+       ASSERT_VI_UNLOCKED(vp, "VOP_READDIR");
+       ASSERT_VOP_LOCKED(vp, "VOP_READDIR");
+       rc = VCALL(vp, VOFFSET(vop_readdir), &a);
+       CTR6(KTR_VOP, "VOP_READDIR(vp 0x%lX, uio 0x%lX, cred 0x%lX, eofflag 0x%lX, ncookies 0x%lX, cookies 0x%lX)", vp, uio, cred, eofflag, ncookies, cookies);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_READDIR");
+       ASSERT_VOP_LOCKED(vp, "VOP_READDIR");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_READDIR");
+       ASSERT_VOP_LOCKED(vp, "VOP_READDIR");
+}
+       return (rc);
+}
+struct vop_readlink_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct uio *a_uio;
+       struct ucred *a_cred;
+};
+extern struct vnodeop_desc vop_readlink_desc;
+static __inline int VOP_READLINK(
+       struct vnode *vp,
+       struct uio *uio,
+       struct ucred *cred)
+{
+       struct vop_readlink_args a;
+       int rc;
+       a.a_desc = VDESC(vop_readlink);
+       a.a_vp = vp;
+       a.a_uio = uio;
+       a.a_cred = cred;
+       ASSERT_VI_UNLOCKED(vp, "VOP_READLINK");
+       ASSERT_VOP_LOCKED(vp, "VOP_READLINK");
+       rc = VCALL(vp, VOFFSET(vop_readlink), &a);
+       CTR3(KTR_VOP, "VOP_READLINK(vp 0x%lX, uio 0x%lX, cred 0x%lX)", vp, uio, cred);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_READLINK");
+       ASSERT_VOP_LOCKED(vp, "VOP_READLINK");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_READLINK");
+       ASSERT_VOP_LOCKED(vp, "VOP_READLINK");
+}
+       return (rc);
+}
+struct vop_inactive_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_inactive_desc;
+static __inline int VOP_INACTIVE(
+       struct vnode *vp,
+       struct thread *td)
+{
+       struct vop_inactive_args a;
+       int rc;
+       a.a_desc = VDESC(vop_inactive);
+       a.a_vp = vp;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_INACTIVE");
+       ASSERT_VOP_LOCKED(vp, "VOP_INACTIVE");
+       rc = VCALL(vp, VOFFSET(vop_inactive), &a);
+       CTR2(KTR_VOP, "VOP_INACTIVE(vp 0x%lX, td 0x%lX)", vp, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_INACTIVE");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_INACTIVE");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_INACTIVE");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_INACTIVE");
+}
+       return (rc);
+}
+struct vop_reclaim_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_reclaim_desc;
+static __inline int VOP_RECLAIM(
+       struct vnode *vp,
+       struct thread *td)
+{
+       struct vop_reclaim_args a;
+       int rc;
+       a.a_desc = VDESC(vop_reclaim);
+       a.a_vp = vp;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_RECLAIM");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_RECLAIM");
+       rc = VCALL(vp, VOFFSET(vop_reclaim), &a);
+       CTR2(KTR_VOP, "VOP_RECLAIM(vp 0x%lX, td 0x%lX)", vp, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_RECLAIM");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_RECLAIM");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_RECLAIM");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_RECLAIM");
+}
+       return (rc);
+}
+struct vop_lock_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_flags;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_lock_desc;
+static __inline int VOP_LOCK(
+       struct vnode *vp,
+       int flags,
+       struct thread *td)
+{
+       struct vop_lock_args a;
+       int rc;
+       a.a_desc = VDESC(vop_lock);
+       a.a_vp = vp;
+       a.a_flags = flags;
+       a.a_td = td;
+#ifdef DEBUG_VFS_LOCKS
+       vop_lock_pre(&a);
+#endif
+       rc = VCALL(vp, VOFFSET(vop_lock), &a);
+       CTR3(KTR_VOP, "VOP_LOCK(vp 0x%lX, flags %ld, td 0x%lX)", vp, flags, td);
+if (rc == 0) {
+} else {
+}
+#ifdef DEBUG_VFS_LOCKS
+       vop_lock_post(&a, rc);
+#endif
+       return (rc);
+}
+struct vop_unlock_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_flags;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_unlock_desc;
+static __inline int VOP_UNLOCK(
+       struct vnode *vp,
+       int flags,
+       struct thread *td)
+{
+       struct vop_unlock_args a;
+       int rc;
+       a.a_desc = VDESC(vop_unlock);
+       a.a_vp = vp;
+       a.a_flags = flags;
+       a.a_td = td;
+#ifdef DEBUG_VFS_LOCKS
+       vop_unlock_pre(&a);
+#endif
+       rc = VCALL(vp, VOFFSET(vop_unlock), &a);
+       CTR3(KTR_VOP, "VOP_UNLOCK(vp 0x%lX, flags %ld, td 0x%lX)", vp, flags, td);
+if (rc == 0) {
+} else {
+}
+#ifdef DEBUG_VFS_LOCKS
+       vop_unlock_post(&a, rc);
+#endif
+       return (rc);
+}
+struct vop_bmap_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       daddr_t a_bn;
+       struct vnode **a_vpp;
+       daddr_t *a_bnp;
+       int *a_runp;
+       int *a_runb;
+};
+extern struct vnodeop_desc vop_bmap_desc;
+static __inline int VOP_BMAP(
+       struct vnode *vp,
+       daddr_t bn,
+       struct vnode **vpp,
+       daddr_t *bnp,
+       int *runp,
+       int *runb)
+{
+       struct vop_bmap_args a;
+       int rc;
+       a.a_desc = VDESC(vop_bmap);
+       a.a_vp = vp;
+       a.a_bn = bn;
+       a.a_vpp = vpp;
+       a.a_bnp = bnp;
+       a.a_runp = runp;
+       a.a_runb = runb;
+       ASSERT_VI_UNLOCKED(vp, "VOP_BMAP");
+       ASSERT_VOP_LOCKED(vp, "VOP_BMAP");
+       rc = VCALL(vp, VOFFSET(vop_bmap), &a);
+       CTR6(KTR_VOP, "VOP_BMAP(vp 0x%lX, bn %ld, vpp 0x%lX, bnp 0x%lX, runp 0x%lX, runb 0x%lX)", vp, bn, vpp, bnp, runp, runb);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_BMAP");
+       ASSERT_VOP_LOCKED(vp, "VOP_BMAP");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_BMAP");
+       ASSERT_VOP_LOCKED(vp, "VOP_BMAP");
+}
+       return (rc);
+}
+struct vop_strategy_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct buf *a_bp;
+};
+extern struct vnodeop_desc vop_strategy_desc;
+static __inline int VOP_STRATEGY(
+       struct vnode *vp,
+       struct buf *bp)
+{
+       struct vop_strategy_args a;
+       int rc;
+       a.a_desc = VDESC(vop_strategy);
+       a.a_vp = vp;
+       a.a_bp = bp;
+#ifdef DEBUG_VFS_LOCKS
+       vop_strategy_pre(&a);
+#endif
+       rc = VCALL(vp, VOFFSET(vop_strategy), &a);
+       CTR2(KTR_VOP, "VOP_STRATEGY(vp 0x%lX, bp 0x%lX)", vp, bp);
+if (rc == 0) {
+} else {
+}
+       return (rc);
+}
+struct vop_getwritemount_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct mount **a_mpp;
+};
+extern struct vnodeop_desc vop_getwritemount_desc;
+static __inline int VOP_GETWRITEMOUNT(
+       struct vnode *vp,
+       struct mount **mpp)
+{
+       struct vop_getwritemount_args a;
+       int rc;
+       a.a_desc = VDESC(vop_getwritemount);
+       a.a_vp = vp;
+       a.a_mpp = mpp;
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETWRITEMOUNT");
+       rc = VCALL(vp, VOFFSET(vop_getwritemount), &a);
+       CTR2(KTR_VOP, "VOP_GETWRITEMOUNT(vp 0x%lX, mpp 0x%lX)", vp, mpp);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETWRITEMOUNT");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETWRITEMOUNT");
+}
+       return (rc);
+}
+struct vop_print_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+};
+extern struct vnodeop_desc vop_print_desc;
+static __inline int VOP_PRINT(
+       struct vnode *vp)
+{
+       struct vop_print_args a;
+       int rc;
+       a.a_desc = VDESC(vop_print);
+       a.a_vp = vp;
+       ASSERT_VI_UNLOCKED(vp, "VOP_PRINT");
+       rc = VCALL(vp, VOFFSET(vop_print), &a);
+       CTR1(KTR_VOP, "VOP_PRINT(vp 0x%lX)", vp);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_PRINT");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_PRINT");
+}
+       return (rc);
+}
+struct vop_pathconf_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_name;
+       register_t *a_retval;
+};
+extern struct vnodeop_desc vop_pathconf_desc;
+static __inline int VOP_PATHCONF(
+       struct vnode *vp,
+       int name,
+       register_t *retval)
+{
+       struct vop_pathconf_args a;
+       int rc;
+       a.a_desc = VDESC(vop_pathconf);
+       a.a_vp = vp;
+       a.a_name = name;
+       a.a_retval = retval;
+       ASSERT_VI_UNLOCKED(vp, "VOP_PATHCONF");
+       ASSERT_VOP_LOCKED(vp, "VOP_PATHCONF");
+       rc = VCALL(vp, VOFFSET(vop_pathconf), &a);
+       CTR3(KTR_VOP, "VOP_PATHCONF(vp 0x%lX, name %ld, retval 0x%lX)", vp, name, retval);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_PATHCONF");
+       ASSERT_VOP_LOCKED(vp, "VOP_PATHCONF");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_PATHCONF");
+       ASSERT_VOP_LOCKED(vp, "VOP_PATHCONF");
+}
+       return (rc);
+}
+struct vop_advlock_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       caddr_t a_id;
+       int a_op;
+       struct flock *a_fl;
+       int a_flags;
+};
+extern struct vnodeop_desc vop_advlock_desc;
+static __inline int VOP_ADVLOCK(
+       struct vnode *vp,
+       caddr_t id,
+       int op,
+       struct flock *fl,
+       int flags)
+{
+       struct vop_advlock_args a;
+       int rc;
+       a.a_desc = VDESC(vop_advlock);
+       a.a_vp = vp;
+       a.a_id = id;
+       a.a_op = op;
+       a.a_fl = fl;
+       a.a_flags = flags;
+       ASSERT_VI_UNLOCKED(vp, "VOP_ADVLOCK");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_ADVLOCK");
+       rc = VCALL(vp, VOFFSET(vop_advlock), &a);
+       CTR5(KTR_VOP, "VOP_ADVLOCK(vp 0x%lX, id %ld, op %ld, fl 0x%lX, flags %ld)", vp, id, op, fl, flags);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_ADVLOCK");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_ADVLOCK");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_ADVLOCK");
+       ASSERT_VOP_UNLOCKED(vp, "VOP_ADVLOCK");
+}
+       return (rc);
+}
+struct vop_reallocblks_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct cluster_save *a_buflist;
+};
+extern struct vnodeop_desc vop_reallocblks_desc;
+static __inline int VOP_REALLOCBLKS(
+       struct vnode *vp,
+       struct cluster_save *buflist)
+{
+       struct vop_reallocblks_args a;
+       int rc;
+       a.a_desc = VDESC(vop_reallocblks);
+       a.a_vp = vp;
+       a.a_buflist = buflist;
+       ASSERT_VI_UNLOCKED(vp, "VOP_REALLOCBLKS");
+       ASSERT_VOP_LOCKED(vp, "VOP_REALLOCBLKS");
+       rc = VCALL(vp, VOFFSET(vop_reallocblks), &a);
+       CTR2(KTR_VOP, "VOP_REALLOCBLKS(vp 0x%lX, buflist 0x%lX)", vp, buflist);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_REALLOCBLKS");
+       ASSERT_VOP_LOCKED(vp, "VOP_REALLOCBLKS");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_REALLOCBLKS");
+       ASSERT_VOP_LOCKED(vp, "VOP_REALLOCBLKS");
+}
+       return (rc);
+}
+struct vop_getpages_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       vm_page_t *a_m;
+       int a_count;
+       int a_reqpage;
+       vm_ooffset_t a_offset;
+};
+extern struct vnodeop_desc vop_getpages_desc;
+static __inline int VOP_GETPAGES(
+       struct vnode *vp,
+       vm_page_t *m,
+       int count,
+       int reqpage,
+       vm_ooffset_t offset)
+{
+       struct vop_getpages_args a;
+       int rc;
+       a.a_desc = VDESC(vop_getpages);
+       a.a_vp = vp;
+       a.a_m = m;
+       a.a_count = count;
+       a.a_reqpage = reqpage;
+       a.a_offset = offset;
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETPAGES");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETPAGES");
+       rc = VCALL(vp, VOFFSET(vop_getpages), &a);
+       CTR5(KTR_VOP, "VOP_GETPAGES(vp 0x%lX, m 0x%lX, count %ld, reqpage %ld, offset %ld)", vp, m, count, reqpage, offset);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETPAGES");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETPAGES");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETPAGES");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETPAGES");
+}
+       return (rc);
+}
+struct vop_putpages_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       vm_page_t *a_m;
+       int a_count;
+       int a_sync;
+       int *a_rtvals;
+       vm_ooffset_t a_offset;
+};
+extern struct vnodeop_desc vop_putpages_desc;
+static __inline int VOP_PUTPAGES(
+       struct vnode *vp,
+       vm_page_t *m,
+       int count,
+       int sync,
+       int *rtvals,
+       vm_ooffset_t offset)
+{
+       struct vop_putpages_args a;
+       int rc;
+       a.a_desc = VDESC(vop_putpages);
+       a.a_vp = vp;
+       a.a_m = m;
+       a.a_count = count;
+       a.a_sync = sync;
+       a.a_rtvals = rtvals;
+       a.a_offset = offset;
+       ASSERT_VI_UNLOCKED(vp, "VOP_PUTPAGES");
+       ASSERT_VOP_LOCKED(vp, "VOP_PUTPAGES");
+       rc = VCALL(vp, VOFFSET(vop_putpages), &a);
+       CTR6(KTR_VOP, "VOP_PUTPAGES(vp 0x%lX, m 0x%lX, count %ld, sync %ld, rtvals 0x%lX, offset %ld)", vp, m, count, sync, rtvals, offset);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_PUTPAGES");
+       ASSERT_VOP_LOCKED(vp, "VOP_PUTPAGES");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_PUTPAGES");
+       ASSERT_VOP_LOCKED(vp, "VOP_PUTPAGES");
+}
+       return (rc);
+}
+struct vop_freeblks_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       daddr_t a_addr;
+       daddr_t a_length;
+};
+extern struct vnodeop_desc vop_freeblks_desc;
+static __inline int VOP_FREEBLKS(
+       struct vnode *vp,
+       daddr_t addr,
+       daddr_t length)
+{
+       struct vop_freeblks_args a;
+       int rc;
+       a.a_desc = VDESC(vop_freeblks);
+       a.a_vp = vp;
+       a.a_addr = addr;
+       a.a_length = length;
+       ASSERT_VI_UNLOCKED(vp, "VOP_FREEBLKS");
+       rc = VCALL(vp, VOFFSET(vop_freeblks), &a);
+       CTR3(KTR_VOP, "VOP_FREEBLKS(vp 0x%lX, addr %ld, length %ld)", vp, addr, length);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_FREEBLKS");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_FREEBLKS");
+}
+       return (rc);
+}
+struct vop_getacl_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       acl_type_t a_type;
+       struct acl *a_aclp;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_getacl_desc;
+static __inline int VOP_GETACL(
+       struct vnode *vp,
+       acl_type_t type,
+       struct acl *aclp,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_getacl_args a;
+       int rc;
+       a.a_desc = VDESC(vop_getacl);
+       a.a_vp = vp;
+       a.a_type = type;
+       a.a_aclp = aclp;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETACL");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETACL");
+       rc = VCALL(vp, VOFFSET(vop_getacl), &a);
+       CTR5(KTR_VOP, "VOP_GETACL(vp 0x%lX, type %ld, aclp 0x%lX, cred 0x%lX, td 0x%lX)", vp, type, aclp, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETACL");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETACL");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETACL");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETACL");
+}
+       return (rc);
+}
+struct vop_setacl_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       acl_type_t a_type;
+       struct acl *a_aclp;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_setacl_desc;
+static __inline int VOP_SETACL(
+       struct vnode *vp,
+       acl_type_t type,
+       struct acl *aclp,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_setacl_args a;
+       int rc;
+       a.a_desc = VDESC(vop_setacl);
+       a.a_vp = vp;
+       a.a_type = type;
+       a.a_aclp = aclp;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETACL");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETACL");
+       rc = VCALL(vp, VOFFSET(vop_setacl), &a);
+       CTR5(KTR_VOP, "VOP_SETACL(vp 0x%lX, type %ld, aclp 0x%lX, cred 0x%lX, td 0x%lX)", vp, type, aclp, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETACL");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETACL");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETACL");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETACL");
+}
+       return (rc);
+}
+struct vop_aclcheck_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       acl_type_t a_type;
+       struct acl *a_aclp;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_aclcheck_desc;
+static __inline int VOP_ACLCHECK(
+       struct vnode *vp,
+       acl_type_t type,
+       struct acl *aclp,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_aclcheck_args a;
+       int rc;
+       a.a_desc = VDESC(vop_aclcheck);
+       a.a_vp = vp;
+       a.a_type = type;
+       a.a_aclp = aclp;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_ACLCHECK");
+       rc = VCALL(vp, VOFFSET(vop_aclcheck), &a);
+       CTR5(KTR_VOP, "VOP_ACLCHECK(vp 0x%lX, type %ld, aclp 0x%lX, cred 0x%lX, td 0x%lX)", vp, type, aclp, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_ACLCHECK");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_ACLCHECK");
+}
+       return (rc);
+}
+struct vop_closeextattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_commit;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_closeextattr_desc;
+static __inline int VOP_CLOSEEXTATTR(
+       struct vnode *vp,
+       int commit,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_closeextattr_args a;
+       int rc;
+       a.a_desc = VDESC(vop_closeextattr);
+       a.a_vp = vp;
+       a.a_commit = commit;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_CLOSEEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_CLOSEEXTATTR");
+       rc = VCALL(vp, VOFFSET(vop_closeextattr), &a);
+       CTR4(KTR_VOP, "VOP_CLOSEEXTATTR(vp 0x%lX, commit %ld, cred 0x%lX, td 0x%lX)", vp, commit, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_CLOSEEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_CLOSEEXTATTR");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_CLOSEEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_CLOSEEXTATTR");
+}
+       return (rc);
+}
+struct vop_getextattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_attrnamespace;
+       const char *a_name;
+       struct uio *a_uio;
+       size_t *a_size;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_getextattr_desc;
+static __inline int VOP_GETEXTATTR(
+       struct vnode *vp,
+       int attrnamespace,
+       const char *name,
+       struct uio *uio,
+       size_t *size,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_getextattr_args a;
+       int rc;
+       a.a_desc = VDESC(vop_getextattr);
+       a.a_vp = vp;
+       a.a_attrnamespace = attrnamespace;
+       a.a_name = name;
+       a.a_uio = uio;
+       a.a_size = size;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETEXTATTR");
+       rc = VCALL(vp, VOFFSET(vop_getextattr), &a);
+       CTR6(KTR_VOP, "VOP_GETEXTATTR(vp 0x%lX, attrnamespace %ld, name 0x%lX, uio 0x%lX, size 0x%lX, cred 0x%lX, td 0x%lX)", vp, attrnamespace, name, uio, size, cred);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETEXTATTR");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETEXTATTR");
+}
+       return (rc);
+}
+struct vop_openextattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_openextattr_desc;
+static __inline int VOP_OPENEXTATTR(
+       struct vnode *vp,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_openextattr_args a;
+       int rc;
+       a.a_desc = VDESC(vop_openextattr);
+       a.a_vp = vp;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_OPENEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_OPENEXTATTR");
+       rc = VCALL(vp, VOFFSET(vop_openextattr), &a);
+       CTR3(KTR_VOP, "VOP_OPENEXTATTR(vp 0x%lX, cred 0x%lX, td 0x%lX)", vp, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_OPENEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_OPENEXTATTR");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_OPENEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_OPENEXTATTR");
+}
+       return (rc);
+}
+struct vop_setextattr_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       int a_attrnamespace;
+       const char *a_name;
+       struct uio *a_uio;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_setextattr_desc;
+static __inline int VOP_SETEXTATTR(
+       struct vnode *vp,
+       int attrnamespace,
+       const char *name,
+       struct uio *uio,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_setextattr_args a;
+       int rc;
+       a.a_desc = VDESC(vop_setextattr);
+       a.a_vp = vp;
+       a.a_attrnamespace = attrnamespace;
+       a.a_name = name;
+       a.a_uio = uio;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETEXTATTR");
+       rc = VCALL(vp, VOFFSET(vop_setextattr), &a);
+       CTR6(KTR_VOP, "VOP_SETEXTATTR(vp 0x%lX, attrnamespace %ld, name 0x%lX, uio 0x%lX, cred 0x%lX, td 0x%lX)", vp, attrnamespace, name, uio, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETEXTATTR");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETEXTATTR");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETEXTATTR");
+}
+       return (rc);
+}
+struct vop_createvobject_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_createvobject_desc;
+static __inline int VOP_CREATEVOBJECT(
+       struct vnode *vp,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_createvobject_args a;
+       int rc;
+       a.a_desc = VDESC(vop_createvobject);
+       a.a_vp = vp;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_CREATEVOBJECT");
+       ASSERT_VOP_LOCKED(vp, "VOP_CREATEVOBJECT");
+       rc = VCALL(vp, VOFFSET(vop_createvobject), &a);
+       CTR3(KTR_VOP, "VOP_CREATEVOBJECT(vp 0x%lX, cred 0x%lX, td 0x%lX)", vp, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_CREATEVOBJECT");
+       ASSERT_VOP_LOCKED(vp, "VOP_CREATEVOBJECT");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_CREATEVOBJECT");
+       ASSERT_VOP_LOCKED(vp, "VOP_CREATEVOBJECT");
+}
+       return (rc);
+}
+struct vop_destroyvobject_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+};
+extern struct vnodeop_desc vop_destroyvobject_desc;
+static __inline int VOP_DESTROYVOBJECT(
+       struct vnode *vp)
+{
+       struct vop_destroyvobject_args a;
+       int rc;
+       a.a_desc = VDESC(vop_destroyvobject);
+       a.a_vp = vp;
+       ASSERT_VI_UNLOCKED(vp, "VOP_DESTROYVOBJECT");
+       ASSERT_VOP_LOCKED(vp, "VOP_DESTROYVOBJECT");
+       rc = VCALL(vp, VOFFSET(vop_destroyvobject), &a);
+       CTR1(KTR_VOP, "VOP_DESTROYVOBJECT(vp 0x%lX)", vp);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_DESTROYVOBJECT");
+       ASSERT_VOP_LOCKED(vp, "VOP_DESTROYVOBJECT");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_DESTROYVOBJECT");
+       ASSERT_VOP_LOCKED(vp, "VOP_DESTROYVOBJECT");
+}
+       return (rc);
+}
+struct vop_getvobject_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct vm_object **a_objpp;
+};
+extern struct vnodeop_desc vop_getvobject_desc;
+static __inline int VOP_GETVOBJECT(
+       struct vnode *vp,
+       struct vm_object **objpp)
+{
+       struct vop_getvobject_args a;
+       int rc;
+       a.a_desc = VDESC(vop_getvobject);
+       a.a_vp = vp;
+       a.a_objpp = objpp;
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETVOBJECT");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETVOBJECT");
+       rc = VCALL(vp, VOFFSET(vop_getvobject), &a);
+       CTR2(KTR_VOP, "VOP_GETVOBJECT(vp 0x%lX, objpp 0x%lX)", vp, objpp);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETVOBJECT");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETVOBJECT");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_GETVOBJECT");
+       ASSERT_VOP_LOCKED(vp, "VOP_GETVOBJECT");
+}
+       return (rc);
+}
+struct vop_refreshlabel_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_refreshlabel_desc;
+static __inline int VOP_REFRESHLABEL(
+       struct vnode *vp,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_refreshlabel_args a;
+       int rc;
+       a.a_desc = VDESC(vop_refreshlabel);
+       a.a_vp = vp;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_REFRESHLABEL");
+       ASSERT_VOP_LOCKED(vp, "VOP_REFRESHLABEL");
+       rc = VCALL(vp, VOFFSET(vop_refreshlabel), &a);
+       CTR3(KTR_VOP, "VOP_REFRESHLABEL(vp 0x%lX, cred 0x%lX, td 0x%lX)", vp, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_REFRESHLABEL");
+       ASSERT_VOP_LOCKED(vp, "VOP_REFRESHLABEL");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_REFRESHLABEL");
+       ASSERT_VOP_LOCKED(vp, "VOP_REFRESHLABEL");
+}
+       return (rc);
+}
+struct vop_setlabel_args {
+       struct vnodeop_desc *a_desc;
+       struct vnode *a_vp;
+       struct label *a_label;
+       struct ucred *a_cred;
+       struct thread *a_td;
+};
+extern struct vnodeop_desc vop_setlabel_desc;
+static __inline int VOP_SETLABEL(
+       struct vnode *vp,
+       struct label *label,
+       struct ucred *cred,
+       struct thread *td)
+{
+       struct vop_setlabel_args a;
+       int rc;
+       a.a_desc = VDESC(vop_setlabel);
+       a.a_vp = vp;
+       a.a_label = label;
+       a.a_cred = cred;
+       a.a_td = td;
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETLABEL");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETLABEL");
+       rc = VCALL(vp, VOFFSET(vop_setlabel), &a);
+       CTR4(KTR_VOP, "VOP_SETLABEL(vp 0x%lX, label 0x%lX, cred 0x%lX, td 0x%lX)", vp, label, cred, td);
+if (rc == 0) {
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETLABEL");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETLABEL");
+} else {
+       ASSERT_VI_UNLOCKED(vp, "VOP_SETLABEL");
+       ASSERT_VOP_LOCKED(vp, "VOP_SETLABEL");
+}
+       return (rc);
+}
index 88aed16..a214dee 100644 (file)
@@ -581,11 +581,10 @@ long parm, parm2, parm3, parm4, parm5, parm6;
        /* initialize the ICL system */
        code = afs_icl_CreateLog("cmfx", 60*1024, &logp);
        if (code == 0)
-           code = afs_icl_CreateSetWithFlags("cm", logp,
-                                             (struct icl_log *) 0,
+           code = afs_icl_CreateSetWithFlags("cm", logp, NULL,
                                              ICL_CRSET_FLAG_DEFAULT_OFF,
                                              &afs_iclSetp);
-           code = afs_icl_CreateSet("cmlongterm", logp, (struct icl_log*) 0,
+           code = afs_icl_CreateSet("cmlongterm", logp, NULL,
                                 &afs_iclLongTermSetp);
     }
        afs_setTime = cparms.setTimeFlag;
@@ -1131,19 +1130,23 @@ Afs_syscall(register struct afssysa *uap, rval_t *rvp)
 #if    defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 int
 afs3_syscall(p, args, retval)
-       struct proc *p;
-       void *args;
-       int *retval;
+#ifdef AFS_FBSD50_ENV
+    struct thread *p;
+#else
+    struct proc *p;
+#endif
+    void *args;
+    int *retval;
 {
     register struct a {
-           long syscall;
-           long parm1;
-           long parm2;
-           long parm3;
-           long parm4;
-           long parm5;
-           long parm6;
-       } *uap = (struct a *)args;
+       long syscall;
+       long parm1;
+       long parm2;
+       long parm3;
+       long parm4;
+       long parm5;
+       long parm6;
+    } *uap = (struct a *)args;
 #else  /* AFS_OSF_ENV */
 #ifdef AFS_LINUX20_ENV
 struct afssysargs {
@@ -1293,15 +1296,15 @@ Afs_syscall ()
 #endif
     } else if (uap->syscall == AFSCALL_PIOCTL) {
        AFS_GLOCK();
-#ifdef AFS_SUN5_ENV
+#if defined(AFS_SUN5_ENV)
         code = afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, rvp, CRED());
-#else
-#if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
+#elif defined(AFS_FBSD50_ENV)
+        code = afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, p->td_ucred);
+#elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
         code = afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, p->p_cred->pc_ucred);
 #else
        code = afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4);
 #endif
-#endif
        AFS_GUNLOCK();
     } else if (uap->syscall == AFSCALL_ICREATE) {
        struct iparam iparams;
index cf2a44a..6963bb1 100644 (file)
@@ -711,9 +711,8 @@ afs_pioctl(struct pioctlargs *uap, rval_t *rvp)
     return u.u_error;
 #endif
 }
-#endif /* AFS_SGI_ENV */
 
-#ifdef AFS_OSF_ENV
+#elif defined(AFS_OSF_ENV)
 afs_pioctl(p, args, retval)
         struct proc *p;
         void *args;
@@ -730,8 +729,25 @@ afs_pioctl(p, args, retval)
     return (afs_syscall_pioctl(uap->path, uap->cmd, uap->cmarg, uap->follow));
 }
 
-#else  /* AFS_OSF_ENV */
-#if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
+#elif defined(AFS_FBSD50_ENV)
+int
+afs_pioctl(td, args, retval)
+        struct thread *td;
+        void *args;
+        int *retval;
+{
+    struct a {
+        char    *path;
+        int     cmd;
+        caddr_t cmarg;
+        int     follow;
+    } *uap = (struct a *) args;
+
+    AFS_STATCNT(afs_pioctl);
+    return (afs_syscall_pioctl(uap->path, uap->cmd, uap->cmarg, uap->follow, td->td_ucred));
+}
+
+#elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 int
 afs_pioctl(p, args, retval)
         struct proc *p;
@@ -749,8 +765,6 @@ afs_pioctl(p, args, retval)
     return (afs_syscall_pioctl(uap->path, uap->cmd, uap->cmarg, uap->follow, p->p_cred->pc_ucred));
 }
 
-#else   /* AFS_OSF_ENV */
-#endif
 #endif
 
 /* macro to avoid adding any more #ifdef's to pioctl code. */