示例#1
0
int pvfs2_mmap_ra_cache_flush(PVFS_object_ref refn)
{
    int ret = -1;
    struct qlist_head *hash_link = NULL;
    mmap_ra_cache_elem_t *cache_elem = NULL;

    if (MMAP_RA_CACHE_INITIALIZED())
    {
        gen_mutex_lock(&s_mmap_ra_cache_mutex);
        hash_link = qhash_search_and_remove(s_key_to_data_table, &refn);
        if (hash_link)
        {
            cache_elem = qhash_entry(
                hash_link, mmap_ra_cache_elem_t, hash_link);
            assert(cache_elem);
            assert(cache_elem->data);

            gossip_debug(GOSSIP_MMAP_RCACHE_DEBUG, "Flushed mmap ra cache "
                         "element %llu, %d of size %llu\n",
                         llu(cache_elem->refn.handle),
                         cache_elem->refn.fs_id,
                         llu(cache_elem->data_sz));

            free(cache_elem->data);
            free(cache_elem);
            ret = 0;
        }
        gen_mutex_unlock(&s_mmap_ra_cache_mutex);
    }
    return ret;
}
示例#2
0
int id_gen_safe_unregister(BMI_id_gen_t new_id)
{
    int ret = -EINVAL;
    id_gen_safe_t *id_elem = NULL;
    struct qlist_head *hash_link = NULL;

    if (ID_GEN_SAFE_INITIALIZED())
    {
        gen_mutex_lock(&s_id_gen_safe_mutex);

        hash_link = qhash_search_and_remove(
            s_id_gen_safe_table, &new_id);
        if (hash_link)
        {
            id_elem = qlist_entry(hash_link, id_gen_safe_t, hash_link);
            assert(id_elem);

            id_elem->item = NULL;
            free(id_elem);
            ret = 0;
        }
        gen_mutex_unlock(&s_id_gen_safe_mutex);
    }
    return ret;
}