Annotation of kernel/bsd/vfs/vfs_support.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.1 (the "License").  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License.
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: 
                     25: /*
                     26:  * Copyright (c) 1998 Apple Computer, Inc.  All rights reserved.
                     27:  *
                     28:  *  File:  vfs/vfs_support.c
                     29:  *
                     30:  *     The default VFS routines. A VFS plugin can use these
                     31:  *     functions in case it does not want to implement all. These functions
                     32:  *     take care of releasing locks and free up memory that they are
                     33:  *     supposed to.
                     34:  *
                     35:  *     nop_* routines always return 0 [success]
                     36:  *     err_* routines always return EOPNOTSUPP
                     37:  *
                     38:  *     This file could be auto-generated from vnode_if.src. but that needs
                     39:  *     support for freeing cnp.
                     40:  *
                     41:  * HISTORY
                     42:  *  18-Aug-1998 Umesh Vaishampayan ([email protected])
                     43:  *      Created.
                     44:  */
                     45: 
                     46: #include <vfs/vfs_support.h>
                     47: 
                     48: 
                     49: struct vop_create_args /* {
                     50:        struct vnode *a_dvp;
                     51:        struct vnode **a_vpp;
                     52:        struct componentname *a_cnp;
                     53:        struct vattr *a_vap;
                     54: } */;
                     55: 
                     56: int
                     57: nop_create(struct vop_create_args *ap)
                     58: {
                     59: #if DIAGNOSTIC
                     60:        if ((ap->a_cnp->cn_flags & HASBUF) == 0)
                     61:                panic("nop_create: no name");
                     62: #endif
                     63:        VOP_ABORTOP(ap->a_dvp, ap->a_cnp);
                     64:        vput(ap->a_dvp);
                     65:        return (0);
                     66: }
                     67: 
                     68: int
                     69: err_create(struct vop_create_args *ap)
                     70: {
                     71:        (void)nop_create(ap);
                     72:        return (EOPNOTSUPP);
                     73: }
                     74: 
                     75: 
                     76: struct vop_whiteout_args /* {
                     77:        struct vnode *a_dvp;
                     78:        struct componentname *a_cnp;
                     79:        int a_flags;
                     80: } */;
                     81: 
                     82: int
                     83: nop_whiteout(struct vop_whiteout_args *ap)
                     84: {
                     85:        return (0);
                     86: }
                     87: 
                     88: int
                     89: err_whiteout(struct vop_whiteout_args *ap)
                     90: {
                     91:        return (EOPNOTSUPP);
                     92: }
                     93: 
                     94: 
                     95: struct vop_mknod_args /* {
                     96:        struct vnode *a_dvp;
                     97:        struct vnode **a_vpp;
                     98:        struct componentname *a_cnp;
                     99:        struct vattr *a_vap;
                    100: } */;
                    101: 
                    102: int
                    103: nop_mknod(struct vop_mknod_args *ap)
                    104: {
                    105: #if DIAGNOSTIC
                    106:        if ((ap->a_cnp->cn_flags & HASBUF) == 0)
                    107:                panic("nop_mknod: no name");
                    108: #endif
                    109:        VOP_ABORTOP(ap->a_dvp, ap->a_cnp);
                    110:        vput(ap->a_dvp);
                    111:        return (0);
                    112: }
                    113: 
                    114: int
                    115: err_mknod(struct vop_mknod_args *ap)
                    116: {
                    117:        (void)nop_mknod(ap);
                    118:        return (EOPNOTSUPP);
                    119: }
                    120: 
                    121: 
                    122: struct vop_mkcomplex_args /* {
                    123:        struct vnode *a_dvp,
                    124:        struct vnode **a_vpp,
                    125:        struct componentname *a_cnp,
                    126:        struct vattr *a_vap,
                    127:        u_long a_type)
                    128: } */;
                    129: 
                    130: int
                    131: nop_mkcomplex(struct vop_mkcomplex_args *ap)
                    132: {
                    133: #if DIAGNOSTIC
                    134:        if ((ap->a_cnp->cn_flags & HASBUF) == 0)
                    135:                panic("nop_mkcomplex: no name");
                    136: #endif
                    137:        VOP_ABORTOP(ap->a_dvp, ap->a_cnp);
                    138:        vput(ap->a_dvp);
                    139:        return (0);
                    140: }
                    141: 
                    142: int
                    143: err_mkcomplex(struct vop_mkcomplex_args *ap)
                    144: {
                    145:        (void)nop_mkcomplex(ap);
                    146:        return (EOPNOTSUPP);
                    147: }
                    148: 
                    149: 
                    150: struct vop_open_args /* {
                    151:        struct vnode *a_vp;
                    152:        int  a_mode;
                    153:        struct ucred *a_cred;
                    154:        struct proc *a_p;
                    155: } */;
                    156: 
                    157: int
                    158: nop_open(struct vop_open_args *ap)
                    159: {
                    160:        return (0);
                    161: }
                    162: 
                    163: int
                    164: err_open(struct vop_open_args *ap)
                    165: {
                    166:        return (EOPNOTSUPP);
                    167: }
                    168: 
                    169: 
                    170: struct vop_close_args /* {
                    171:        struct vnode *a_vp;
                    172:        int  a_fflag;
                    173:        struct ucred *a_cred;
                    174:        struct proc *a_p;
                    175: } */;
                    176: 
                    177: int
                    178: nop_close(struct vop_close_args *ap)
                    179: {
                    180:        return (0);
                    181: }
                    182: 
                    183: int
                    184: err_close(struct vop_close_args *ap)
                    185: {
                    186:        return (EOPNOTSUPP);
                    187: }
                    188: 
                    189: 
                    190: struct vop_access_args /* {
                    191:        struct vnode *a_vp;
                    192:        int  a_mode;
                    193:        struct ucred *a_cred;
                    194:        struct proc *a_p;
                    195: } */;
                    196: 
                    197: int
                    198: nop_access(struct vop_access_args *ap)
                    199: {
                    200:        return (0);
                    201: }
                    202: 
                    203: int
                    204: err_access(struct vop_access_args *ap)
                    205: {
                    206:        return (EOPNOTSUPP);
                    207: }
                    208: 
                    209: 
                    210: struct vop_getattr_args /* {
                    211:        struct vnode *a_vp;
                    212:        struct vattr *a_vap;
                    213:        struct ucred *a_cred;
                    214:        struct proc *a_p;
                    215: } */;
                    216: 
                    217: int
                    218: nop_getattr(struct vop_getattr_args *ap)
                    219: {
                    220:        return (0);
                    221: }
                    222: 
                    223: int
                    224: err_getattr(struct vop_getattr_args *ap)
                    225: {
                    226:        return (EOPNOTSUPP);
                    227: }
                    228: 
                    229: 
                    230: struct vop_setattr_args /* {
                    231:        struct vnode *a_vp;
                    232:        struct vattr *a_vap;
                    233:        struct ucred *a_cred;
                    234:        struct proc *a_p;
                    235: } */;
                    236: 
                    237: int
                    238: nop_setattr(struct vop_setattr_args *ap)
                    239: {
                    240:        return (0);
                    241: }
                    242: 
                    243: int
                    244: err_setattr(struct vop_setattr_args *ap)
                    245: {
                    246:        return (EOPNOTSUPP);
                    247: }
                    248: 
                    249: 
                    250: struct vop_getattrlist_args /* {
                    251:        struct vnode *a_vp;
                    252:        struct attrlist *a_alist;
                    253:        struct uio *a_uio;
                    254:        struct ucred *a_cred;
                    255:        struct proc *a_p;
                    256: } */;
                    257: 
                    258: int
                    259: nop_getattrlist(struct vop_getattrlist_args *ap)
                    260: {
                    261:        return (0);
                    262: }
                    263: 
                    264: int
                    265: err_getattrlist(struct vop_getattrlist_args *ap)
                    266: {
                    267:        return (EOPNOTSUPP);
                    268: }
                    269: 
                    270: 
                    271: struct vop_setattrlist_args /* {
                    272:        struct vnode *a_vp;
                    273:        struct attrlist *a_alist;
                    274:        struct uio *a_uio;
                    275:        struct ucred *a_cred;
                    276:        struct proc *a_p;
                    277: } */;
                    278: 
                    279: int
                    280: nop_setattrlist(struct vop_setattrlist_args *ap)
                    281: {
                    282:        return (0);
                    283: }
                    284: 
                    285: int
                    286: err_setattrlist(struct vop_setattrlist_args *ap)
                    287: {
                    288:        return (EOPNOTSUPP);
                    289: }
                    290: 
                    291: 
                    292: struct vop_read_args /*  {
                    293:        struct vnode *a_vp;
                    294:        struct uio *a_uio;
                    295:        int a_ioflag;
                    296:        struct ucred *a_cred;
                    297: } */;
                    298: 
                    299: int
                    300: nop_read(struct vop_read_args *ap)
                    301: {
                    302:        return (0);
                    303: }
                    304: 
                    305: int
                    306: err_read(struct vop_read_args *ap)
                    307: {
                    308:        return (EOPNOTSUPP);
                    309: }
                    310: 
                    311: 
                    312: struct vop_write_args /*  {
                    313:        struct vnode *a_vp;
                    314:        struct uio *a_uio;
                    315:        int a_ioflag;
                    316:        struct ucred *a_cred;
                    317: } */;
                    318: 
                    319: int
                    320: nop_write(struct vop_write_args *ap)
                    321: {
                    322:        return (0);
                    323: }
                    324: 
                    325: int
                    326: err_write(struct vop_write_args *ap)
                    327: {
                    328:        return (EOPNOTSUPP);
                    329: }
                    330: 
                    331: 
                    332: struct vop_lease_args /* {
                    333:        struct vnode *a_vp;
                    334:        struct proc *a_p;
                    335:        struct ucred *a_cred;
                    336:        int a_flag;
                    337: } */;
                    338: 
                    339: int
                    340: nop_lease(struct vop_lease_args *ap)
                    341: {
                    342:        return (0);
                    343: }
                    344: 
                    345: int
                    346: err_lease(struct vop_lease_args *ap)
                    347: {
                    348:        return (EOPNOTSUPP);
                    349: }
                    350: 
                    351: 
                    352: struct vop_ioctl_args /* {
                    353:        struct vnode *a_vp;
                    354:        u_long a_command;
                    355:        caddr_t a_data;
                    356:        int a_fflag;
                    357:        struct ucred *a_cred;
                    358:        struct proc *a_p;
                    359: } */;
                    360: 
                    361: int
                    362: nop_ioctl(struct vop_ioctl_args *ap)
                    363: {
                    364:        return (0);
                    365: }
                    366: 
                    367: int
                    368: err_ioctl(struct vop_ioctl_args *ap)
                    369: {
                    370:        return (EOPNOTSUPP);
                    371: }
                    372: 
                    373: 
                    374: struct vop_select_args /* {
                    375:        struct vnode *a_vp;
                    376:        int a_which;
                    377:        int a_fflags;
                    378:        struct ucred *a_cred;
                    379:        struct proc *a_p;
                    380: } */;
                    381: 
                    382: int
                    383: nop_select(struct vop_select_args *ap)
                    384: {
                    385:        return (0);
                    386: }
                    387: 
                    388: int
                    389: err_select(struct vop_select_args *ap)
                    390: {
                    391:        return (EOPNOTSUPP);
                    392: }
                    393: 
                    394: 
                    395: struct vop_exchange_args /* {
                    396:        struct vnode *a_fvp;
                    397:        struct vnode *a_tvp;
                    398:        struct ucred *a_cred;
                    399:        struct proc *a_p;
                    400: } */;
                    401: 
                    402: int
                    403: nop_exchange(struct vop_exchange_args *ap)
                    404: {
                    405:        return (0);
                    406: }
                    407: 
                    408: int
                    409: err_exchange(struct vop_exchange_args *ap)
                    410: {
                    411:        return (EOPNOTSUPP);
                    412: }
                    413: 
                    414: 
                    415: struct vop_revoke_args /* {
                    416:        struct vnode *a_vp;
                    417:        int a_flags;
                    418: } */;
                    419: 
                    420: int
                    421: nop_revoke(struct vop_revoke_args *ap)
                    422: {
                    423:        return (vop_revoke(ap));
                    424: }
                    425: 
                    426: int
                    427: err_revoke(struct vop_revoke_args *ap)
                    428: {
                    429:        (void)nop_revoke(ap);
                    430:        return (EOPNOTSUPP);
                    431: }
                    432: 
                    433: 
                    434: struct vop_mmap_args /* {
                    435:        struct vnode *a_vp;
                    436:        int a_fflags;
                    437:        struct ucred *a_cred;
                    438:        struct proc *a_p;
                    439: } */;
                    440: 
                    441: int
                    442: nop_mmap(struct vop_mmap_args *ap)
                    443: {
                    444:        return (0);
                    445: }
                    446: 
                    447: int
                    448: err_mmap(struct vop_mmap_args *ap)
                    449: {
                    450:        return (EOPNOTSUPP);
                    451: }
                    452: 
                    453: 
                    454: struct vop_fsync_args /* {
                    455:        struct vnode *a_vp;
                    456:        struct ucred *a_cred;
                    457:        int a_waitfor;
                    458:        struct proc *a_p;
                    459: } */;
                    460: 
                    461: int
                    462: nop_fsync(struct vop_fsync_args *ap)
                    463: {
                    464:        return (0);
                    465: }
                    466: 
                    467: int
                    468: err_fsync(struct vop_fsync_args *ap)
                    469: {
                    470:        return (EOPNOTSUPP);
                    471: }
                    472: 
                    473: 
                    474: struct vop_seek_args /* {
                    475:        struct vnode *a_vp;
                    476:        off_t a_oldoff;
                    477:        off_t a_newoff;
                    478:        struct ucred *a_cred;
                    479: } */;
                    480: 
                    481: int
                    482: nop_seek(struct vop_seek_args *ap)
                    483: {
                    484:        return (0);
                    485: }
                    486: 
                    487: int
                    488: err_seek(struct vop_seek_args *ap)
                    489: {
                    490:        return (EOPNOTSUPP);
                    491: }
                    492: 
                    493: 
                    494: struct vop_remove_args /* {
                    495:        struct vnode *a_dvp;
                    496:        struct vnode *a_vp;
                    497:        struct componentname *a_cnp;
                    498: } */;
                    499: 
                    500: int
                    501: nop_remove(struct vop_remove_args *ap)
                    502: {
                    503:        if (ap->a_dvp == ap->a_vp)
                    504:                vrele(ap->a_vp);
                    505:        else
                    506:                vput(ap->a_vp);
                    507:        vput(ap->a_dvp);
                    508:        return (0);
                    509: }
                    510: 
                    511: int
                    512: err_remove(struct vop_remove_args *ap)
                    513: {
                    514:        (void)nop_remove(ap);
                    515:        return (EOPNOTSUPP);
                    516: }
                    517: 
                    518: 
                    519: struct vop_link_args /* {
                    520:        struct vnode *a_vp;
                    521:        struct vnode *a_tdvp;
                    522:        struct componentname *a_cnp;
                    523: } */;
                    524: 
                    525: int
                    526: nop_link(struct vop_link_args *ap)
                    527: {
                    528: #if DIAGNOSTIC
                    529:        if ((ap->a_cnp->cn_flags & HASBUF) == 0)
                    530:                panic("nop_link: no name");
                    531: #endif
                    532:        VOP_ABORTOP(ap->a_tdvp, ap->a_cnp);
                    533:        vput(ap->a_tdvp);
                    534:        return (0);
                    535: }
                    536: 
                    537: int
                    538: err_link(struct vop_link_args *ap)
                    539: {
                    540:        (void)nop_link(ap);
                    541:        return (EOPNOTSUPP);
                    542: }
                    543: 
                    544: 
                    545: struct vop_rename_args /* {
                    546:        struct vnode *a_fdvp;
                    547:        struct vnode *a_fvp;
                    548:        struct componentname *a_fcnp;
                    549:        struct vnode *a_tdvp;
                    550:        struct vnode *a_tvp;
                    551:        struct componentname *a_tcnp;
                    552: } */;
                    553: 
                    554: int
                    555: nop_rename(struct vop_rename_args *ap)
                    556: {
                    557: #if DIAGNOSTIC
                    558:        if ((ap->a_tcnp->cn_flags & HASBUF) == 0 ||
                    559:            (ap->a_fcnp->cn_flags & HASBUF) == 0)
                    560:                panic("nop_rename: no name");
                    561: #endif
                    562:        VOP_ABORTOP(ap->a_tdvp, ap->a_tcnp);
                    563:        if (ap->a_tdvp == ap->a_tvp)
                    564:                vrele(ap->a_tdvp);
                    565:        else
                    566:                vput(ap->a_tdvp);
                    567:        if (ap->a_tvp)
                    568:                vput(ap->a_tvp);
                    569:        VOP_ABORTOP(ap->a_fdvp, ap->a_fcnp);
                    570:        vrele(ap->a_fdvp);
                    571:        vrele(ap->a_fvp);
                    572:        return (0);
                    573: }
                    574: 
                    575: int
                    576: err_rename(struct vop_rename_args *ap)
                    577: {
                    578:        (void)nop_rename(ap);
                    579:        return (EOPNOTSUPP);
                    580: }
                    581: 
                    582: 
                    583: struct vop_mkdir_args /* {
                    584:        struct vnode *a_dvp;
                    585:        struct vnode **a_vpp;
                    586:        struct componentname *a_cnp;
                    587:        struct vattr *a_vap;
                    588: } */;
                    589: 
                    590: int
                    591: nop_mkdir(struct vop_mkdir_args *ap)
                    592: {
                    593: #if DIAGNOSTIC
                    594:        if ((ap->a_cnp->cn_flags & HASBUF) == 0)
                    595:                panic("nop_mkdir: no name");
                    596: #endif
                    597:        VOP_ABORTOP(ap->a_dvp, ap->a_cnp);
                    598:        vput(ap->a_dvp);
                    599:        return (0);
                    600: }
                    601: 
                    602: int
                    603: err_mkdir(struct vop_mkdir_args *ap)
                    604: {
                    605:        (void)nop_mkdir(ap);
                    606:        return (EOPNOTSUPP);
                    607: }
                    608: 
                    609: 
                    610: struct vop_rmdir_args /* {
                    611:        struct vnode *a_dvp;
                    612:        struct vnode *a_vp;
                    613:        struct componentname *a_cnp;
                    614: } */;
                    615: 
                    616: int
                    617: nop_rmdir(struct vop_rmdir_args *ap)
                    618: {
                    619:        vput(ap->a_dvp);
                    620:        vput(ap->a_vp);
                    621:        return (0);
                    622: }
                    623: 
                    624: int
                    625: err_rmdir(struct vop_rmdir_args *ap)
                    626: {
                    627:        (void)nop_rmdir(ap);
                    628:        return (EOPNOTSUPP);
                    629: }
                    630: 
                    631: 
                    632: struct vop_symlink_args /* {
                    633:        struct vnode *a_dvp;
                    634:        struct vnode **a_vpp;
                    635:        struct componentname *a_cnp;
                    636:        struct vattr *a_vap;
                    637:        char *a_target;
                    638: } */;
                    639: 
                    640: int
                    641: nop_symlink(struct vop_symlink_args *ap)
                    642: {
                    643: #if DIAGNOSTIC
                    644:        if ((ap->a_cnp->cn_flags & HASBUF) == 0)
                    645:                panic("nop_symlink: no name");
                    646: #endif
                    647:        VOP_ABORTOP(ap->a_dvp, ap->a_cnp);
                    648:        vput(ap->a_dvp);
                    649:        return (0);
                    650: }
                    651: 
                    652: int
                    653: err_symlink(struct vop_symlink_args *ap)
                    654: {
                    655:        (void)nop_symlink(ap);
                    656:        return (EOPNOTSUPP);
                    657: }
                    658: 
                    659: 
                    660: struct vop_readdir_args /* {
                    661:        struct vnode *a_vp;
                    662:        struct uio *a_uio;
                    663:        struct ucred *a_cred;
                    664:        int *a_eofflag;
                    665:        int *a_ncookies;
                    666:        u_long **a_cookies;
                    667: } */;
                    668: 
                    669: int
                    670: nop_readdir(struct vop_readdir_args *ap)
                    671: {
                    672:        return (0);
                    673: }
                    674: 
                    675: int
                    676: err_readdir(struct vop_readdir_args *ap)
                    677: {
                    678:        return (EOPNOTSUPP);
                    679: }
                    680: 
                    681: 
                    682: struct vop_readdirattr_args /* {
                    683:        struct vnode *a_vp;
                    684:        struct attrlist *a_alist;
                    685:        struct uio *a_uio;
                    686:        int a_index;
                    687:        int *a_eofflag;
                    688:        u_long *a_ncookies;
                    689:        u_long **a_cookies;
                    690:        struct ucred *a_cred;
                    691: } */;
                    692: 
                    693: int
                    694: nop_readdirattr(struct vop_readdirattr_args *ap)
                    695: {
                    696:        return (0);
                    697: }
                    698: 
                    699: int
                    700: err_readdirattr(struct vop_readdirattr_args *ap)
                    701: {
                    702:        return (EOPNOTSUPP);
                    703: }
                    704: 
                    705: 
                    706: struct vop_readlink_args /* {
                    707:        struct vnode *vp;
                    708:        struct uio *uio;
                    709:        struct ucred *cred;
                    710: } */;
                    711: 
                    712: int
                    713: nop_readlink(struct vop_readlink_args *ap)
                    714: {
                    715:        return (0);
                    716: }
                    717: 
                    718: int
                    719: err_readlink(struct vop_readlink_args *ap)
                    720: {
                    721:        return (EOPNOTSUPP);
                    722: }
                    723: 
                    724: 
                    725: struct vop_abortop_args /* {
                    726:        struct vnode *a_dvp;
                    727:        struct componentname *a_cnp;
                    728: } */;
                    729: 
                    730: int
                    731: nop_abortop(struct vop_abortop_args *ap)
                    732: {
                    733:        if ((ap->a_cnp->cn_flags & (HASBUF | SAVESTART)) == HASBUF)
                    734:                FREE_ZONE(ap->a_cnp->cn_pnbuf, ap->a_cnp->cn_pnlen, M_NAMEI);
                    735:        return (0);
                    736: }
                    737: 
                    738: int
                    739: err_abortop(struct vop_abortop_args *ap)
                    740: {
                    741:        (void)nop_abortop(ap);
                    742:        return (EOPNOTSUPP);
                    743: }
                    744: 
                    745: 
                    746: struct vop_inactive_args /* {
                    747:        struct vnode *a_vp;
                    748:        struct proc *a_p;
                    749: } */;
                    750: 
                    751: int
                    752: nop_inactive(struct vop_inactive_args *ap)
                    753: {
                    754:        VOP_UNLOCK(ap->a_vp, 0, ap->a_p);
                    755:        return (0);
                    756: }
                    757: 
                    758: int
                    759: err_inactive(struct vop_inactive_args *ap)
                    760: {
                    761:        (void)nop_inactive(ap);
                    762:        return (EOPNOTSUPP);
                    763: }
                    764: 
                    765: 
                    766: struct vop_reclaim_args /* {
                    767:        struct vnode *a_vp;
                    768:        struct proc *a_p;
                    769: } */;
                    770: 
                    771: int
                    772: nop_reclaim(struct vop_reclaim_args *ap)
                    773: {
                    774:        return (0);
                    775: }
                    776: 
                    777: int
                    778: err_reclaim(struct vop_reclaim_args *ap)
                    779: {
                    780:        return (EOPNOTSUPP);
                    781: }
                    782: 
                    783: 
                    784: struct vop_lock_args /* {
                    785:        struct vnode *a_vp;
                    786:        int a_flags;
                    787:        struct proc *a_p;
                    788: } */;
                    789: 
                    790: int
                    791: nop_lock(struct vop_lock_args *ap)
                    792: {
                    793:        return (vop_nolock(ap));
                    794: }
                    795: 
                    796: int
                    797: err_lock(struct vop_lock_args *ap)
                    798: {
                    799:        (void)nop_lock(ap);
                    800:        return (EOPNOTSUPP);
                    801: }
                    802: 
                    803: 
                    804: struct vop_unlock_args /* {
                    805:        struct vnode *a_vp;
                    806:        int a_flags;
                    807:        struct proc *a_p;
                    808: } */;
                    809: 
                    810: int
                    811: nop_unlock(struct vop_unlock_args *ap)
                    812: {
                    813:        return (vop_nounlock(ap));
                    814: }
                    815: 
                    816: int
                    817: err_unlock(struct vop_unlock_args *ap)
                    818: {
                    819:        (void)nop_unlock(ap);
                    820:        return (EOPNOTSUPP);
                    821: }
                    822: 
                    823: 
                    824: struct vop_bmap_args /* {
                    825:        struct vnode *vp;
                    826:        daddr_t bn;
                    827:        struct vnode **vpp;
                    828:        daddr_t *bnp;
                    829:        int *runp;
                    830: } */;
                    831: 
                    832: int
                    833: nop_bmap(struct vop_bmap_args *ap)
                    834: {
                    835:        return (0);
                    836: }
                    837: 
                    838: int
                    839: err_bmap(struct vop_bmap_args *ap)
                    840: {
                    841:        return (EOPNOTSUPP);
                    842: }
                    843: 
                    844: 
                    845: struct vop_strategy_args /* {
                    846:        struct buf *a_bp;
                    847: } */;
                    848: 
                    849: int
                    850: nop_strategy(struct vop_strategy_args *ap)
                    851: {
                    852:        return (0);
                    853: }
                    854: 
                    855: int
                    856: err_strategy(struct vop_strategy_args *ap)
                    857: {
                    858:        return (EOPNOTSUPP);
                    859: }
                    860: 
                    861: 
                    862: struct vop_print_args /* {
                    863:        struct vnode *a_vp;
                    864: } */;
                    865: 
                    866: int
                    867: nop_print(struct vop_print_args *ap)
                    868: {
                    869:        return (0);
                    870: }
                    871: 
                    872: int
                    873: err_print(struct vop_print_args *ap)
                    874: {
                    875:        return (EOPNOTSUPP);
                    876: }
                    877: 
                    878: 
                    879: struct vop_islocked_args /* {
                    880:        struct vnode *a_vp;
                    881: } */;
                    882: 
                    883: int
                    884: nop_islocked(struct vop_islocked_args *ap)
                    885: {
                    886:        return (vop_noislocked(ap));
                    887: }
                    888: 
                    889: int
                    890: err_islocked(struct vop_islocked_args *ap)
                    891: {
                    892:        (void)nop_islocked(ap);
                    893:        return (EOPNOTSUPP);
                    894: }
                    895: 
                    896: 
                    897: struct vop_pathconf_args /* {
                    898:        struct vnode *a_vp;
                    899:        int a_name;
                    900:        register_t *a_retval;
                    901: } */;
                    902: 
                    903: int
                    904: nop_pathconf(struct vop_pathconf_args *ap)
                    905: {
                    906:        return (0);
                    907: }
                    908: 
                    909: int
                    910: err_pathconf(struct vop_pathconf_args *ap)
                    911: {
                    912:        return (EOPNOTSUPP);
                    913: }
                    914: 
                    915: 
                    916: struct vop_advlock_args /* {
                    917:        struct vnode *a_vp;
                    918:        caddr_t a_id;
                    919:        int a_op;
                    920:        struct flock *a_fl;
                    921:        int a_flags;
                    922: } */;
                    923: 
                    924: int
                    925: nop_advlock(struct vop_advlock_args *ap)
                    926: {
                    927:        return (0);
                    928: }
                    929: 
                    930: int
                    931: err_advlock(struct vop_advlock_args *ap)
                    932: {
                    933:        return (EOPNOTSUPP);
                    934: }
                    935: 
                    936: 
                    937: struct vop_blkatoff_args /* {
                    938:        struct vnode *a_vp;
                    939:        off_t a_offset;
                    940:        char **a_res;
                    941:        struct buf **a_bpp;
                    942: } */;
                    943: 
                    944: int
                    945: nop_blkatoff(struct vop_blkatoff_args *ap)
                    946: {
                    947:        *ap->a_bpp = NULL;
                    948:        return (0);
                    949: }
                    950: 
                    951: int
                    952: err_blkatoff(struct vop_blkatoff_args *ap)
                    953: {
                    954:        (void)nop_blkatoff(ap);
                    955:        return (EOPNOTSUPP);
                    956: }
                    957: 
                    958: 
                    959: struct vop_valloc_args /* {
                    960:        struct vnode *a_pvp;
                    961:        int a_mode;
                    962:        struct ucred *a_cred;
                    963:        struct vnode **a_vpp;
                    964: } */;
                    965: 
                    966: int
                    967: nop_valloc(struct vop_valloc_args *ap)
                    968: {
                    969:        *ap->a_vpp = NULL;
                    970:        return (0);
                    971: }
                    972: 
                    973: int
                    974: err_valloc(struct vop_valloc_args *ap)
                    975: {
                    976:        (void)nop_valloc(ap);
                    977:        return (EOPNOTSUPP);
                    978: }
                    979: 
                    980: 
                    981: struct vop_reallocblks_args /* {
                    982:        struct vnode *a_vp;
                    983:        struct cluster_save *a_buflist;
                    984: } */;
                    985: 
                    986: int
                    987: nop_reallocblks(struct vop_reallocblks_args *ap)
                    988: {
                    989:        return (0);
                    990: }
                    991: 
                    992: int
                    993: err_reallocblks(struct vop_reallocblks_args *ap)
                    994: {
                    995:        return (EOPNOTSUPP);
                    996: }
                    997: 
                    998: 
                    999: struct vop_vfree_args /* {
                   1000:        struct vnode *a_pvp;
                   1001:        ino_t a_ino;
                   1002:        int a_mode;
                   1003: } */;
                   1004: 
                   1005: int
                   1006: nop_vfree(struct vop_vfree_args *ap)
                   1007: {
                   1008:        return (0);
                   1009: }
                   1010: 
                   1011: int
                   1012: err_vfree(struct vop_vfree_args *ap)
                   1013: {
                   1014:        return (EOPNOTSUPP);
                   1015: }
                   1016: 
                   1017: 
                   1018: struct vop_truncate_args /* {
                   1019:        struct vnode *a_vp;
                   1020:        off_t a_length;
                   1021:        int a_flags;
                   1022:        struct ucred *a_cred;
                   1023:        struct proc *a_p;
                   1024: } */;
                   1025: 
                   1026: int
                   1027: nop_truncate(struct vop_truncate_args *ap)
                   1028: {
                   1029:        return (0);
                   1030: }
                   1031: 
                   1032: int
                   1033: err_truncate(struct vop_truncate_args *ap)
                   1034: {
                   1035:        return (EOPNOTSUPP);
                   1036: }
                   1037: 
                   1038: 
                   1039: struct vop_allocate_args /* {
                   1040:        struct vnode *a_vp;
                   1041:        off_t a_length;
                   1042:        u_int32_t a_flags;
                   1043:        off_t *a_bytesallocated;
                   1044:        struct ucred *a_cred;
                   1045:        struct proc *a_p;
                   1046: } */;
                   1047: 
                   1048: int
                   1049: nop_allocate(struct vop_allocate_args *ap)
                   1050: {
                   1051:        *(ap->a_bytesallocated) = 0;
                   1052:        return (0);
                   1053: }
                   1054: 
                   1055: int
                   1056: err_allocate(struct vop_allocate_args *ap)
                   1057: {
                   1058:        (void)nop_allocate(ap);
                   1059:        return (EOPNOTSUPP);
                   1060: }
                   1061: 
                   1062: 
                   1063: struct vop_update_args /* {
                   1064:        struct vnode *a_vp;
                   1065:        struct timeval *a_access;
                   1066:        struct timeval *a_modify;
                   1067:        int a_waitfor;
                   1068: } */;
                   1069: 
                   1070: int
                   1071: nop_update(struct vop_update_args *ap)
                   1072: {
                   1073:        return (0);
                   1074: }
                   1075: 
                   1076: int
                   1077: err_update(struct vop_update_args *ap)
                   1078: {
                   1079:        return (EOPNOTSUPP);
                   1080: }
                   1081: 
                   1082: 
                   1083: struct vop_pgrd_args /* {
                   1084:        struct vnode *a_vp;
                   1085:        struct uio *a_uio;
                   1086:        struct ucred *a_cred;
                   1087: } */;
                   1088: 
                   1089: int
                   1090: nop_pgrd(struct vop_pgrd_args *ap)
                   1091: {
                   1092:        return (0);
                   1093: }
                   1094: 
                   1095: int
                   1096: err_pgrd(struct vop_pgrd_args *ap)
                   1097: {
                   1098:        return (EOPNOTSUPP);
                   1099: }
                   1100: 
                   1101: 
                   1102: struct vop_pgwr_args /* {
                   1103:        struct vnode *a_vp;
                   1104:        struct uio *a_uio;
                   1105:        struct ucred *a_cred;
                   1106:        vm_offset_t     a_offset;
                   1107: } */;
                   1108: 
                   1109: int
                   1110: nop_pgwr(struct vop_pgwr_args *ap)
                   1111: {
                   1112:        return (0);
                   1113: }
                   1114: 
                   1115: int
                   1116: err_pgwr(struct vop_pgwr_args *ap)
                   1117: {
                   1118:        return (EOPNOTSUPP);
                   1119: }
                   1120: 
                   1121: 
                   1122: struct vop_bwrite_args /* {
                   1123:        struct buf *a_bp;
                   1124: } */;
                   1125: 
                   1126: int
                   1127: nop_bwrite(struct vop_bwrite_args *ap)
                   1128: {
                   1129:        return (bwrite(ap->a_bp));
                   1130: }
                   1131: 
                   1132: int
                   1133: err_bwrite(struct vop_bwrite_args *ap)
                   1134: {
                   1135:        return (EOPNOTSUPP);
                   1136: }
                   1137: 
                   1138: 
                   1139: struct vop_pagein_args /* {
                   1140:        struct vnode *a_vp;
                   1141:        struct uio *a_uio;
                   1142:        int a_ioflag;
                   1143:        struct ucred *a_cred;
                   1144: } */;
                   1145: 
                   1146: int
                   1147: nop_pagein(struct vop_pagein_args *ap)
                   1148: {
                   1149:        /* pass thru to read */ 
                   1150:        return (VOP_READ(ap->a_vp, ap->a_uio, ap->a_ioflag, ap->a_cred));
                   1151: }
                   1152: 
                   1153: int
                   1154: err_pagein(struct vop_pagein_args *ap)
                   1155: {
                   1156:        /* pass thru to read */ 
                   1157:        return (VOP_READ(ap->a_vp, ap->a_uio, ap->a_ioflag, ap->a_cred));
                   1158: }
                   1159: 
                   1160: 
                   1161: struct vop_pageout_args /* {
                   1162:        struct vnode *a_vp;
                   1163:        struct uio *a_uio;
                   1164:        int a_ioflag;
                   1165:        struct ucred *a_cred;
                   1166: } */;
                   1167: 
                   1168: int
                   1169: nop_pageout(struct vop_pageout_args *ap)
                   1170: {
                   1171:        /* pass thru to write */ 
                   1172:        return (VOP_WRITE(ap->a_vp, ap->a_uio, ap->a_ioflag, ap->a_cred));
                   1173: }
                   1174: 
                   1175: int
                   1176: err_pageout(struct vop_pageout_args *ap)
                   1177: {
                   1178:        /* pass thru to write */ 
                   1179:        return (VOP_WRITE(ap->a_vp, ap->a_uio, ap->a_ioflag, ap->a_cred));
                   1180: }
                   1181: 
                   1182: 
                   1183: struct vop_devblocksize_args /* {
                   1184:        struct vnode *a_vp;
                   1185:        register_t *a_retval;
                   1186: } */;
                   1187: 
                   1188: int
                   1189: nop_devblocksize(struct vop_devblocksize_args *ap)
                   1190: {
                   1191:        /* XXX default value because the call sites do not check error */
                   1192:        *ap->a_retval = 512;
                   1193:        return (0);
                   1194: }
                   1195: 
                   1196: int
                   1197: err_devblocksize(struct vop_devblocksize_args *ap)
                   1198: {
                   1199:        (void)nop_devblocksize(ap);
                   1200:        return (EOPNOTSUPP);
                   1201: }
                   1202: 
                   1203: 
                   1204: struct vop_searchfs /* {
                   1205:        struct vnode *a_vp;
                   1206:        void *a_searchparams1;
                   1207:        void *a_searchparams2;
                   1208:        struct attrlist *a_searchattrs;
                   1209:        u_long a_maxmatches;
                   1210:        struct timeval *a_timelimit;
                   1211:        struct attrlist *a_returnattrs;
                   1212:        u_long *a_nummatches;
                   1213:        u_long a_scriptcode;
                   1214:        u_long a_options;
                   1215:        struct uio      *a_uio;
                   1216:        struct searchstate      *a_searchstate;
                   1217: } */;
                   1218: 
                   1219: int
                   1220: nop_searchfs(struct vop_searchfs_args *ap)
                   1221: {
                   1222:        *(ap->a_nummatches) = 0;
                   1223:        return (0);
                   1224: }
                   1225: 
                   1226: int
                   1227: err_searchfs(struct vop_searchfs_args *ap)
                   1228: {
                   1229:        (void)nop_searchfs(ap);
                   1230:        return (EOPNOTSUPP);
                   1231: }
                   1232: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.