Lines Matching refs:stor_device
591 struct storvsc_device *stor_device; in get_out_stor_device() local
593 stor_device = hv_get_drvdata(device); in get_out_stor_device()
595 if (stor_device && stor_device->destroy) in get_out_stor_device()
596 stor_device = NULL; in get_out_stor_device()
598 return stor_device; in get_out_stor_device()
613 struct storvsc_device *stor_device; in get_in_stor_device() local
615 stor_device = hv_get_drvdata(device); in get_in_stor_device()
617 if (!stor_device) in get_in_stor_device()
625 if (stor_device->destroy && in get_in_stor_device()
626 (atomic_read(&stor_device->num_outstanding_req) == 0)) in get_in_stor_device()
627 stor_device = NULL; in get_in_stor_device()
630 return stor_device; in get_in_stor_device()
637 struct storvsc_device *stor_device; in storvsc_change_target_cpu() local
647 stor_device = get_out_stor_device(device); in storvsc_change_target_cpu()
648 if (!stor_device) in storvsc_change_target_cpu()
652 spin_lock_irqsave(&stor_device->lock, flags); in storvsc_change_target_cpu()
675 WRITE_ONCE(stor_device->stor_chns[old], cur_chn); in storvsc_change_target_cpu()
677 cpumask_clear_cpu(old, &stor_device->alloced_cpus); in storvsc_change_target_cpu()
681 if (stor_device->stor_chns[cpu] && !cpumask_test_cpu( in storvsc_change_target_cpu()
682 cpu, &stor_device->alloced_cpus)) in storvsc_change_target_cpu()
683 WRITE_ONCE(stor_device->stor_chns[cpu], NULL); in storvsc_change_target_cpu()
686 WRITE_ONCE(stor_device->stor_chns[new], channel); in storvsc_change_target_cpu()
687 cpumask_set_cpu(new, &stor_device->alloced_cpus); in storvsc_change_target_cpu()
689 spin_unlock_irqrestore(&stor_device->lock, flags); in storvsc_change_target_cpu()
696 struct storvsc_device *stor_device; in handle_sc_creation() local
700 stor_device = get_out_stor_device(device); in handle_sc_creation()
701 if (!stor_device) in handle_sc_creation()
722 stor_device->stor_chns[new_sc->target_cpu] = new_sc; in handle_sc_creation()
723 cpumask_set_cpu(new_sc->target_cpu, &stor_device->alloced_cpus); in handle_sc_creation()
729 struct storvsc_device *stor_device; in handle_multichannel_storage() local
746 stor_device = get_out_stor_device(device); in handle_multichannel_storage()
747 if (!stor_device) in handle_multichannel_storage()
750 stor_device->num_sc = num_sc; in handle_multichannel_storage()
751 request = &stor_device->init_request; in handle_multichannel_storage()
800 static void cache_wwn(struct storvsc_device *stor_device, in cache_wwn() argument
807 stor_device->node_name = in cache_wwn()
809 stor_device->port_name = in cache_wwn()
812 stor_device->node_name = in cache_wwn()
814 stor_device->port_name = in cache_wwn()
857 struct storvsc_device *stor_device; in storvsc_channel_init() local
864 stor_device = get_out_stor_device(device); in storvsc_channel_init()
865 if (!stor_device) in storvsc_channel_init()
868 request = &stor_device->init_request; in storvsc_channel_init()
944 stor_device->stor_chns = kcalloc(num_possible_cpus(), sizeof(void *), in storvsc_channel_init()
946 if (stor_device->stor_chns == NULL) in storvsc_channel_init()
951 stor_device->stor_chns[device->channel->target_cpu] = device->channel; in storvsc_channel_init()
953 &stor_device->alloced_cpus); in storvsc_channel_init()
960 stor_device->max_transfer_bytes = in storvsc_channel_init()
978 cache_wwn(stor_device, vstor_packet); in storvsc_channel_init()
1126 static void storvsc_on_io_completion(struct storvsc_device *stor_device, in storvsc_on_io_completion() argument
1131 struct hv_device *device = stor_device->device; in storvsc_on_io_completion()
1192 storvsc_command_completion(request, stor_device); in storvsc_on_io_completion()
1194 if (atomic_dec_and_test(&stor_device->num_outstanding_req) && in storvsc_on_io_completion()
1195 stor_device->drain_notify) in storvsc_on_io_completion()
1196 wake_up(&stor_device->waiting_to_drain); in storvsc_on_io_completion()
1201 static void storvsc_on_receive(struct storvsc_device *stor_device, in storvsc_on_receive() argument
1208 storvsc_on_io_completion(stor_device, vstor_packet, request); in storvsc_on_receive()
1213 host_dev = shost_priv(stor_device->host); in storvsc_on_receive()
1219 cache_wwn(stor_device, vstor_packet); in storvsc_on_receive()
1221 fc_host_node_name(stor_device->host) = stor_device->node_name; in storvsc_on_receive()
1222 fc_host_port_name(stor_device->host) = stor_device->port_name; in storvsc_on_receive()
1235 struct storvsc_device *stor_device; in storvsc_on_channel_callback() local
1242 stor_device = get_in_stor_device(device); in storvsc_on_channel_callback()
1243 if (!stor_device) in storvsc_on_channel_callback()
1253 if (request == &stor_device->init_request || in storvsc_on_channel_callback()
1254 request == &stor_device->reset_request) { in storvsc_on_channel_callback()
1259 storvsc_on_receive(stor_device, packet, request); in storvsc_on_channel_callback()
1289 struct storvsc_device *stor_device; in storvsc_dev_remove() local
1291 stor_device = hv_get_drvdata(device); in storvsc_dev_remove()
1293 stor_device->destroy = true; in storvsc_dev_remove()
1304 storvsc_wait_to_drain(stor_device); in storvsc_dev_remove()
1318 kfree(stor_device->stor_chns); in storvsc_dev_remove()
1319 kfree(stor_device); in storvsc_dev_remove()
1323 static struct vmbus_channel *get_og_chn(struct storvsc_device *stor_device, in get_og_chn() argument
1331 if (stor_device->num_sc == 0) { in get_og_chn()
1332 stor_device->stor_chns[q_num] = stor_device->device->channel; in get_og_chn()
1333 return stor_device->device->channel; in get_og_chn()
1348 for_each_cpu(tgt_cpu, &stor_device->alloced_cpus) { in get_og_chn()
1353 stor_device->stor_chns[q_num] = stor_device->device->channel; in get_og_chn()
1354 return stor_device->device->channel; in get_og_chn()
1361 for_each_cpu(tgt_cpu, &stor_device->alloced_cpus) { in get_og_chn()
1369 stor_device->stor_chns[q_num] = stor_device->stor_chns[tgt_cpu]; in get_og_chn()
1371 return stor_device->stor_chns[q_num]; in get_og_chn()
1378 struct storvsc_device *stor_device; in storvsc_do_io() local
1387 stor_device = get_out_stor_device(device); in storvsc_do_io()
1389 if (!stor_device) in storvsc_do_io()
1398 outgoing_channel = READ_ONCE(stor_device->stor_chns[q_num]); in storvsc_do_io()
1407 &stor_device->alloced_cpus, q_num + 1) { in storvsc_do_io()
1413 stor_device->stor_chns[tgt_cpu]); in storvsc_do_io()
1438 for_each_cpu(tgt_cpu, &stor_device->alloced_cpus) { in storvsc_do_io()
1442 stor_device->stor_chns[tgt_cpu]); in storvsc_do_io()
1454 spin_lock_irqsave(&stor_device->lock, flags); in storvsc_do_io()
1455 outgoing_channel = stor_device->stor_chns[q_num]; in storvsc_do_io()
1457 spin_unlock_irqrestore(&stor_device->lock, flags); in storvsc_do_io()
1460 outgoing_channel = get_og_chn(stor_device, q_num); in storvsc_do_io()
1461 spin_unlock_irqrestore(&stor_device->lock, flags); in storvsc_do_io()
1499 atomic_inc(&stor_device->num_outstanding_req); in storvsc_do_io()
1574 struct storvsc_device *stor_device; in storvsc_host_reset_handler() local
1580 stor_device = get_out_stor_device(device); in storvsc_host_reset_handler()
1581 if (!stor_device) in storvsc_host_reset_handler()
1584 request = &stor_device->reset_request; in storvsc_host_reset_handler()
1592 vstor_packet->vm_srb.path_id = stor_device->path_id; in storvsc_host_reset_handler()
1597 (unsigned long)&stor_device->reset_request, in storvsc_host_reset_handler()
1616 storvsc_wait_to_drain(stor_device); in storvsc_host_reset_handler()
1889 struct storvsc_device *stor_device; in storvsc_probe() local
1936 stor_device = kzalloc(sizeof(struct storvsc_device), GFP_KERNEL); in storvsc_probe()
1937 if (!stor_device) { in storvsc_probe()
1942 stor_device->destroy = false; in storvsc_probe()
1943 init_waitqueue_head(&stor_device->waiting_to_drain); in storvsc_probe()
1944 stor_device->device = device; in storvsc_probe()
1945 stor_device->host = host; in storvsc_probe()
1946 spin_lock_init(&stor_device->lock); in storvsc_probe()
1947 hv_set_drvdata(device, stor_device); in storvsc_probe()
1949 stor_device->port_number = host->host_no; in storvsc_probe()
1954 host_dev->path = stor_device->path_id; in storvsc_probe()
1955 host_dev->target = stor_device->target_id; in storvsc_probe()
1986 host->sg_tablesize = (stor_device->max_transfer_bytes >> PAGE_SHIFT); in storvsc_probe()
2026 fc_host_node_name(host) = stor_device->node_name; in storvsc_probe()
2027 fc_host_port_name(host) = stor_device->port_name; in storvsc_probe()
2028 stor_device->rport = fc_remote_port_add(host, 0, &ids); in storvsc_probe()
2029 if (!stor_device->rport) { in storvsc_probe()
2054 kfree(stor_device->stor_chns); in storvsc_probe()
2055 kfree(stor_device); in storvsc_probe()
2073 struct storvsc_device *stor_device = hv_get_drvdata(dev); in storvsc_remove() local
2074 struct Scsi_Host *host = stor_device->host; in storvsc_remove()
2079 fc_remote_port_delete(stor_device->rport); in storvsc_remove()
2093 struct storvsc_device *stor_device = hv_get_drvdata(hv_dev); in storvsc_suspend() local
2094 struct Scsi_Host *host = stor_device->host; in storvsc_suspend()
2097 storvsc_wait_to_drain(stor_device); in storvsc_suspend()
2103 kfree(stor_device->stor_chns); in storvsc_suspend()
2104 stor_device->stor_chns = NULL; in storvsc_suspend()
2106 cpumask_clear(&stor_device->alloced_cpus); in storvsc_suspend()