178 static void
179 ctfs_tmpl_inactive(vnode_t *vp, cred_t *cr, caller_context_t *ct)
180 {
181 ctfs_tmplnode_t *tmplnode;
182
183 if ((tmplnode = gfs_file_inactive(vp)) != NULL) {
184 ctmpl_free(tmplnode->ctfs_tmn_tmpl);
185 kmem_free(tmplnode, sizeof (ctfs_tmplnode_t));
186 }
187 }
188
189 const fs_operation_def_t ctfs_tops_tmpl[] = {
190 { VOPNAME_OPEN, { .vop_open = ctfs_tmpl_open } },
191 { VOPNAME_CLOSE, { .vop_close = ctfs_close } },
192 { VOPNAME_IOCTL, { .vop_ioctl = ctfs_tmpl_ioctl } },
193 { VOPNAME_GETATTR, { .vop_getattr = ctfs_tmpl_getattr } },
194 { VOPNAME_ACCESS, { .vop_access = ctfs_access_readwrite } },
195 { VOPNAME_READDIR, { .error = fs_notdir } },
196 { VOPNAME_LOOKUP, { .error = fs_notdir } },
197 { VOPNAME_INACTIVE, { .vop_inactive = ctfs_tmpl_inactive } },
198 { NULL, NULL }
199 };
|
178 static void
179 ctfs_tmpl_inactive(vnode_t *vp, cred_t *cr, caller_context_t *ct)
180 {
181 ctfs_tmplnode_t *tmplnode;
182
183 if ((tmplnode = gfs_file_inactive(vp)) != NULL) {
184 ctmpl_free(tmplnode->ctfs_tmn_tmpl);
185 kmem_free(tmplnode, sizeof (ctfs_tmplnode_t));
186 }
187 }
188
189 const fs_operation_def_t ctfs_tops_tmpl[] = {
190 { VOPNAME_OPEN, { .vop_open = ctfs_tmpl_open } },
191 { VOPNAME_CLOSE, { .vop_close = ctfs_close } },
192 { VOPNAME_IOCTL, { .vop_ioctl = ctfs_tmpl_ioctl } },
193 { VOPNAME_GETATTR, { .vop_getattr = ctfs_tmpl_getattr } },
194 { VOPNAME_ACCESS, { .vop_access = ctfs_access_readwrite } },
195 { VOPNAME_READDIR, { .error = fs_notdir } },
196 { VOPNAME_LOOKUP, { .error = fs_notdir } },
197 { VOPNAME_INACTIVE, { .vop_inactive = ctfs_tmpl_inactive } },
198 { NULL, { NULL } }
199 };
|