/* ARGSUSED */ static void ctfs_sym_inactive(vnode_t *vp, cred_t *cr) { ctfs_symnode_t *symnode; if ((symnode = gfs_file_inactive(vp)) != NULL) { contract_rele(symnode->ctfs_sn_contract); kmem_free(symnode->ctfs_sn_string, symnode->ctfs_sn_size); kmem_free(symnode, sizeof (ctfs_symnode_t)); } }
/* ARGSUSED */ void gfs_vop_inactive(vnode_t *vp, cred_t *cr, caller_context_t *ct) { gfs_file_t *fp = vp->v_data; void *data; if (fp->gfs_type == GFS_DIR) data = gfs_dir_inactive(vp); else data = gfs_file_inactive(vp); if (data != NULL) kmem_free(data, fp->gfs_size); }
/* * gfs_dir_inactive() * * Same as above, but for directories. */ void * gfs_dir_inactive(struct vnode *vp) { gfs_dir_t *dp; ASSERT(vp->v_type == VDIR); if ((dp = gfs_file_inactive(vp)) != NULL) { mutex_destroy(&dp->gfsd_lock); if (dp->gfsd_nstatic) kmem_free(dp->gfsd_static, dp->gfsd_nstatic * sizeof (gfs_dirent_t)); } return (dp); }