Exemple #1
0
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
}
Exemple #2
0
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));
}
Exemple #3
0
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));
}
Exemple #4
0
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),