Lines Matching refs:pool

335 static void srp_destroy_fr_pool(struct srp_fr_pool *pool)  in srp_destroy_fr_pool()  argument
340 if (!pool) in srp_destroy_fr_pool()
343 for (i = 0, d = &pool->desc[0]; i < pool->size; i++, d++) { in srp_destroy_fr_pool()
349 kfree(pool); in srp_destroy_fr_pool()
363 struct srp_fr_pool *pool; in srp_create_fr_pool() local
372 pool = kzalloc(sizeof(struct srp_fr_pool) + in srp_create_fr_pool()
374 if (!pool) in srp_create_fr_pool()
376 pool->size = pool_size; in srp_create_fr_pool()
377 pool->max_page_list_len = max_page_list_len; in srp_create_fr_pool()
378 spin_lock_init(&pool->lock); in srp_create_fr_pool()
379 INIT_LIST_HEAD(&pool->free_list); in srp_create_fr_pool()
381 for (i = 0, d = &pool->desc[0]; i < pool->size; i++, d++) { in srp_create_fr_pool()
394 list_add_tail(&d->entry, &pool->free_list); in srp_create_fr_pool()
398 return pool; in srp_create_fr_pool()
401 srp_destroy_fr_pool(pool); in srp_create_fr_pool()
404 pool = ERR_PTR(ret); in srp_create_fr_pool()
412 static struct srp_fr_desc *srp_fr_pool_get(struct srp_fr_pool *pool) in srp_fr_pool_get() argument
417 spin_lock_irqsave(&pool->lock, flags); in srp_fr_pool_get()
418 if (!list_empty(&pool->free_list)) { in srp_fr_pool_get()
419 d = list_first_entry(&pool->free_list, typeof(*d), entry); in srp_fr_pool_get()
422 spin_unlock_irqrestore(&pool->lock, flags); in srp_fr_pool_get()
436 static void srp_fr_pool_put(struct srp_fr_pool *pool, struct srp_fr_desc **desc, in srp_fr_pool_put() argument
442 spin_lock_irqsave(&pool->lock, flags); in srp_fr_pool_put()
444 list_add(&desc[i]->entry, &pool->free_list); in srp_fr_pool_put()
445 spin_unlock_irqrestore(&pool->lock, flags); in srp_fr_pool_put()