|
|
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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.