Annotation of kernel/bsd/vfs/vfs_support.c, revision 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.