[BACK]Return to vnode_if.c CVS log [TXT][DIR] Up to [local] / sys / kern

Annotation of sys/kern/vnode_if.c, Revision 1.1.1.1

1.1       nbrk        1: /*
                      2:  * Warning: This file is generated automatically.
                      3:  * (Modifications made here may easily be lost!)
                      4:  *
                      5:  * Created from the file:
                      6:  *     OpenBSD: vnode_if.src,v 1.32 2007/01/16 17:52:18 thib Exp
                      7:  * by the script:
                      8:  *     OpenBSD: vnode_if.sh,v 1.15 2006/01/02 05:05:11 jsg Exp
                      9:  */
                     10:
                     11: /*
                     12:  * Copyright (c) 1992, 1993
                     13:  *     The Regents of the University of California.  All rights reserved.
                     14:  *
                     15:  * Redistribution and use in source and binary forms, with or without
                     16:  * modification, are permitted provided that the following conditions
                     17:  * are met:
                     18:  * 1. Redistributions of source code must retain the above copyright
                     19:  *    notice, this list of conditions and the following disclaimer.
                     20:  * 2. Redistributions in binary form must reproduce the above copyright
                     21:  *    notice, this list of conditions and the following disclaimer in the
                     22:  *    documentation and/or other materials provided with the distribution.
                     23:  * 3. Neither the name of the University nor the names of its contributors
                     24:  *    may be used to endorse or promote products derived from this software
                     25:  *    without specific prior written permission.
                     26:  *
                     27:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS AS IS'' AND
                     28:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     29:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     30:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     31:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     32:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     33:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     34:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     35:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     36:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     37:  * SUCH DAMAGE.
                     38:  */
                     39:
                     40: #include <sys/param.h>
                     41: #include <sys/mount.h>
                     42: #include <sys/vnode.h>
                     43:
                     44: struct vnodeop_desc vop_default_desc = {
                     45:        0,
                     46:        "default",
                     47:        0,
                     48:        NULL,
                     49:        VDESC_NO_OFFSET,
                     50:        VDESC_NO_OFFSET,
                     51:        VDESC_NO_OFFSET,
                     52:        VDESC_NO_OFFSET,
                     53:        NULL,
                     54: };
                     55:
                     56:
                     57: int vop_islocked_vp_offsets[] = {
                     58:        VOPARG_OFFSETOF(struct vop_islocked_args,a_vp),
                     59:        VDESC_NO_OFFSET
                     60: };
                     61: struct vnodeop_desc vop_islocked_desc = {
                     62:        0,
                     63:        "vop_islocked",
                     64:        0,
                     65:        vop_islocked_vp_offsets,
                     66:        VDESC_NO_OFFSET,
                     67:        VDESC_NO_OFFSET,
                     68:        VDESC_NO_OFFSET,
                     69:        VDESC_NO_OFFSET,
                     70:        NULL,
                     71: };
                     72:
                     73: int VOP_ISLOCKED(struct vnode *vp)
                     74: {
                     75:        struct vop_islocked_args a;
                     76:        a.a_desc = VDESC(vop_islocked);
                     77:        a.a_vp = vp;
                     78:        return (VCALL(vp, VOFFSET(vop_islocked), &a));
                     79: }
                     80:
                     81: int vop_lookup_vp_offsets[] = {
                     82:        VOPARG_OFFSETOF(struct vop_lookup_args,a_dvp),
                     83:        VDESC_NO_OFFSET
                     84: };
                     85: struct vnodeop_desc vop_lookup_desc = {
                     86:        0,
                     87:        "vop_lookup",
                     88:        0,
                     89:        vop_lookup_vp_offsets,
                     90:        VOPARG_OFFSETOF(struct vop_lookup_args, a_vpp),
                     91:        VDESC_NO_OFFSET,
                     92:        VDESC_NO_OFFSET,
                     93:        VOPARG_OFFSETOF(struct vop_lookup_args, a_cnp),
                     94:        NULL,
                     95: };
                     96:
                     97: int VOP_LOOKUP(struct vnode *dvp, struct vnode **vpp,
                     98:     struct componentname *cnp)
                     99: {
                    100:        struct vop_lookup_args a;
                    101:        a.a_desc = VDESC(vop_lookup);
                    102:        a.a_dvp = dvp;
                    103:        a.a_vpp = vpp;
                    104:        a.a_cnp = cnp;
                    105:        return (VCALL(dvp, VOFFSET(vop_lookup), &a));
                    106: }
                    107:
                    108: int vop_create_vp_offsets[] = {
                    109:        VOPARG_OFFSETOF(struct vop_create_args,a_dvp),
                    110:        VDESC_NO_OFFSET
                    111: };
                    112: struct vnodeop_desc vop_create_desc = {
                    113:        0,
                    114:        "vop_create",
                    115:        0 | VDESC_VP0_WILLPUT,
                    116:        vop_create_vp_offsets,
                    117:        VOPARG_OFFSETOF(struct vop_create_args, a_vpp),
                    118:        VDESC_NO_OFFSET,
                    119:        VDESC_NO_OFFSET,
                    120:        VOPARG_OFFSETOF(struct vop_create_args, a_cnp),
                    121:        NULL,
                    122: };
                    123:
                    124: int VOP_CREATE(struct vnode *dvp, struct vnode **vpp,
                    125:     struct componentname *cnp, struct vattr *vap)
                    126: {
                    127:        struct vop_create_args a;
                    128:        a.a_desc = VDESC(vop_create);
                    129:        a.a_dvp = dvp;
                    130: #ifdef VFSDEBUG
                    131:        if ((dvp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(dvp))
                    132:                panic("vop_create: dvp");
                    133: #endif
                    134:        a.a_vpp = vpp;
                    135:        a.a_cnp = cnp;
                    136:        a.a_vap = vap;
                    137:        return (VCALL(dvp, VOFFSET(vop_create), &a));
                    138: }
                    139:
                    140: int vop_mknod_vp_offsets[] = {
                    141:        VOPARG_OFFSETOF(struct vop_mknod_args,a_dvp),
                    142:        VDESC_NO_OFFSET
                    143: };
                    144: struct vnodeop_desc vop_mknod_desc = {
                    145:        0,
                    146:        "vop_mknod",
                    147:        0 | VDESC_VP0_WILLPUT | VDESC_VPP_WILLRELE,
                    148:        vop_mknod_vp_offsets,
                    149:        VOPARG_OFFSETOF(struct vop_mknod_args, a_vpp),
                    150:        VDESC_NO_OFFSET,
                    151:        VDESC_NO_OFFSET,
                    152:        VOPARG_OFFSETOF(struct vop_mknod_args, a_cnp),
                    153:        NULL,
                    154: };
                    155:
                    156: int VOP_MKNOD(struct vnode *dvp, struct vnode **vpp,
                    157:     struct componentname *cnp, struct vattr *vap)
                    158: {
                    159:        struct vop_mknod_args a;
                    160:        a.a_desc = VDESC(vop_mknod);
                    161:        a.a_dvp = dvp;
                    162: #ifdef VFSDEBUG
                    163:        if ((dvp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(dvp))
                    164:                panic("vop_mknod: dvp");
                    165: #endif
                    166:        a.a_vpp = vpp;
                    167:        a.a_cnp = cnp;
                    168:        a.a_vap = vap;
                    169:        return (VCALL(dvp, VOFFSET(vop_mknod), &a));
                    170: }
                    171:
                    172: int vop_open_vp_offsets[] = {
                    173:        VOPARG_OFFSETOF(struct vop_open_args,a_vp),
                    174:        VDESC_NO_OFFSET
                    175: };
                    176: struct vnodeop_desc vop_open_desc = {
                    177:        0,
                    178:        "vop_open",
                    179:        0,
                    180:        vop_open_vp_offsets,
                    181:        VDESC_NO_OFFSET,
                    182:        VOPARG_OFFSETOF(struct vop_open_args, a_cred),
                    183:        VOPARG_OFFSETOF(struct vop_open_args, a_p),
                    184:        VDESC_NO_OFFSET,
                    185:        NULL,
                    186: };
                    187:
                    188: int VOP_OPEN(struct vnode *vp, int mode, struct ucred *cred, struct proc *p)
                    189: {
                    190:        struct vop_open_args a;
                    191:        a.a_desc = VDESC(vop_open);
                    192:        a.a_vp = vp;
                    193:        a.a_mode = mode;
                    194:        a.a_cred = cred;
                    195:        a.a_p = p;
                    196:        return (VCALL(vp, VOFFSET(vop_open), &a));
                    197: }
                    198:
                    199: int vop_close_vp_offsets[] = {
                    200:        VOPARG_OFFSETOF(struct vop_close_args,a_vp),
                    201:        VDESC_NO_OFFSET
                    202: };
                    203: struct vnodeop_desc vop_close_desc = {
                    204:        0,
                    205:        "vop_close",
                    206:        0,
                    207:        vop_close_vp_offsets,
                    208:        VDESC_NO_OFFSET,
                    209:        VOPARG_OFFSETOF(struct vop_close_args, a_cred),
                    210:        VOPARG_OFFSETOF(struct vop_close_args, a_p),
                    211:        VDESC_NO_OFFSET,
                    212:        NULL,
                    213: };
                    214:
                    215: int VOP_CLOSE(struct vnode *vp, int fflag, struct ucred *cred, struct proc *p)
                    216: {
                    217:        struct vop_close_args a;
                    218:        a.a_desc = VDESC(vop_close);
                    219:        a.a_vp = vp;
                    220: #ifdef VFSDEBUG
                    221:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    222:                panic("vop_close: vp");
                    223: #endif
                    224:        a.a_fflag = fflag;
                    225:        a.a_cred = cred;
                    226:        a.a_p = p;
                    227:        return (VCALL(vp, VOFFSET(vop_close), &a));
                    228: }
                    229:
                    230: int vop_access_vp_offsets[] = {
                    231:        VOPARG_OFFSETOF(struct vop_access_args,a_vp),
                    232:        VDESC_NO_OFFSET
                    233: };
                    234: struct vnodeop_desc vop_access_desc = {
                    235:        0,
                    236:        "vop_access",
                    237:        0,
                    238:        vop_access_vp_offsets,
                    239:        VDESC_NO_OFFSET,
                    240:        VOPARG_OFFSETOF(struct vop_access_args, a_cred),
                    241:        VOPARG_OFFSETOF(struct vop_access_args, a_p),
                    242:        VDESC_NO_OFFSET,
                    243:        NULL,
                    244: };
                    245:
                    246: int VOP_ACCESS(struct vnode *vp, int mode, struct ucred *cred, struct proc *p)
                    247: {
                    248:        struct vop_access_args a;
                    249:        a.a_desc = VDESC(vop_access);
                    250:        a.a_vp = vp;
                    251: #ifdef VFSDEBUG
                    252:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    253:                panic("vop_access: vp");
                    254: #endif
                    255:        a.a_mode = mode;
                    256:        a.a_cred = cred;
                    257:        a.a_p = p;
                    258:        return (VCALL(vp, VOFFSET(vop_access), &a));
                    259: }
                    260:
                    261: int vop_getattr_vp_offsets[] = {
                    262:        VOPARG_OFFSETOF(struct vop_getattr_args,a_vp),
                    263:        VDESC_NO_OFFSET
                    264: };
                    265: struct vnodeop_desc vop_getattr_desc = {
                    266:        0,
                    267:        "vop_getattr",
                    268:        0,
                    269:        vop_getattr_vp_offsets,
                    270:        VDESC_NO_OFFSET,
                    271:        VOPARG_OFFSETOF(struct vop_getattr_args, a_cred),
                    272:        VOPARG_OFFSETOF(struct vop_getattr_args, a_p),
                    273:        VDESC_NO_OFFSET,
                    274:        NULL,
                    275: };
                    276:
                    277: int VOP_GETATTR(struct vnode *vp, struct vattr *vap, struct ucred *cred,
                    278:     struct proc *p)
                    279: {
                    280:        struct vop_getattr_args a;
                    281:        a.a_desc = VDESC(vop_getattr);
                    282:        a.a_vp = vp;
                    283:        a.a_vap = vap;
                    284:        a.a_cred = cred;
                    285:        a.a_p = p;
                    286:        return (VCALL(vp, VOFFSET(vop_getattr), &a));
                    287: }
                    288:
                    289: int vop_setattr_vp_offsets[] = {
                    290:        VOPARG_OFFSETOF(struct vop_setattr_args,a_vp),
                    291:        VDESC_NO_OFFSET
                    292: };
                    293: struct vnodeop_desc vop_setattr_desc = {
                    294:        0,
                    295:        "vop_setattr",
                    296:        0,
                    297:        vop_setattr_vp_offsets,
                    298:        VDESC_NO_OFFSET,
                    299:        VOPARG_OFFSETOF(struct vop_setattr_args, a_cred),
                    300:        VOPARG_OFFSETOF(struct vop_setattr_args, a_p),
                    301:        VDESC_NO_OFFSET,
                    302:        NULL,
                    303: };
                    304:
                    305: int VOP_SETATTR(struct vnode *vp, struct vattr *vap, struct ucred *cred,
                    306:     struct proc *p)
                    307: {
                    308:        struct vop_setattr_args a;
                    309:        a.a_desc = VDESC(vop_setattr);
                    310:        a.a_vp = vp;
                    311: #ifdef VFSDEBUG
                    312:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    313:                panic("vop_setattr: vp");
                    314: #endif
                    315:        a.a_vap = vap;
                    316:        a.a_cred = cred;
                    317:        a.a_p = p;
                    318:        return (VCALL(vp, VOFFSET(vop_setattr), &a));
                    319: }
                    320:
                    321: int vop_read_vp_offsets[] = {
                    322:        VOPARG_OFFSETOF(struct vop_read_args,a_vp),
                    323:        VDESC_NO_OFFSET
                    324: };
                    325: struct vnodeop_desc vop_read_desc = {
                    326:        0,
                    327:        "vop_read",
                    328:        0,
                    329:        vop_read_vp_offsets,
                    330:        VDESC_NO_OFFSET,
                    331:        VOPARG_OFFSETOF(struct vop_read_args, a_cred),
                    332:        VDESC_NO_OFFSET,
                    333:        VDESC_NO_OFFSET,
                    334:        NULL,
                    335: };
                    336:
                    337: int VOP_READ(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred)
                    338: {
                    339:        struct vop_read_args a;
                    340:        a.a_desc = VDESC(vop_read);
                    341:        a.a_vp = vp;
                    342: #ifdef VFSDEBUG
                    343:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    344:                panic("vop_read: vp");
                    345: #endif
                    346:        a.a_uio = uio;
                    347:        a.a_ioflag = ioflag;
                    348:        a.a_cred = cred;
                    349:        return (VCALL(vp, VOFFSET(vop_read), &a));
                    350: }
                    351:
                    352: int vop_write_vp_offsets[] = {
                    353:        VOPARG_OFFSETOF(struct vop_write_args,a_vp),
                    354:        VDESC_NO_OFFSET
                    355: };
                    356: struct vnodeop_desc vop_write_desc = {
                    357:        0,
                    358:        "vop_write",
                    359:        0,
                    360:        vop_write_vp_offsets,
                    361:        VDESC_NO_OFFSET,
                    362:        VOPARG_OFFSETOF(struct vop_write_args, a_cred),
                    363:        VDESC_NO_OFFSET,
                    364:        VDESC_NO_OFFSET,
                    365:        NULL,
                    366: };
                    367:
                    368: int VOP_WRITE(struct vnode *vp, struct uio *uio, int ioflag,
                    369:     struct ucred *cred)
                    370: {
                    371:        struct vop_write_args a;
                    372:        a.a_desc = VDESC(vop_write);
                    373:        a.a_vp = vp;
                    374: #ifdef VFSDEBUG
                    375:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    376:                panic("vop_write: vp");
                    377: #endif
                    378:        a.a_uio = uio;
                    379:        a.a_ioflag = ioflag;
                    380:        a.a_cred = cred;
                    381:        return (VCALL(vp, VOFFSET(vop_write), &a));
                    382: }
                    383:
                    384: int vop_ioctl_vp_offsets[] = {
                    385:        VOPARG_OFFSETOF(struct vop_ioctl_args,a_vp),
                    386:        VDESC_NO_OFFSET
                    387: };
                    388: struct vnodeop_desc vop_ioctl_desc = {
                    389:        0,
                    390:        "vop_ioctl",
                    391:        0,
                    392:        vop_ioctl_vp_offsets,
                    393:        VDESC_NO_OFFSET,
                    394:        VOPARG_OFFSETOF(struct vop_ioctl_args, a_cred),
                    395:        VOPARG_OFFSETOF(struct vop_ioctl_args, a_p),
                    396:        VDESC_NO_OFFSET,
                    397:        NULL,
                    398: };
                    399:
                    400: int VOP_IOCTL(struct vnode *vp, u_long command, void *data, int fflag,
                    401:     struct ucred *cred, struct proc *p)
                    402: {
                    403:        struct vop_ioctl_args a;
                    404:        a.a_desc = VDESC(vop_ioctl);
                    405:        a.a_vp = vp;
                    406:        a.a_command = command;
                    407:        a.a_data = data;
                    408:        a.a_fflag = fflag;
                    409:        a.a_cred = cred;
                    410:        a.a_p = p;
                    411:        return (VCALL(vp, VOFFSET(vop_ioctl), &a));
                    412: }
                    413:
                    414: int vop_poll_vp_offsets[] = {
                    415:        VOPARG_OFFSETOF(struct vop_poll_args,a_vp),
                    416:        VDESC_NO_OFFSET
                    417: };
                    418: struct vnodeop_desc vop_poll_desc = {
                    419:        0,
                    420:        "vop_poll",
                    421:        0,
                    422:        vop_poll_vp_offsets,
                    423:        VDESC_NO_OFFSET,
                    424:        VDESC_NO_OFFSET,
                    425:        VOPARG_OFFSETOF(struct vop_poll_args, a_p),
                    426:        VDESC_NO_OFFSET,
                    427:        NULL,
                    428: };
                    429:
                    430: int VOP_POLL(struct vnode *vp, int events, struct proc *p)
                    431: {
                    432:        struct vop_poll_args a;
                    433:        a.a_desc = VDESC(vop_poll);
                    434:        a.a_vp = vp;
                    435:        a.a_events = events;
                    436:        a.a_p = p;
                    437:        return (VCALL(vp, VOFFSET(vop_poll), &a));
                    438: }
                    439:
                    440: int vop_kqfilter_vp_offsets[] = {
                    441:        VOPARG_OFFSETOF(struct vop_kqfilter_args,a_vp),
                    442:        VDESC_NO_OFFSET
                    443: };
                    444: struct vnodeop_desc vop_kqfilter_desc = {
                    445:        0,
                    446:        "vop_kqfilter",
                    447:        0,
                    448:        vop_kqfilter_vp_offsets,
                    449:        VDESC_NO_OFFSET,
                    450:        VDESC_NO_OFFSET,
                    451:        VDESC_NO_OFFSET,
                    452:        VDESC_NO_OFFSET,
                    453:        NULL,
                    454: };
                    455:
                    456: int VOP_KQFILTER(struct vnode *vp, struct knote *kn)
                    457: {
                    458:        struct vop_kqfilter_args a;
                    459:        a.a_desc = VDESC(vop_kqfilter);
                    460:        a.a_vp = vp;
                    461:        a.a_kn = kn;
                    462:        return (VCALL(vp, VOFFSET(vop_kqfilter), &a));
                    463: }
                    464:
                    465: int vop_revoke_vp_offsets[] = {
                    466:        VOPARG_OFFSETOF(struct vop_revoke_args,a_vp),
                    467:        VDESC_NO_OFFSET
                    468: };
                    469: struct vnodeop_desc vop_revoke_desc = {
                    470:        0,
                    471:        "vop_revoke",
                    472:        0,
                    473:        vop_revoke_vp_offsets,
                    474:        VDESC_NO_OFFSET,
                    475:        VDESC_NO_OFFSET,
                    476:        VDESC_NO_OFFSET,
                    477:        VDESC_NO_OFFSET,
                    478:        NULL,
                    479: };
                    480:
                    481: int VOP_REVOKE(struct vnode *vp, int flags)
                    482: {
                    483:        struct vop_revoke_args a;
                    484:        a.a_desc = VDESC(vop_revoke);
                    485:        a.a_vp = vp;
                    486:        a.a_flags = flags;
                    487:        return (VCALL(vp, VOFFSET(vop_revoke), &a));
                    488: }
                    489:
                    490: int vop_fsync_vp_offsets[] = {
                    491:        VOPARG_OFFSETOF(struct vop_fsync_args,a_vp),
                    492:        VDESC_NO_OFFSET
                    493: };
                    494: struct vnodeop_desc vop_fsync_desc = {
                    495:        0,
                    496:        "vop_fsync",
                    497:        0,
                    498:        vop_fsync_vp_offsets,
                    499:        VDESC_NO_OFFSET,
                    500:        VOPARG_OFFSETOF(struct vop_fsync_args, a_cred),
                    501:        VOPARG_OFFSETOF(struct vop_fsync_args, a_p),
                    502:        VDESC_NO_OFFSET,
                    503:        NULL,
                    504: };
                    505:
                    506: int VOP_FSYNC(struct vnode *vp, struct ucred *cred, int waitfor,
                    507:     struct proc *p)
                    508: {
                    509:        struct vop_fsync_args a;
                    510:        a.a_desc = VDESC(vop_fsync);
                    511:        a.a_vp = vp;
                    512: #ifdef VFSDEBUG
                    513:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    514:                panic("vop_fsync: vp");
                    515: #endif
                    516:        a.a_cred = cred;
                    517:        a.a_waitfor = waitfor;
                    518:        a.a_p = p;
                    519:        return (VCALL(vp, VOFFSET(vop_fsync), &a));
                    520: }
                    521:
                    522: int vop_remove_vp_offsets[] = {
                    523:        VOPARG_OFFSETOF(struct vop_remove_args,a_dvp),
                    524:        VOPARG_OFFSETOF(struct vop_remove_args,a_vp),
                    525:        VDESC_NO_OFFSET
                    526: };
                    527: struct vnodeop_desc vop_remove_desc = {
                    528:        0,
                    529:        "vop_remove",
                    530:        0 | VDESC_VP0_WILLPUT | VDESC_VP1_WILLPUT,
                    531:        vop_remove_vp_offsets,
                    532:        VDESC_NO_OFFSET,
                    533:        VDESC_NO_OFFSET,
                    534:        VDESC_NO_OFFSET,
                    535:        VOPARG_OFFSETOF(struct vop_remove_args, a_cnp),
                    536:        NULL,
                    537: };
                    538:
                    539: int VOP_REMOVE(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
                    540: {
                    541:        struct vop_remove_args a;
                    542:        a.a_desc = VDESC(vop_remove);
                    543:        a.a_dvp = dvp;
                    544: #ifdef VFSDEBUG
                    545:        if ((dvp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(dvp))
                    546:                panic("vop_remove: dvp");
                    547: #endif
                    548:        a.a_vp = vp;
                    549: #ifdef VFSDEBUG
                    550:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    551:                panic("vop_remove: vp");
                    552: #endif
                    553:        a.a_cnp = cnp;
                    554:        return (VCALL(dvp, VOFFSET(vop_remove), &a));
                    555: }
                    556:
                    557: int vop_link_vp_offsets[] = {
                    558:        VOPARG_OFFSETOF(struct vop_link_args,a_dvp),
                    559:        VOPARG_OFFSETOF(struct vop_link_args,a_vp),
                    560:        VDESC_NO_OFFSET
                    561: };
                    562: struct vnodeop_desc vop_link_desc = {
                    563:        0,
                    564:        "vop_link",
                    565:        0 | VDESC_VP0_WILLPUT,
                    566:        vop_link_vp_offsets,
                    567:        VDESC_NO_OFFSET,
                    568:        VDESC_NO_OFFSET,
                    569:        VDESC_NO_OFFSET,
                    570:        VOPARG_OFFSETOF(struct vop_link_args, a_cnp),
                    571:        NULL,
                    572: };
                    573:
                    574: int VOP_LINK(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
                    575: {
                    576:        struct vop_link_args a;
                    577:        a.a_desc = VDESC(vop_link);
                    578:        a.a_dvp = dvp;
                    579: #ifdef VFSDEBUG
                    580:        if ((dvp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(dvp))
                    581:                panic("vop_link: dvp");
                    582: #endif
                    583:        a.a_vp = vp;
                    584:        a.a_cnp = cnp;
                    585:        return (VCALL(dvp, VOFFSET(vop_link), &a));
                    586: }
                    587:
                    588: int vop_rename_vp_offsets[] = {
                    589:        VOPARG_OFFSETOF(struct vop_rename_args,a_fdvp),
                    590:        VOPARG_OFFSETOF(struct vop_rename_args,a_fvp),
                    591:        VOPARG_OFFSETOF(struct vop_rename_args,a_tdvp),
                    592:        VOPARG_OFFSETOF(struct vop_rename_args,a_tvp),
                    593:        VDESC_NO_OFFSET
                    594: };
                    595: struct vnodeop_desc vop_rename_desc = {
                    596:        0,
                    597:        "vop_rename",
                    598:        0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLPUT | VDESC_VP3_WILLRELE,
                    599:        vop_rename_vp_offsets,
                    600:        VDESC_NO_OFFSET,
                    601:        VDESC_NO_OFFSET,
                    602:        VDESC_NO_OFFSET,
                    603:        VOPARG_OFFSETOF(struct vop_rename_args, a_fcnp),
                    604:        NULL,
                    605: };
                    606:
                    607: int VOP_RENAME(struct vnode *fdvp, struct vnode *fvp,
                    608:     struct componentname *fcnp, struct vnode *tdvp, struct vnode *tvp,
                    609:     struct componentname *tcnp)
                    610: {
                    611:        struct vop_rename_args a;
                    612:        a.a_desc = VDESC(vop_rename);
                    613:        a.a_fdvp = fdvp;
                    614:        a.a_fvp = fvp;
                    615:        a.a_fcnp = fcnp;
                    616:        a.a_tdvp = tdvp;
                    617: #ifdef VFSDEBUG
                    618:        if ((tdvp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(tdvp))
                    619:                panic("vop_rename: tdvp");
                    620: #endif
                    621:        a.a_tvp = tvp;
                    622:        a.a_tcnp = tcnp;
                    623:        return (VCALL(fdvp, VOFFSET(vop_rename), &a));
                    624: }
                    625:
                    626: int vop_mkdir_vp_offsets[] = {
                    627:        VOPARG_OFFSETOF(struct vop_mkdir_args,a_dvp),
                    628:        VDESC_NO_OFFSET
                    629: };
                    630: struct vnodeop_desc vop_mkdir_desc = {
                    631:        0,
                    632:        "vop_mkdir",
                    633:        0 | VDESC_VP0_WILLPUT,
                    634:        vop_mkdir_vp_offsets,
                    635:        VOPARG_OFFSETOF(struct vop_mkdir_args, a_vpp),
                    636:        VDESC_NO_OFFSET,
                    637:        VDESC_NO_OFFSET,
                    638:        VOPARG_OFFSETOF(struct vop_mkdir_args, a_cnp),
                    639:        NULL,
                    640: };
                    641:
                    642: int VOP_MKDIR(struct vnode *dvp, struct vnode **vpp,
                    643:     struct componentname *cnp, struct vattr *vap)
                    644: {
                    645:        struct vop_mkdir_args a;
                    646:        a.a_desc = VDESC(vop_mkdir);
                    647:        a.a_dvp = dvp;
                    648: #ifdef VFSDEBUG
                    649:        if ((dvp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(dvp))
                    650:                panic("vop_mkdir: dvp");
                    651: #endif
                    652:        a.a_vpp = vpp;
                    653:        a.a_cnp = cnp;
                    654:        a.a_vap = vap;
                    655:        return (VCALL(dvp, VOFFSET(vop_mkdir), &a));
                    656: }
                    657:
                    658: int vop_rmdir_vp_offsets[] = {
                    659:        VOPARG_OFFSETOF(struct vop_rmdir_args,a_dvp),
                    660:        VOPARG_OFFSETOF(struct vop_rmdir_args,a_vp),
                    661:        VDESC_NO_OFFSET
                    662: };
                    663: struct vnodeop_desc vop_rmdir_desc = {
                    664:        0,
                    665:        "vop_rmdir",
                    666:        0 | VDESC_VP0_WILLPUT | VDESC_VP1_WILLPUT,
                    667:        vop_rmdir_vp_offsets,
                    668:        VDESC_NO_OFFSET,
                    669:        VDESC_NO_OFFSET,
                    670:        VDESC_NO_OFFSET,
                    671:        VOPARG_OFFSETOF(struct vop_rmdir_args, a_cnp),
                    672:        NULL,
                    673: };
                    674:
                    675: int VOP_RMDIR(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
                    676: {
                    677:        struct vop_rmdir_args a;
                    678:        a.a_desc = VDESC(vop_rmdir);
                    679:        a.a_dvp = dvp;
                    680: #ifdef VFSDEBUG
                    681:        if ((dvp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(dvp))
                    682:                panic("vop_rmdir: dvp");
                    683: #endif
                    684:        a.a_vp = vp;
                    685: #ifdef VFSDEBUG
                    686:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    687:                panic("vop_rmdir: vp");
                    688: #endif
                    689:        a.a_cnp = cnp;
                    690:        return (VCALL(dvp, VOFFSET(vop_rmdir), &a));
                    691: }
                    692:
                    693: int vop_symlink_vp_offsets[] = {
                    694:        VOPARG_OFFSETOF(struct vop_symlink_args,a_dvp),
                    695:        VDESC_NO_OFFSET
                    696: };
                    697: struct vnodeop_desc vop_symlink_desc = {
                    698:        0,
                    699:        "vop_symlink",
                    700:        0 | VDESC_VP0_WILLPUT | VDESC_VPP_WILLRELE,
                    701:        vop_symlink_vp_offsets,
                    702:        VOPARG_OFFSETOF(struct vop_symlink_args, a_vpp),
                    703:        VDESC_NO_OFFSET,
                    704:        VDESC_NO_OFFSET,
                    705:        VOPARG_OFFSETOF(struct vop_symlink_args, a_cnp),
                    706:        NULL,
                    707: };
                    708:
                    709: int VOP_SYMLINK(struct vnode *dvp, struct vnode **vpp,
                    710:     struct componentname *cnp, struct vattr *vap, char *target)
                    711: {
                    712:        struct vop_symlink_args a;
                    713:        a.a_desc = VDESC(vop_symlink);
                    714:        a.a_dvp = dvp;
                    715: #ifdef VFSDEBUG
                    716:        if ((dvp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(dvp))
                    717:                panic("vop_symlink: dvp");
                    718: #endif
                    719:        a.a_vpp = vpp;
                    720:        a.a_cnp = cnp;
                    721:        a.a_vap = vap;
                    722:        a.a_target = target;
                    723:        return (VCALL(dvp, VOFFSET(vop_symlink), &a));
                    724: }
                    725:
                    726: int vop_readdir_vp_offsets[] = {
                    727:        VOPARG_OFFSETOF(struct vop_readdir_args,a_vp),
                    728:        VDESC_NO_OFFSET
                    729: };
                    730: struct vnodeop_desc vop_readdir_desc = {
                    731:        0,
                    732:        "vop_readdir",
                    733:        0,
                    734:        vop_readdir_vp_offsets,
                    735:        VDESC_NO_OFFSET,
                    736:        VOPARG_OFFSETOF(struct vop_readdir_args, a_cred),
                    737:        VDESC_NO_OFFSET,
                    738:        VDESC_NO_OFFSET,
                    739:        NULL,
                    740: };
                    741:
                    742: int VOP_READDIR(struct vnode *vp, struct uio *uio, struct ucred *cred,
                    743:     int *eofflag, int *ncookies, u_long **cookies)
                    744: {
                    745:        struct vop_readdir_args a;
                    746:        a.a_desc = VDESC(vop_readdir);
                    747:        a.a_vp = vp;
                    748: #ifdef VFSDEBUG
                    749:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    750:                panic("vop_readdir: vp");
                    751: #endif
                    752:        a.a_uio = uio;
                    753:        a.a_cred = cred;
                    754:        a.a_eofflag = eofflag;
                    755:        a.a_ncookies = ncookies;
                    756:        a.a_cookies = cookies;
                    757:        return (VCALL(vp, VOFFSET(vop_readdir), &a));
                    758: }
                    759:
                    760: int vop_readlink_vp_offsets[] = {
                    761:        VOPARG_OFFSETOF(struct vop_readlink_args,a_vp),
                    762:        VDESC_NO_OFFSET
                    763: };
                    764: struct vnodeop_desc vop_readlink_desc = {
                    765:        0,
                    766:        "vop_readlink",
                    767:        0,
                    768:        vop_readlink_vp_offsets,
                    769:        VDESC_NO_OFFSET,
                    770:        VOPARG_OFFSETOF(struct vop_readlink_args, a_cred),
                    771:        VDESC_NO_OFFSET,
                    772:        VDESC_NO_OFFSET,
                    773:        NULL,
                    774: };
                    775:
                    776: int VOP_READLINK(struct vnode *vp, struct uio *uio, struct ucred *cred)
                    777: {
                    778:        struct vop_readlink_args a;
                    779:        a.a_desc = VDESC(vop_readlink);
                    780:        a.a_vp = vp;
                    781: #ifdef VFSDEBUG
                    782:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    783:                panic("vop_readlink: vp");
                    784: #endif
                    785:        a.a_uio = uio;
                    786:        a.a_cred = cred;
                    787:        return (VCALL(vp, VOFFSET(vop_readlink), &a));
                    788: }
                    789:
                    790: int vop_abortop_vp_offsets[] = {
                    791:        VOPARG_OFFSETOF(struct vop_abortop_args,a_dvp),
                    792:        VDESC_NO_OFFSET
                    793: };
                    794: struct vnodeop_desc vop_abortop_desc = {
                    795:        0,
                    796:        "vop_abortop",
                    797:        0,
                    798:        vop_abortop_vp_offsets,
                    799:        VDESC_NO_OFFSET,
                    800:        VDESC_NO_OFFSET,
                    801:        VDESC_NO_OFFSET,
                    802:        VOPARG_OFFSETOF(struct vop_abortop_args, a_cnp),
                    803:        NULL,
                    804: };
                    805:
                    806: int VOP_ABORTOP(struct vnode *dvp, struct componentname *cnp)
                    807: {
                    808:        struct vop_abortop_args a;
                    809:        a.a_desc = VDESC(vop_abortop);
                    810:        a.a_dvp = dvp;
                    811:        a.a_cnp = cnp;
                    812:        return (VCALL(dvp, VOFFSET(vop_abortop), &a));
                    813: }
                    814:
                    815: int vop_inactive_vp_offsets[] = {
                    816:        VOPARG_OFFSETOF(struct vop_inactive_args,a_vp),
                    817:        VDESC_NO_OFFSET
                    818: };
                    819: struct vnodeop_desc vop_inactive_desc = {
                    820:        0,
                    821:        "vop_inactive",
                    822:        0 | VDESC_VP0_WILLUNLOCK,
                    823:        vop_inactive_vp_offsets,
                    824:        VDESC_NO_OFFSET,
                    825:        VDESC_NO_OFFSET,
                    826:        VOPARG_OFFSETOF(struct vop_inactive_args, a_p),
                    827:        VDESC_NO_OFFSET,
                    828:        NULL,
                    829: };
                    830:
                    831: int VOP_INACTIVE(struct vnode *vp, struct proc *p)
                    832: {
                    833:        struct vop_inactive_args a;
                    834:        a.a_desc = VDESC(vop_inactive);
                    835:        a.a_vp = vp;
                    836: #ifdef VFSDEBUG
                    837:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    838:                panic("vop_inactive: vp");
                    839: #endif
                    840:        a.a_p = p;
                    841:        return (VCALL(vp, VOFFSET(vop_inactive), &a));
                    842: }
                    843:
                    844: int vop_reclaim_vp_offsets[] = {
                    845:        VOPARG_OFFSETOF(struct vop_reclaim_args,a_vp),
                    846:        VDESC_NO_OFFSET
                    847: };
                    848: struct vnodeop_desc vop_reclaim_desc = {
                    849:        0,
                    850:        "vop_reclaim",
                    851:        0,
                    852:        vop_reclaim_vp_offsets,
                    853:        VDESC_NO_OFFSET,
                    854:        VDESC_NO_OFFSET,
                    855:        VOPARG_OFFSETOF(struct vop_reclaim_args, a_p),
                    856:        VDESC_NO_OFFSET,
                    857:        NULL,
                    858: };
                    859:
                    860: int VOP_RECLAIM(struct vnode *vp, struct proc *p)
                    861: {
                    862:        struct vop_reclaim_args a;
                    863:        a.a_desc = VDESC(vop_reclaim);
                    864:        a.a_vp = vp;
                    865:        a.a_p = p;
                    866:        return (VCALL(vp, VOFFSET(vop_reclaim), &a));
                    867: }
                    868:
                    869: int vop_lock_vp_offsets[] = {
                    870:        VOPARG_OFFSETOF(struct vop_lock_args,a_vp),
                    871:        VDESC_NO_OFFSET
                    872: };
                    873: struct vnodeop_desc vop_lock_desc = {
                    874:        0,
                    875:        "vop_lock",
                    876:        0,
                    877:        vop_lock_vp_offsets,
                    878:        VDESC_NO_OFFSET,
                    879:        VDESC_NO_OFFSET,
                    880:        VOPARG_OFFSETOF(struct vop_lock_args, a_p),
                    881:        VDESC_NO_OFFSET,
                    882:        NULL,
                    883: };
                    884:
                    885: int VOP_LOCK(struct vnode *vp, int flags, struct proc *p)
                    886: {
                    887:        struct vop_lock_args a;
                    888:        a.a_desc = VDESC(vop_lock);
                    889:        a.a_vp = vp;
                    890:        a.a_flags = flags;
                    891:        a.a_p = p;
                    892:        return (VCALL(vp, VOFFSET(vop_lock), &a));
                    893: }
                    894:
                    895: int vop_unlock_vp_offsets[] = {
                    896:        VOPARG_OFFSETOF(struct vop_unlock_args,a_vp),
                    897:        VDESC_NO_OFFSET
                    898: };
                    899: struct vnodeop_desc vop_unlock_desc = {
                    900:        0,
                    901:        "vop_unlock",
                    902:        0,
                    903:        vop_unlock_vp_offsets,
                    904:        VDESC_NO_OFFSET,
                    905:        VDESC_NO_OFFSET,
                    906:        VOPARG_OFFSETOF(struct vop_unlock_args, a_p),
                    907:        VDESC_NO_OFFSET,
                    908:        NULL,
                    909: };
                    910:
                    911: int VOP_UNLOCK(struct vnode *vp, int flags, struct proc *p)
                    912: {
                    913:        struct vop_unlock_args a;
                    914:        a.a_desc = VDESC(vop_unlock);
                    915:        a.a_vp = vp;
                    916:        a.a_flags = flags;
                    917:        a.a_p = p;
                    918:        return (VCALL(vp, VOFFSET(vop_unlock), &a));
                    919: }
                    920:
                    921: int vop_bmap_vp_offsets[] = {
                    922:        VOPARG_OFFSETOF(struct vop_bmap_args,a_vp),
                    923:        VDESC_NO_OFFSET
                    924: };
                    925: struct vnodeop_desc vop_bmap_desc = {
                    926:        0,
                    927:        "vop_bmap",
                    928:        0,
                    929:        vop_bmap_vp_offsets,
                    930:        VOPARG_OFFSETOF(struct vop_bmap_args, a_vpp),
                    931:        VDESC_NO_OFFSET,
                    932:        VDESC_NO_OFFSET,
                    933:        VDESC_NO_OFFSET,
                    934:        NULL,
                    935: };
                    936:
                    937: int VOP_BMAP(struct vnode *vp, daddr64_t bn, struct vnode **vpp,
                    938:     daddr64_t *bnp, int *runp)
                    939: {
                    940:        struct vop_bmap_args a;
                    941:        a.a_desc = VDESC(vop_bmap);
                    942:        a.a_vp = vp;
                    943: #ifdef VFSDEBUG
                    944:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                    945:                panic("vop_bmap: vp");
                    946: #endif
                    947:        a.a_bn = bn;
                    948:        a.a_vpp = vpp;
                    949:        a.a_bnp = bnp;
                    950:        a.a_runp = runp;
                    951:        return (VCALL(vp, VOFFSET(vop_bmap), &a));
                    952: }
                    953:
                    954: int vop_print_vp_offsets[] = {
                    955:        VOPARG_OFFSETOF(struct vop_print_args,a_vp),
                    956:        VDESC_NO_OFFSET
                    957: };
                    958: struct vnodeop_desc vop_print_desc = {
                    959:        0,
                    960:        "vop_print",
                    961:        0,
                    962:        vop_print_vp_offsets,
                    963:        VDESC_NO_OFFSET,
                    964:        VDESC_NO_OFFSET,
                    965:        VDESC_NO_OFFSET,
                    966:        VDESC_NO_OFFSET,
                    967:        NULL,
                    968: };
                    969:
                    970: int VOP_PRINT(struct vnode *vp)
                    971: {
                    972:        struct vop_print_args a;
                    973:        a.a_desc = VDESC(vop_print);
                    974:        a.a_vp = vp;
                    975:        return (VCALL(vp, VOFFSET(vop_print), &a));
                    976: }
                    977:
                    978: int vop_pathconf_vp_offsets[] = {
                    979:        VOPARG_OFFSETOF(struct vop_pathconf_args,a_vp),
                    980:        VDESC_NO_OFFSET
                    981: };
                    982: struct vnodeop_desc vop_pathconf_desc = {
                    983:        0,
                    984:        "vop_pathconf",
                    985:        0,
                    986:        vop_pathconf_vp_offsets,
                    987:        VDESC_NO_OFFSET,
                    988:        VDESC_NO_OFFSET,
                    989:        VDESC_NO_OFFSET,
                    990:        VDESC_NO_OFFSET,
                    991:        NULL,
                    992: };
                    993:
                    994: int VOP_PATHCONF(struct vnode *vp, int name, register_t *retval)
                    995: {
                    996:        struct vop_pathconf_args a;
                    997:        a.a_desc = VDESC(vop_pathconf);
                    998:        a.a_vp = vp;
                    999: #ifdef VFSDEBUG
                   1000:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                   1001:                panic("vop_pathconf: vp");
                   1002: #endif
                   1003:        a.a_name = name;
                   1004:        a.a_retval = retval;
                   1005:        return (VCALL(vp, VOFFSET(vop_pathconf), &a));
                   1006: }
                   1007:
                   1008: int vop_advlock_vp_offsets[] = {
                   1009:        VOPARG_OFFSETOF(struct vop_advlock_args,a_vp),
                   1010:        VDESC_NO_OFFSET
                   1011: };
                   1012: struct vnodeop_desc vop_advlock_desc = {
                   1013:        0,
                   1014:        "vop_advlock",
                   1015:        0,
                   1016:        vop_advlock_vp_offsets,
                   1017:        VDESC_NO_OFFSET,
                   1018:        VDESC_NO_OFFSET,
                   1019:        VDESC_NO_OFFSET,
                   1020:        VDESC_NO_OFFSET,
                   1021:        NULL,
                   1022: };
                   1023:
                   1024: int VOP_ADVLOCK(struct vnode *vp, void *id, int op, struct flock *fl, int flags)
                   1025: {
                   1026:        struct vop_advlock_args a;
                   1027:        a.a_desc = VDESC(vop_advlock);
                   1028:        a.a_vp = vp;
                   1029:        a.a_id = id;
                   1030:        a.a_op = op;
                   1031:        a.a_fl = fl;
                   1032:        a.a_flags = flags;
                   1033:        return (VCALL(vp, VOFFSET(vop_advlock), &a));
                   1034: }
                   1035:
                   1036: int vop_reallocblks_vp_offsets[] = {
                   1037:        VOPARG_OFFSETOF(struct vop_reallocblks_args,a_vp),
                   1038:        VDESC_NO_OFFSET
                   1039: };
                   1040: struct vnodeop_desc vop_reallocblks_desc = {
                   1041:        0,
                   1042:        "vop_reallocblks",
                   1043:        0,
                   1044:        vop_reallocblks_vp_offsets,
                   1045:        VDESC_NO_OFFSET,
                   1046:        VDESC_NO_OFFSET,
                   1047:        VDESC_NO_OFFSET,
                   1048:        VDESC_NO_OFFSET,
                   1049:        NULL,
                   1050: };
                   1051:
                   1052: int VOP_REALLOCBLKS(struct vnode *vp, struct cluster_save *buflist)
                   1053: {
                   1054:        struct vop_reallocblks_args a;
                   1055:        a.a_desc = VDESC(vop_reallocblks);
                   1056:        a.a_vp = vp;
                   1057: #ifdef VFSDEBUG
                   1058:        if ((vp->v_flag & VLOCKSWORK) && !VOP_ISLOCKED(vp))
                   1059:                panic("vop_reallocblks: vp");
                   1060: #endif
                   1061:        a.a_buflist = buflist;
                   1062:        return (VCALL(vp, VOFFSET(vop_reallocblks), &a));
                   1063: }
                   1064:
                   1065: /* Special cases: */
                   1066:
                   1067: int vop_strategy_vp_offsets[] = {
                   1068:        VDESC_NO_OFFSET
                   1069: };
                   1070: struct vnodeop_desc vop_strategy_desc = {
                   1071:        0,
                   1072:        "vop_strategy",
                   1073:        0,
                   1074:        vop_strategy_vp_offsets,
                   1075:        VDESC_NO_OFFSET,
                   1076:        VDESC_NO_OFFSET,
                   1077:        VDESC_NO_OFFSET,
                   1078:        VDESC_NO_OFFSET,
                   1079:        NULL,
                   1080: };
                   1081:
                   1082: int VOP_STRATEGY(struct buf *bp)
                   1083: {
                   1084:        struct vop_strategy_args a;
                   1085:        a.a_desc = VDESC(vop_strategy);
                   1086:        a.a_bp = bp;
                   1087:        return (VCALL(bp->b_vp, VOFFSET(vop_strategy), &a));
                   1088: }
                   1089:
                   1090: int vop_bwrite_vp_offsets[] = {
                   1091:        VDESC_NO_OFFSET
                   1092: };
                   1093: struct vnodeop_desc vop_bwrite_desc = {
                   1094:        0,
                   1095:        "vop_bwrite",
                   1096:        0,
                   1097:        vop_bwrite_vp_offsets,
                   1098:        VDESC_NO_OFFSET,
                   1099:        VDESC_NO_OFFSET,
                   1100:        VDESC_NO_OFFSET,
                   1101:        VDESC_NO_OFFSET,
                   1102:        NULL,
                   1103: };
                   1104:
                   1105: int VOP_BWRITE(struct buf *bp)
                   1106: {
                   1107:        struct vop_bwrite_args a;
                   1108:        a.a_desc = VDESC(vop_bwrite);
                   1109:        a.a_bp = bp;
                   1110:        return (VCALL(bp->b_vp, VOFFSET(vop_bwrite), &a));
                   1111: }
                   1112:
                   1113: /* End of special cases. */
                   1114:
                   1115: struct vnodeop_desc *vfs_op_descs[] = {
                   1116:        &vop_default_desc,      /* MUST BE FIRST */
                   1117:        &vop_strategy_desc,     /* XXX: SPECIAL CASE */
                   1118:        &vop_bwrite_desc,       /* XXX: SPECIAL CASE */
                   1119:
                   1120:        &vop_islocked_desc,
                   1121:        &vop_lookup_desc,
                   1122:        &vop_create_desc,
                   1123:        &vop_mknod_desc,
                   1124:        &vop_open_desc,
                   1125:        &vop_close_desc,
                   1126:        &vop_access_desc,
                   1127:        &vop_getattr_desc,
                   1128:        &vop_setattr_desc,
                   1129:        &vop_read_desc,
                   1130:        &vop_write_desc,
                   1131:        &vop_ioctl_desc,
                   1132:        &vop_poll_desc,
                   1133:        &vop_kqfilter_desc,
                   1134:        &vop_revoke_desc,
                   1135:        &vop_fsync_desc,
                   1136:        &vop_remove_desc,
                   1137:        &vop_link_desc,
                   1138:        &vop_rename_desc,
                   1139:        &vop_mkdir_desc,
                   1140:        &vop_rmdir_desc,
                   1141:        &vop_symlink_desc,
                   1142:        &vop_readdir_desc,
                   1143:        &vop_readlink_desc,
                   1144:        &vop_abortop_desc,
                   1145:        &vop_inactive_desc,
                   1146:        &vop_reclaim_desc,
                   1147:        &vop_lock_desc,
                   1148:        &vop_unlock_desc,
                   1149:        &vop_bmap_desc,
                   1150:        &vop_print_desc,
                   1151:        &vop_pathconf_desc,
                   1152:        &vop_advlock_desc,
                   1153:        &vop_reallocblks_desc,
                   1154:        NULL
                   1155: };
                   1156:

CVSweb