1/*- 2 * Copyright (c) 1994 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley 6 * by Pace Willisson (pace@blitz.com). The Rock Ridge Extension 7 * Support code is derived from software contributed to Berkeley 8 * by Atsushi Murai (amurai@spec.co.jp). --- 22 unchanged lines hidden (view full) --- 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * 38 * @(#)cd9660_vnops.c 8.19 (Berkeley) 5/27/95 |
39 * $Id: cd9660_vnops.c,v 1.45 1997/10/16 20:32:21 phk Exp $ |
40 */ 41 42#include <sys/param.h> 43#include <sys/systm.h> 44#include <sys/namei.h> 45#include <sys/kernel.h> 46#include <sys/stat.h> 47#include <sys/sysctl.h> --- 16 unchanged lines hidden (view full) --- 64static int cd9660_read __P((struct vop_read_args *)); 65struct isoreaddir; 66static int iso_uiodir __P((struct isoreaddir *idp, struct dirent *dp, 67 off_t off)); 68static int iso_shipdir __P((struct isoreaddir *idp)); 69static int cd9660_readdir __P((struct vop_readdir_args *)); 70static int cd9660_readlink __P((struct vop_readlink_args *ap)); 71static int cd9660_abortop __P((struct vop_abortop_args *)); |
72static int cd9660_strategy __P((struct vop_strategy_args *)); 73static int cd9660_print __P((struct vop_print_args *)); |
74 75/* 76 * Setattr call. Only allowed for block and character special devices. 77 */ 78int 79cd9660_setattr(ap) 80 struct vop_setattr_args /* { 81 struct vnodeop_desc *a_desc; --- 628 unchanged lines hidden (view full) --- 710 } */ *ap; 711{ 712 if ((ap->a_cnp->cn_flags & (HASBUF | SAVESTART)) == HASBUF) 713 zfree(namei_zone, ap->a_cnp->cn_pnbuf); 714 return (0); 715} 716 717/* |
718 * Calculate the logical to physical mapping if not done already, 719 * then call the device strategy routine. 720 */ 721static int 722cd9660_strategy(ap) 723 struct vop_strategy_args /* { 724 struct buf *a_bp; 725 } */ *ap; --- 37 unchanged lines hidden (view full) --- 763 } */ *ap; 764{ 765 766 printf("tag VT_ISOFS, isofs vnode\n"); 767 return (0); 768} 769 770/* |
771 * Return POSIX pathconf information applicable to cd9660 filesystems. 772 */ 773int 774cd9660_pathconf(ap) 775 struct vop_pathconf_args /* { 776 struct vnode *a_vp; 777 int a_name; 778 register_t *a_retval; --- 35 unchanged lines hidden (view full) --- 814struct vnodeopv_entry_desc cd9660_vnodeop_entries[] = { 815 { &vop_default_desc, (vop_t *) vn_default_error }, 816 { &vop_abortop_desc, (vop_t *) cd9660_abortop }, 817 { &vop_access_desc, (vop_t *) cd9660_access }, 818 { &vop_bmap_desc, (vop_t *) cd9660_bmap }, 819 { &vop_cachedlookup_desc, (vop_t *) cd9660_lookup }, 820 { &vop_getattr_desc, (vop_t *) cd9660_getattr }, 821 { &vop_inactive_desc, (vop_t *) cd9660_inactive }, |
822 { &vop_islocked_desc, (vop_t *) vop_stdislocked }, 823 { &vop_lock_desc, (vop_t *) vop_stdlock }, |
824 { &vop_lookup_desc, (vop_t *) vfs_cache_lookup }, 825 { &vop_pathconf_desc, (vop_t *) cd9660_pathconf }, 826 { &vop_print_desc, (vop_t *) cd9660_print }, 827 { &vop_read_desc, (vop_t *) cd9660_read }, 828 { &vop_readdir_desc, (vop_t *) cd9660_readdir }, 829 { &vop_readlink_desc, (vop_t *) cd9660_readlink }, 830 { &vop_reclaim_desc, (vop_t *) cd9660_reclaim }, 831 { &vop_setattr_desc, (vop_t *) cd9660_setattr }, 832 { &vop_strategy_desc, (vop_t *) cd9660_strategy }, |
833 { &vop_unlock_desc, (vop_t *) vop_stdunlock }, |
834 { NULL, NULL } 835}; 836static struct vnodeopv_desc cd9660_vnodeop_opv_desc = 837 { &cd9660_vnodeop_p, cd9660_vnodeop_entries }; 838VNODEOP_SET(cd9660_vnodeop_opv_desc); 839 840/* 841 * Special device vnode ops 842 */ 843vop_t **cd9660_specop_p; 844struct vnodeopv_entry_desc cd9660_specop_entries[] = { 845 { &vop_default_desc, (vop_t *) spec_vnoperate }, 846 { &vop_access_desc, (vop_t *) cd9660_access }, 847 { &vop_getattr_desc, (vop_t *) cd9660_getattr }, 848 { &vop_inactive_desc, (vop_t *) cd9660_inactive }, |
849 { &vop_islocked_desc, (vop_t *) vop_stdislocked }, 850 { &vop_lock_desc, (vop_t *) vop_stdlock }, |
851 { &vop_print_desc, (vop_t *) cd9660_print }, 852 { &vop_reclaim_desc, (vop_t *) cd9660_reclaim }, 853 { &vop_setattr_desc, (vop_t *) cd9660_setattr }, |
854 { &vop_unlock_desc, (vop_t *) vop_stdunlock }, |
855 { NULL, NULL } 856}; 857static struct vnodeopv_desc cd9660_specop_opv_desc = 858 { &cd9660_specop_p, cd9660_specop_entries }; 859VNODEOP_SET(cd9660_specop_opv_desc); 860 861vop_t **cd9660_fifoop_p; 862struct vnodeopv_entry_desc cd9660_fifoop_entries[] = { 863 { &vop_default_desc, (vop_t *) fifo_vnoperate }, 864 { &vop_access_desc, (vop_t *) cd9660_access }, 865 { &vop_getattr_desc, (vop_t *) cd9660_getattr }, 866 { &vop_inactive_desc, (vop_t *) cd9660_inactive }, |
867 { &vop_islocked_desc, (vop_t *) vop_stdislocked }, 868 { &vop_lock_desc, (vop_t *) vop_stdlock }, |
869 { &vop_print_desc, (vop_t *) cd9660_print }, 870 { &vop_reclaim_desc, (vop_t *) cd9660_reclaim }, 871 { &vop_setattr_desc, (vop_t *) cd9660_setattr }, |
872 { &vop_unlock_desc, (vop_t *) vop_stdunlock }, |
873 { NULL, NULL } 874}; 875static struct vnodeopv_desc cd9660_fifoop_opv_desc = 876 { &cd9660_fifoop_p, cd9660_fifoop_entries }; 877 878VNODEOP_SET(cd9660_fifoop_opv_desc); |