Deleted Added
sdiff udiff text old ( 29888 ) new ( 30431 )
full compact
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.39 1997/09/21 04:22:40 dyson 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>

--- 942 unchanged lines hidden (view full) ---

990#define cd9660_bwrite \
991 ((int (*) __P((struct vop_bwrite_args *)))eopnotsupp)
992
993/*
994 * Global vfs data structures for cd9660
995 */
996vop_t **cd9660_vnodeop_p;
997struct vnodeopv_entry_desc cd9660_vnodeop_entries[] = {
998
999 { &vop_default_desc, (vop_t *)vn_default_error },
1000 { &vop_lookup_desc, (vop_t *)vfs_cache_lookup }, /* lookup */
1001 { &vop_cachedlookup_desc, (vop_t *)cd9660_lookup }, /* lookup */
1002 { &vop_create_desc, (vop_t *)cd9660_create }, /* create */
1003/* XXX: vop_whiteout */
1004 { &vop_mknod_desc, (vop_t *)cd9660_mknod }, /* mknod */
1005 { &vop_open_desc, (vop_t *)cd9660_open }, /* open */
1006 { &vop_close_desc, (vop_t *)cd9660_close }, /* close */
1007 { &vop_access_desc, (vop_t *)cd9660_access }, /* access */
1008 { &vop_getattr_desc, (vop_t *)cd9660_getattr }, /* getattr */
1009 { &vop_setattr_desc, (vop_t *)cd9660_setattr }, /* setattr */
1010 { &vop_read_desc, (vop_t *)cd9660_read }, /* read */
1011 { &vop_write_desc, (vop_t *)cd9660_write }, /* write */
1012 { &vop_lease_desc, (vop_t *)cd9660_lease_check },/* lease */
1013 { &vop_ioctl_desc, (vop_t *)cd9660_ioctl }, /* ioctl */
1014 { &vop_poll_desc, (vop_t *)cd9660_poll }, /* poll */
1015 { &vop_revoke_desc, (vop_t *)cd9660_revoke }, /* revoke */
1016 { &vop_mmap_desc, (vop_t *)cd9660_mmap }, /* mmap */
1017 { &vop_fsync_desc, (vop_t *)cd9660_fsync }, /* fsync */
1018 { &vop_seek_desc, (vop_t *)cd9660_seek }, /* seek */
1019 { &vop_remove_desc, (vop_t *)cd9660_remove }, /* remove */
1020 { &vop_link_desc, (vop_t *)cd9660_link }, /* link */
1021 { &vop_rename_desc, (vop_t *)cd9660_rename }, /* rename */
1022 { &vop_mkdir_desc, (vop_t *)cd9660_mkdir }, /* mkdir */
1023 { &vop_rmdir_desc, (vop_t *)cd9660_rmdir }, /* rmdir */
1024 { &vop_symlink_desc, (vop_t *)cd9660_symlink }, /* symlink */
1025 { &vop_readdir_desc, (vop_t *)cd9660_readdir }, /* readdir */
1026 { &vop_readlink_desc, (vop_t *)cd9660_readlink },/* readlink */
1027 { &vop_abortop_desc, (vop_t *)cd9660_abortop }, /* abortop */
1028 { &vop_inactive_desc, (vop_t *)cd9660_inactive },/* inactive */
1029 { &vop_reclaim_desc, (vop_t *)cd9660_reclaim }, /* reclaim */
1030 { &vop_lock_desc, (vop_t *)cd9660_lock }, /* lock */
1031 { &vop_unlock_desc, (vop_t *)cd9660_unlock }, /* unlock */
1032 { &vop_bmap_desc, (vop_t *)cd9660_bmap }, /* bmap */
1033 { &vop_strategy_desc, (vop_t *)cd9660_strategy },/* strategy */
1034 { &vop_print_desc, (vop_t *)cd9660_print }, /* print */
1035 { &vop_islocked_desc, (vop_t *)cd9660_islocked },/* islocked */
1036 { &vop_pathconf_desc, (vop_t *)cd9660_pathconf },/* pathconf */
1037 { &vop_advlock_desc, (vop_t *)cd9660_advlock }, /* advlock */
1038 { &vop_blkatoff_desc, (vop_t *)cd9660_blkatoff },/* blkatoff */
1039 { &vop_valloc_desc, (vop_t *)cd9660_valloc }, /* valloc */
1040/* XXX: vop_reallocblks */
1041 { &vop_vfree_desc, (vop_t *)cd9660_vfree }, /* vfree */
1042 { &vop_truncate_desc, (vop_t *)cd9660_truncate },/* truncate */
1043 { &vop_update_desc, (vop_t *)cd9660_update }, /* update */
1044/* XXX: vop_getpages */
1045/* XXX: vop_putpages */
1046 { &vop_bwrite_desc, (vop_t *)vn_bwrite },
1047 { NULL, NULL }
1048};
1049static struct vnodeopv_desc cd9660_vnodeop_opv_desc =
1050 { &cd9660_vnodeop_p, cd9660_vnodeop_entries };
1051VNODEOP_SET(cd9660_vnodeop_opv_desc);
1052
1053/*
1054 * Special device vnode ops
1055 */
1056vop_t **cd9660_specop_p;
1057struct vnodeopv_entry_desc cd9660_specop_entries[] = {
1058 { &vop_default_desc, (vop_t *)vn_default_error },
1059 { &vop_lookup_desc, (vop_t *)spec_lookup }, /* lookup */
1060/* XXX: vop_cachedlookup */
1061 { &vop_create_desc, (vop_t *)spec_create }, /* create */
1062/* XXX: vop_whiteout */
1063 { &vop_mknod_desc, (vop_t *)spec_mknod }, /* mknod */
1064 { &vop_open_desc, (vop_t *)spec_open }, /* open */
1065 { &vop_close_desc, (vop_t *)spec_close }, /* close */
1066 { &vop_access_desc, (vop_t *)cd9660_access }, /* access */
1067 { &vop_getattr_desc, (vop_t *)cd9660_getattr }, /* getattr */
1068 { &vop_setattr_desc, (vop_t *)cd9660_setattr }, /* setattr */
1069 { &vop_read_desc, (vop_t *)spec_read }, /* read */
1070 { &vop_write_desc, (vop_t *)spec_write }, /* write */
1071 { &vop_lease_desc, (vop_t *)spec_lease_check }, /* lease */
1072 { &vop_ioctl_desc, (vop_t *)spec_ioctl }, /* ioctl */
1073 { &vop_poll_desc, (vop_t *)spec_poll }, /* poll */
1074 { &vop_revoke_desc, (vop_t *)spec_revoke }, /* revoke */
1075 { &vop_mmap_desc, (vop_t *)spec_mmap }, /* mmap */
1076 { &vop_fsync_desc, (vop_t *)spec_fsync }, /* fsync */
1077 { &vop_seek_desc, (vop_t *)spec_seek }, /* seek */
1078 { &vop_remove_desc, (vop_t *)spec_remove }, /* remove */
1079 { &vop_link_desc, (vop_t *)spec_link }, /* link */
1080 { &vop_rename_desc, (vop_t *)spec_rename }, /* rename */
1081 { &vop_mkdir_desc, (vop_t *)spec_mkdir }, /* mkdir */
1082 { &vop_rmdir_desc, (vop_t *)spec_rmdir }, /* rmdir */
1083 { &vop_symlink_desc, (vop_t *)spec_symlink }, /* symlink */
1084 { &vop_readdir_desc, (vop_t *)spec_readdir }, /* readdir */
1085 { &vop_readlink_desc, (vop_t *)spec_readlink }, /* readlink */
1086 { &vop_abortop_desc, (vop_t *)spec_abortop }, /* abortop */
1087 { &vop_inactive_desc, (vop_t *)cd9660_inactive },/* inactive */
1088 { &vop_reclaim_desc, (vop_t *)cd9660_reclaim }, /* reclaim */
1089 { &vop_lock_desc, (vop_t *)cd9660_lock }, /* lock */
1090 { &vop_unlock_desc, (vop_t *)cd9660_unlock }, /* unlock */
1091 { &vop_bmap_desc, (vop_t *)spec_bmap }, /* bmap */
1092 { &vop_strategy_desc, (vop_t *)spec_strategy }, /* strategy */
1093 { &vop_print_desc, (vop_t *)cd9660_print }, /* print */
1094 { &vop_islocked_desc, (vop_t *)cd9660_islocked },/* islocked */
1095 { &vop_pathconf_desc, (vop_t *)spec_pathconf }, /* pathconf */
1096 { &vop_advlock_desc, (vop_t *)spec_advlock }, /* advlock */
1097 { &vop_blkatoff_desc, (vop_t *)spec_blkatoff }, /* blkatoff */
1098 { &vop_valloc_desc, (vop_t *)spec_valloc }, /* valloc */
1099/* XXX: vop_reallocblks */
1100 { &vop_vfree_desc, (vop_t *)spec_vfree }, /* vfree */
1101 { &vop_truncate_desc, (vop_t *)spec_truncate }, /* truncate */
1102 { &vop_update_desc, (vop_t *)cd9660_update }, /* update */
1103/* XXX: vop_getpages */
1104/* XXX: vop_putpages */
1105 { &vop_bwrite_desc, (vop_t *)vn_bwrite },
1106 { NULL, NULL }
1107};
1108static struct vnodeopv_desc cd9660_specop_opv_desc =
1109 { &cd9660_specop_p, cd9660_specop_entries };
1110VNODEOP_SET(cd9660_specop_opv_desc);
1111
1112vop_t **cd9660_fifoop_p;
1113struct vnodeopv_entry_desc cd9660_fifoop_entries[] = {
1114 { &vop_default_desc, (vop_t *)vn_default_error },
1115 { &vop_lookup_desc, (vop_t *)fifo_lookup }, /* lookup */
1116/* XXX: vop_cachedlookup */
1117 { &vop_create_desc, (vop_t *)fifo_create }, /* create */
1118/* XXX: vop_whiteout */
1119 { &vop_mknod_desc, (vop_t *)fifo_mknod }, /* mknod */
1120 { &vop_open_desc, (vop_t *)fifo_open }, /* open */
1121 { &vop_close_desc, (vop_t *)fifo_close }, /* close */
1122 { &vop_access_desc, (vop_t *)cd9660_access }, /* access */
1123 { &vop_getattr_desc, (vop_t *)cd9660_getattr }, /* getattr */
1124 { &vop_setattr_desc, (vop_t *)cd9660_setattr }, /* setattr */
1125 { &vop_read_desc, (vop_t *)fifo_read }, /* read */
1126 { &vop_write_desc, (vop_t *)fifo_write }, /* write */
1127 { &vop_lease_desc, (vop_t *)fifo_lease_check }, /* lease */
1128 { &vop_ioctl_desc, (vop_t *)fifo_ioctl }, /* ioctl */
1129 { &vop_poll_desc, (vop_t *)fifo_poll }, /* poll */
1130 { &vop_revoke_desc, (vop_t *)fifo_revoke }, /* revoke */
1131 { &vop_mmap_desc, (vop_t *)fifo_mmap }, /* mmap */
1132 { &vop_fsync_desc, (vop_t *)fifo_fsync }, /* fsync */
1133 { &vop_seek_desc, (vop_t *)fifo_seek }, /* seek */
1134 { &vop_remove_desc, (vop_t *)fifo_remove }, /* remove */
1135 { &vop_link_desc, (vop_t *)fifo_link } , /* link */
1136 { &vop_rename_desc, (vop_t *)fifo_rename }, /* rename */
1137 { &vop_mkdir_desc, (vop_t *)fifo_mkdir }, /* mkdir */
1138 { &vop_rmdir_desc, (vop_t *)fifo_rmdir }, /* rmdir */
1139 { &vop_symlink_desc, (vop_t *)fifo_symlink }, /* symlink */
1140 { &vop_readdir_desc, (vop_t *)fifo_readdir }, /* readdir */
1141 { &vop_readlink_desc, (vop_t *)fifo_readlink }, /* readlink */
1142 { &vop_abortop_desc, (vop_t *)fifo_abortop }, /* abortop */
1143 { &vop_inactive_desc, (vop_t *)cd9660_inactive },/* inactive */
1144 { &vop_reclaim_desc, (vop_t *)cd9660_reclaim }, /* reclaim */
1145 { &vop_lock_desc, (vop_t *)cd9660_lock }, /* lock */
1146 { &vop_unlock_desc, (vop_t *)cd9660_unlock }, /* unlock */
1147 { &vop_bmap_desc, (vop_t *)fifo_bmap }, /* bmap */
1148 { &vop_strategy_desc, (vop_t *)fifo_strategy }, /* strategy */
1149 { &vop_print_desc, (vop_t *)cd9660_print }, /* print */
1150 { &vop_islocked_desc, (vop_t *)cd9660_islocked },/* islocked */
1151 { &vop_pathconf_desc, (vop_t *)fifo_pathconf }, /* pathconf */
1152 { &vop_advlock_desc, (vop_t *)fifo_advlock }, /* advlock */
1153 { &vop_blkatoff_desc, (vop_t *)fifo_blkatoff }, /* blkatoff */
1154 { &vop_valloc_desc, (vop_t *)fifo_valloc }, /* valloc */
1155/* XXX: vop_reallocpages */
1156 { &vop_vfree_desc, (vop_t *)fifo_vfree }, /* vfree */
1157 { &vop_truncate_desc, (vop_t *)fifo_truncate }, /* truncate */
1158 { &vop_update_desc, (vop_t *)cd9660_update }, /* update */
1159/* XXX: vop_getpages */
1160/* XXX: vop_putpages */
1161 { &vop_bwrite_desc, (vop_t *)vn_bwrite },
1162 { NULL, NULL }
1163};
1164static struct vnodeopv_desc cd9660_fifoop_opv_desc =
1165 { &cd9660_fifoop_p, cd9660_fifoop_entries };
1166
1167VNODEOP_SET(cd9660_fifoop_opv_desc);