Esempio n. 1
0
/* 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));
	}
}
Esempio n. 2
0
/* 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);
}
Esempio n. 3
0
File: gfs.c Progetto: RJVB/zfs
/*
 * 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);
}