Lines Matching refs:pool

334 static void srp_destroy_fr_pool(struct srp_fr_pool *pool)  in srp_destroy_fr_pool()  argument
339 if (!pool) in srp_destroy_fr_pool()
342 for (i = 0, d = &pool->desc[0]; i < pool->size; i++, d++) { in srp_destroy_fr_pool()
346 kfree(pool); in srp_destroy_fr_pool()
360 struct srp_fr_pool *pool; in srp_create_fr_pool() local
368 pool = kzalloc(sizeof(struct srp_fr_pool) + in srp_create_fr_pool()
370 if (!pool) in srp_create_fr_pool()
372 pool->size = pool_size; in srp_create_fr_pool()
373 pool->max_page_list_len = max_page_list_len; in srp_create_fr_pool()
374 spin_lock_init(&pool->lock); in srp_create_fr_pool()
375 INIT_LIST_HEAD(&pool->free_list); in srp_create_fr_pool()
377 for (i = 0, d = &pool->desc[0]; i < pool->size; i++, d++) { in srp_create_fr_pool()
385 list_add_tail(&d->entry, &pool->free_list); in srp_create_fr_pool()
389 return pool; in srp_create_fr_pool()
392 srp_destroy_fr_pool(pool); in srp_create_fr_pool()
395 pool = ERR_PTR(ret); in srp_create_fr_pool()
403 static struct srp_fr_desc *srp_fr_pool_get(struct srp_fr_pool *pool) in srp_fr_pool_get() argument
408 spin_lock_irqsave(&pool->lock, flags); in srp_fr_pool_get()
409 if (!list_empty(&pool->free_list)) { in srp_fr_pool_get()
410 d = list_first_entry(&pool->free_list, typeof(*d), entry); in srp_fr_pool_get()
413 spin_unlock_irqrestore(&pool->lock, flags); in srp_fr_pool_get()
427 static void srp_fr_pool_put(struct srp_fr_pool *pool, struct srp_fr_desc **desc, in srp_fr_pool_put() argument
433 spin_lock_irqsave(&pool->lock, flags); in srp_fr_pool_put()
435 list_add(&desc[i]->entry, &pool->free_list); in srp_fr_pool_put()
436 spin_unlock_irqrestore(&pool->lock, flags); in srp_fr_pool_put()