void vnlayer_destroy_inode(INODE_T *inode) { ASSERT(I_COUNT(inode) == 0); #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) kmem_cache_free(vnlayer_vnode_cache, (vnlayer_vnode_t *)ITOV(inode)); #else call_rcu(&inode->i_rcu, vnlayer_destroy_inode_callback); #endif }
static void vnlayer_destroy_inode_callback(struct rcu_head *head) { struct inode *inode_p = container_of(head, struct inode, i_rcu); INIT_LIST_HEAD(&inode_p->i_dentry); ASSERT(I_COUNT(inode_p) == 0); ASSERT(inode_p->i_state & I_FREEING); kmem_cache_free(vnlayer_vnode_cache, (vnlayer_vnode_t *) ITOV(inode_p)); }
static void vnlayer_destroy_inode_callback(struct rcu_head *head) { struct inode *inode_p = container_of(head, struct inode, i_rcu); #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0) INIT_HLIST_HEAD(&inode_p->i_dentry); #else INIT_LIST_HEAD(&inode_p->i_dentry); #endif ASSERT(I_COUNT(inode_p) == 0); ASSERT(inode_p->i_state & I_FREEING); kmem_cache_free(vnlayer_vnode_cache, (vnlayer_vnode_t *) ITOV(inode_p)); }
void mvfs_clear_inode(struct inode *inode_p) { CALL_DATA_T cd; ASSERT(MDKI_INOISOURS(inode_p)); if (MDKI_INOISMVFS(inode_p)) { /* If we're an mnode-base vnode, do all this stuff ... */ VNODE_T *vp = ITOV(inode_p); int error; ASSERT(I_COUNT(inode_p) == 0); ASSERT(inode_p->i_state & I_FREEING); mdki_linux_init_call_data(&cd); /* * Do actual deactivation of the vnode/mnode */ error = VOP_INACTIVE(vp, &cd); mdki_linux_destroy_call_data(&cd); if (error) MDKI_VFS_LOG(VFS_LOG_ERR, "mvfs_clear_inode: inactive error %d\n", error); } else if (MDKI_INOISCLRVN(inode_p)) { /* cleartext vnode */ vnlayer_linux_free_clrvnode(ITOV(inode_p)); } else { MDKI_TRACE(TRACE_INACTIVE,"no work: inode_p=%p vp=%p cnt=%d\n", inode_p, ITOV(inode_p), I_COUNT(inode_p)); } MDKI_TRACE(TRACE_INACTIVE,"inode_p=%p vp=%p cnt=%d\n", inode_p, ITOV(inode_p), I_COUNT(inode_p)); }
END_OF_PROGRAM(0), VALID_PIXEL_MODE(0), CF_INST(SQ_CF_INST_TEX), WHOLE_QUAD_MODE(0), BARRIER(1)), #if 0 /* CF INST 1 */ CF_ALU_DWORD0(ADDR( ), KCACHE_BANK0(0), KCACHE_BANK1(0), KCACHE_MODE0(SQ_CF_KCACHE_NOP)); CF_ALU_DWORD1(KCACHE_MODE1(SQ_CF_KCACHE_NOP), KCACHE_ADDR0(0), KCACHE_ADDR1(0), I_COUNT(1), USES_WATERFALL(0), CF_INST(SQ_CF_INST_ALU), WHOLE_QUAD_MODE(0), BARRIER(1)); #endif /* CF INST 1 */ CF_ALLOC_IMP_EXP_DWORD0(ARRAY_BASE(CF_PIXEL_MRT0), TYPE(SQ_EXPORT_PIXEL), RW_GPR(0), RW_REL(ABSOLUTE), INDEX_GPR(0), ELEM_SIZE(1)), CF_ALLOC_IMP_EXP_DWORD1_SWIZ(SRC_SEL_X(SQ_SEL_X), SRC_SEL_Y(SQ_SEL_Y),