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()
70 list_add_tail(&io->list_entry, &io_pool->freelist); in efct_io_pool_create()
73 return io_pool; in efct_io_pool_create()
77 efct_io_pool_free(struct efct_io_pool *io_pool) in efct_io_pool_free() argument
83 if (io_pool) { in efct_io_pool_free()
84 efct = io_pool->efct; in efct_io_pool_free()
86 for (i = 0; i < io_pool->io_num_ios; i++) { in efct_io_pool_free()
87 io = io_pool->ios[i]; in efct_io_pool_free()
98 kfree(io_pool); in efct_io_pool_free()
99 efct->xport->io_pool = NULL; in efct_io_pool_free()
106 efct_io_pool_io_alloc(struct efct_io_pool *io_pool) in efct_io_pool_io_alloc() argument
112 efct = io_pool->efct; in efct_io_pool_io_alloc()
114 spin_lock_irqsave(&io_pool->lock, flags); in efct_io_pool_io_alloc()
116 if (!list_empty(&io_pool->freelist)) { in efct_io_pool_io_alloc()
117 io = list_first_entry(&io_pool->freelist, struct efct_io, in efct_io_pool_io_alloc()
122 spin_unlock_irqrestore(&io_pool->lock, flags); in efct_io_pool_io_alloc()
148 efct_io_pool_io_free(struct efct_io_pool *io_pool, struct efct_io *io) in efct_io_pool_io_free() argument
154 efct = io_pool->efct; in efct_io_pool_io_free()
156 spin_lock_irqsave(&io_pool->lock, flags); in efct_io_pool_io_free()
161 list_add(&io->list_entry, &io_pool->freelist); in efct_io_pool_io_free()
162 spin_unlock_irqrestore(&io_pool->lock, flags); in efct_io_pool_io_free()