*/
void mempool_destroy(mempool_t *pool)
{
- /* Check for outstanding elements */
- BUG_ON(pool->curr_nr != pool->min_nr);
+ if (pool->curr_nr != pool->min_nr)
+ BUG(); /* There were outstanding elements */
free_pool(pool);
}
EXPORT_SYMBOL(mempool_destroy);
init_wait(&wait);
prepare_to_wait(&pool->wait, &wait, TASK_UNINTERRUPTIBLE);
smp_mb();
- if (!pool->curr_nr) {
- /*
- * FIXME: this should be io_schedule(). The timeout is there
- * as a workaround for some DM problems in 2.6.18.
- */
- io_schedule_timeout(5*HZ);
- }
+ if (!pool->curr_nr)
+ io_schedule();
finish_wait(&pool->wait, &wait);
goto repeat_alloc;
*/
void *mempool_alloc_slab(gfp_t gfp_mask, void *pool_data)
{
- struct kmem_cache *mem = pool_data;
+ kmem_cache_t *mem = (kmem_cache_t *) pool_data;
return kmem_cache_alloc(mem, gfp_mask);
}
EXPORT_SYMBOL(mempool_alloc_slab);
void mempool_free_slab(void *element, void *pool_data)
{
- struct kmem_cache *mem = pool_data;
+ kmem_cache_t *mem = (kmem_cache_t *) pool_data;
kmem_cache_free(mem, element);
}
EXPORT_SYMBOL(mempool_free_slab);
-
-/*
- * A commonly used alloc and free fn that kmalloc/kfrees the amount of memory
- * specfied by pool_data
- */
-void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
-{
- size_t size = (size_t)(long)pool_data;
- return kmalloc(size, gfp_mask);
-}
-EXPORT_SYMBOL(mempool_kmalloc);
-
-void *mempool_kzalloc(gfp_t gfp_mask, void *pool_data)
-{
- size_t size = (size_t) pool_data;
- return kzalloc(size, gfp_mask);
-}
-EXPORT_SYMBOL(mempool_kzalloc);
-
-void mempool_kfree(void *element, void *pool_data)
-{
- kfree(element);
-}
-EXPORT_SYMBOL(mempool_kfree);
-
-/*
- * A simple mempool-backed page allocator that allocates pages
- * of the order specified by pool_data.
- */
-void *mempool_alloc_pages(gfp_t gfp_mask, void *pool_data)
-{
- int order = (int)(long)pool_data;
- return alloc_pages(gfp_mask, order);
-}
-EXPORT_SYMBOL(mempool_alloc_pages);
-
-void mempool_free_pages(void *element, void *pool_data)
-{
- int order = (int)(long)pool_data;
- __free_pages(element, order);
-}
-EXPORT_SYMBOL(mempool_free_pages);