64
65 #ifdef DEBUG
66 int sdev_debug = 0x00000001;
67 int sdev_debug_cache_flags = 0;
68 #endif
69
70 /*
71 * globals
72 */
73 /* prototype memory vattrs */
74 vattr_t sdev_vattr_dir = {
75 AT_TYPE|AT_MODE|AT_UID|AT_GID, /* va_mask */
76 VDIR, /* va_type */
77 SDEV_DIRMODE_DEFAULT, /* va_mode */
78 SDEV_UID_DEFAULT, /* va_uid */
79 SDEV_GID_DEFAULT, /* va_gid */
80 0, /* va_fsid */
81 0, /* va_nodeid */
82 0, /* va_nlink */
83 0, /* va_size */
84 0, /* va_atime */
85 0, /* va_mtime */
86 0, /* va_ctime */
87 0, /* va_rdev */
88 0, /* va_blksize */
89 0, /* va_nblocks */
90 0 /* va_vcode */
91 };
92
93 vattr_t sdev_vattr_lnk = {
94 AT_TYPE|AT_MODE, /* va_mask */
95 VLNK, /* va_type */
96 SDEV_LNKMODE_DEFAULT, /* va_mode */
97 SDEV_UID_DEFAULT, /* va_uid */
98 SDEV_GID_DEFAULT, /* va_gid */
99 0, /* va_fsid */
100 0, /* va_nodeid */
101 0, /* va_nlink */
102 0, /* va_size */
103 0, /* va_atime */
104 0, /* va_mtime */
105 0, /* va_ctime */
106 0, /* va_rdev */
107 0, /* va_blksize */
108 0, /* va_nblocks */
109 0 /* va_vcode */
110 };
111
112 vattr_t sdev_vattr_blk = {
113 AT_TYPE|AT_MODE|AT_UID|AT_GID, /* va_mask */
114 VBLK, /* va_type */
115 S_IFBLK | SDEV_DEVMODE_DEFAULT, /* va_mode */
116 SDEV_UID_DEFAULT, /* va_uid */
117 SDEV_GID_DEFAULT, /* va_gid */
118 0, /* va_fsid */
119 0, /* va_nodeid */
120 0, /* va_nlink */
121 0, /* va_size */
122 0, /* va_atime */
123 0, /* va_mtime */
124 0, /* va_ctime */
125 0, /* va_rdev */
126 0, /* va_blksize */
127 0, /* va_nblocks */
128 0 /* va_vcode */
129 };
130
131 vattr_t sdev_vattr_chr = {
132 AT_TYPE|AT_MODE|AT_UID|AT_GID, /* va_mask */
133 VCHR, /* va_type */
134 S_IFCHR | SDEV_DEVMODE_DEFAULT, /* va_mode */
135 SDEV_UID_DEFAULT, /* va_uid */
136 SDEV_GID_DEFAULT, /* va_gid */
137 0, /* va_fsid */
138 0, /* va_nodeid */
139 0, /* va_nlink */
140 0, /* va_size */
141 0, /* va_atime */
142 0, /* va_mtime */
143 0, /* va_ctime */
144 0, /* va_rdev */
145 0, /* va_blksize */
146 0, /* va_nblocks */
147 0 /* va_vcode */
148 };
149
150 kmem_cache_t *sdev_node_cache; /* sdev_node cache */
151 int devtype; /* fstype */
152
153 /* static */
154 static struct vnodeops *sdev_get_vop(struct sdev_node *);
155 static void sdev_set_no_negcache(struct sdev_node *);
156 static fs_operation_def_t *sdev_merge_vtab(const fs_operation_def_t []);
157 static void sdev_free_vtab(fs_operation_def_t *);
158
159 static void
160 sdev_prof_free(struct sdev_node *dv)
161 {
162 ASSERT(!SDEV_IS_GLOBAL(dv));
163 nvlist_free(dv->sdev_prof.dev_name);
|
64
65 #ifdef DEBUG
66 int sdev_debug = 0x00000001;
67 int sdev_debug_cache_flags = 0;
68 #endif
69
70 /*
71 * globals
72 */
73 /* prototype memory vattrs */
74 vattr_t sdev_vattr_dir = {
75 AT_TYPE|AT_MODE|AT_UID|AT_GID, /* va_mask */
76 VDIR, /* va_type */
77 SDEV_DIRMODE_DEFAULT, /* va_mode */
78 SDEV_UID_DEFAULT, /* va_uid */
79 SDEV_GID_DEFAULT, /* va_gid */
80 0, /* va_fsid */
81 0, /* va_nodeid */
82 0, /* va_nlink */
83 0, /* va_size */
84 {0}, /* va_atime */
85 {0}, /* va_mtime */
86 {0}, /* va_ctime */
87 0, /* va_rdev */
88 0, /* va_blksize */
89 0, /* va_nblocks */
90 0 /* va_vcode */
91 };
92
93 vattr_t sdev_vattr_lnk = {
94 AT_TYPE|AT_MODE, /* va_mask */
95 VLNK, /* va_type */
96 SDEV_LNKMODE_DEFAULT, /* va_mode */
97 SDEV_UID_DEFAULT, /* va_uid */
98 SDEV_GID_DEFAULT, /* va_gid */
99 0, /* va_fsid */
100 0, /* va_nodeid */
101 0, /* va_nlink */
102 0, /* va_size */
103 {0}, /* va_atime */
104 {0}, /* va_mtime */
105 {0}, /* va_ctime */
106 0, /* va_rdev */
107 0, /* va_blksize */
108 0, /* va_nblocks */
109 0 /* va_vcode */
110 };
111
112 vattr_t sdev_vattr_blk = {
113 AT_TYPE|AT_MODE|AT_UID|AT_GID, /* va_mask */
114 VBLK, /* va_type */
115 S_IFBLK | SDEV_DEVMODE_DEFAULT, /* va_mode */
116 SDEV_UID_DEFAULT, /* va_uid */
117 SDEV_GID_DEFAULT, /* va_gid */
118 0, /* va_fsid */
119 0, /* va_nodeid */
120 0, /* va_nlink */
121 0, /* va_size */
122 {0}, /* va_atime */
123 {0}, /* va_mtime */
124 {0}, /* va_ctime */
125 0, /* va_rdev */
126 0, /* va_blksize */
127 0, /* va_nblocks */
128 0 /* va_vcode */
129 };
130
131 vattr_t sdev_vattr_chr = {
132 AT_TYPE|AT_MODE|AT_UID|AT_GID, /* va_mask */
133 VCHR, /* va_type */
134 S_IFCHR | SDEV_DEVMODE_DEFAULT, /* va_mode */
135 SDEV_UID_DEFAULT, /* va_uid */
136 SDEV_GID_DEFAULT, /* va_gid */
137 0, /* va_fsid */
138 0, /* va_nodeid */
139 0, /* va_nlink */
140 0, /* va_size */
141 {0}, /* va_atime */
142 {0}, /* va_mtime */
143 {0}, /* va_ctime */
144 0, /* va_rdev */
145 0, /* va_blksize */
146 0, /* va_nblocks */
147 0 /* va_vcode */
148 };
149
150 kmem_cache_t *sdev_node_cache; /* sdev_node cache */
151 int devtype; /* fstype */
152
153 /* static */
154 static struct vnodeops *sdev_get_vop(struct sdev_node *);
155 static void sdev_set_no_negcache(struct sdev_node *);
156 static fs_operation_def_t *sdev_merge_vtab(const fs_operation_def_t []);
157 static void sdev_free_vtab(fs_operation_def_t *);
158
159 static void
160 sdev_prof_free(struct sdev_node *dv)
161 {
162 ASSERT(!SDEV_IS_GLOBAL(dv));
163 nvlist_free(dv->sdev_prof.dev_name);
|