Lines Matching refs:pool

453 static int initialize_event_pool(struct event_pool *pool,  in initialize_event_pool()  argument
458 pool->size = size; in initialize_event_pool()
459 pool->next = 0; in initialize_event_pool()
460 pool->events = kcalloc(pool->size, sizeof(*pool->events), GFP_KERNEL); in initialize_event_pool()
461 if (!pool->events) in initialize_event_pool()
464 pool->iu_storage = in initialize_event_pool()
466 pool->size * sizeof(*pool->iu_storage), in initialize_event_pool()
467 &pool->iu_token, 0); in initialize_event_pool()
468 if (!pool->iu_storage) { in initialize_event_pool()
469 kfree(pool->events); in initialize_event_pool()
473 for (i = 0; i < pool->size; ++i) { in initialize_event_pool()
474 struct srp_event_struct *evt = &pool->events[i]; in initialize_event_pool()
479 evt->crq.IU_data_ptr = cpu_to_be64(pool->iu_token + in initialize_event_pool()
481 evt->xfer_iu = pool->iu_storage + i; in initialize_event_pool()
497 static void release_event_pool(struct event_pool *pool, in release_event_pool() argument
501 for (i = 0; i < pool->size; ++i) { in release_event_pool()
502 if (atomic_read(&pool->events[i].free) != 1) in release_event_pool()
504 if (pool->events[i].ext_list) { in release_event_pool()
507 pool->events[i].ext_list, in release_event_pool()
508 pool->events[i].ext_list_token); in release_event_pool()
514 kfree(pool->events); in release_event_pool()
516 pool->size * sizeof(*pool->iu_storage), in release_event_pool()
517 pool->iu_storage, pool->iu_token); in release_event_pool()
527 static int valid_event_struct(struct event_pool *pool, in valid_event_struct() argument
530 int index = evt - pool->events; in valid_event_struct()
531 if (index < 0 || index >= pool->size) /* outside of bounds */ in valid_event_struct()
533 if (evt != pool->events + index) /* unaligned */ in valid_event_struct()
544 static void free_event_struct(struct event_pool *pool, in free_event_struct() argument
547 if (!valid_event_struct(pool, evt)) { in free_event_struct()
549 "(not in pool %p)\n", evt, pool->events); in free_event_struct()
567 static struct srp_event_struct *get_event_struct(struct event_pool *pool) in get_event_struct() argument
570 int poolsize = pool->size; in get_event_struct()
571 int offset = pool->next; in get_event_struct()
575 if (!atomic_dec_if_positive(&pool->events[offset].free)) { in get_event_struct()
576 pool->next = offset; in get_event_struct()
577 return &pool->events[offset]; in get_event_struct()
813 free_event_struct(&evt->hostdata->pool, evt); in purge_requests()
964 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_send_srp_event()
978 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_send_srp_event()
1047 evt_struct = get_event_struct(&hostdata->pool); in ibmvscsi_queuecommand_lck()
1062 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_queuecommand_lck()
1195 struct srp_event_struct *evt_struct = get_event_struct(&hostdata->pool); in send_srp_login()
1264 evt_struct = get_event_struct(&hostdata->pool); in send_mad_capabilities()
1358 evt_struct = get_event_struct(&hostdata->pool); in enable_fast_fail()
1434 evt_struct = get_event_struct(&hostdata->pool); in send_mad_adapter_info()
1514 evt = get_event_struct(&hostdata->pool); in ibmvscsi_eh_abort_handler()
1611 free_event_struct(&found_evt->hostdata->pool, found_evt); in ibmvscsi_eh_abort_handler()
1637 evt = get_event_struct(&hostdata->pool); in ibmvscsi_eh_device_reset_handler()
1716 free_event_struct(&tmp_evt->hostdata->pool, in ibmvscsi_eh_device_reset_handler()
1822 if (!valid_event_struct(&hostdata->pool, evt_struct)) { in ibmvscsi_handle_crq()
1853 free_event_struct(&evt_struct->hostdata->pool, evt_struct); in ibmvscsi_handle_crq()
1870 evt_struct = get_event_struct(&hostdata->pool); in ibmvscsi_do_host_config()
1896 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_do_host_config()
2287 if (initialize_event_pool(&hostdata->pool, max_events, hostdata) != 0) { in ibmvscsi_probe()
2342 release_event_pool(&hostdata->pool, hostdata); in ibmvscsi_probe()
2359 release_event_pool(&hostdata->pool, hostdata); in ibmvscsi_remove()