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

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

unix.superglobalmegacorp.com

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