Lines Matching refs:io_pool

24 	struct efct_io_pool *io_pool;  in efct_io_pool_create()  local
28 io_pool = kzalloc(sizeof(*io_pool), GFP_KERNEL); in efct_io_pool_create()
29 if (!io_pool) in efct_io_pool_create()
32 io_pool->efct = efct; in efct_io_pool_create()
33 INIT_LIST_HEAD(&io_pool->freelist); in efct_io_pool_create()
35 spin_lock_init(&io_pool->lock); in efct_io_pool_create()
42 io_pool->io_num_ios++; in efct_io_pool_create()
43 io_pool->ios[i] = io; in efct_io_pool_create()
54 efct_io_pool_free(io_pool); in efct_io_pool_create()
61 efct_io_pool_free(io_pool); in efct_io_pool_create()
69 list_add_tail(&io->list_entry, &io_pool->freelist); in efct_io_pool_create()
72 return io_pool; in efct_io_pool_create()
76 efct_io_pool_free(struct efct_io_pool *io_pool) in efct_io_pool_free() argument
82 if (io_pool) { in efct_io_pool_free()
83 efct = io_pool->efct; in efct_io_pool_free()
85 for (i = 0; i < io_pool->io_num_ios; i++) { in efct_io_pool_free()
86 io = io_pool->ios[i]; in efct_io_pool_free()
97 kfree(io_pool); in efct_io_pool_free()
98 efct->xport->io_pool = NULL; in efct_io_pool_free()
105 efct_io_pool_io_alloc(struct efct_io_pool *io_pool) in efct_io_pool_io_alloc() argument
111 efct = io_pool->efct; in efct_io_pool_io_alloc()
113 spin_lock_irqsave(&io_pool->lock, flags); in efct_io_pool_io_alloc()
115 if (!list_empty(&io_pool->freelist)) { in efct_io_pool_io_alloc()
116 io = list_first_entry(&io_pool->freelist, struct efct_io, in efct_io_pool_io_alloc()
121 spin_unlock_irqrestore(&io_pool->lock, flags); in efct_io_pool_io_alloc()
147 efct_io_pool_io_free(struct efct_io_pool *io_pool, struct efct_io *io) in efct_io_pool_io_free() argument
153 efct = io_pool->efct; in efct_io_pool_io_free()
155 spin_lock_irqsave(&io_pool->lock, flags); in efct_io_pool_io_free()
160 list_add(&io->list_entry, &io_pool->freelist); in efct_io_pool_io_free()
161 spin_unlock_irqrestore(&io_pool->lock, flags); in efct_io_pool_io_free()