|
|
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.