diff options
| -rw-r--r-- | drivers/s390/scsi/zfcp_aux.c | 12 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_cfdc.c | 17 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_def.h | 2 |
3 files changed, 3 insertions, 28 deletions
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c index f0f49feaa34f..d7d3148d15e2 100644 --- a/drivers/s390/scsi/zfcp_aux.c +++ b/drivers/s390/scsi/zfcp_aux.c | |||
| @@ -181,7 +181,6 @@ static int __init zfcp_module_init(void) | |||
| 181 | 181 | ||
| 182 | zfcp_data.work_queue = create_singlethread_workqueue("zfcp_wq"); | 182 | zfcp_data.work_queue = create_singlethread_workqueue("zfcp_wq"); |
| 183 | 183 | ||
| 184 | INIT_LIST_HEAD(&zfcp_data.adapter_list_head); | ||
| 185 | sema_init(&zfcp_data.config_sema, 1); | 184 | sema_init(&zfcp_data.config_sema, 1); |
| 186 | rwlock_init(&zfcp_data.config_lock); | 185 | rwlock_init(&zfcp_data.config_lock); |
| 187 | 186 | ||
| @@ -527,11 +526,7 @@ int zfcp_adapter_enqueue(struct ccw_device *ccw_device) | |||
| 527 | &zfcp_sysfs_adapter_attrs)) | 526 | &zfcp_sysfs_adapter_attrs)) |
| 528 | goto sysfs_failed; | 527 | goto sysfs_failed; |
| 529 | 528 | ||
| 530 | write_lock_irq(&zfcp_data.config_lock); | ||
| 531 | atomic_clear_mask(ZFCP_STATUS_COMMON_REMOVE, &adapter->status); | 529 | atomic_clear_mask(ZFCP_STATUS_COMMON_REMOVE, &adapter->status); |
| 532 | list_add_tail(&adapter->list, &zfcp_data.adapter_list_head); | ||
| 533 | write_unlock_irq(&zfcp_data.config_lock); | ||
| 534 | |||
| 535 | zfcp_fc_nameserver_init(adapter); | 530 | zfcp_fc_nameserver_init(adapter); |
| 536 | 531 | ||
| 537 | if (!zfcp_adapter_scsi_register(adapter)) | 532 | if (!zfcp_adapter_scsi_register(adapter)) |
| @@ -574,14 +569,7 @@ void zfcp_adapter_dequeue(struct zfcp_adapter *adapter) | |||
| 574 | return; | 569 | return; |
| 575 | 570 | ||
| 576 | zfcp_adapter_debug_unregister(adapter); | 571 | zfcp_adapter_debug_unregister(adapter); |
| 577 | |||
| 578 | /* remove specified adapter data structure from list */ | ||
| 579 | write_lock_irq(&zfcp_data.config_lock); | ||
| 580 | list_del(&adapter->list); | ||
| 581 | write_unlock_irq(&zfcp_data.config_lock); | ||
| 582 | |||
| 583 | zfcp_qdio_free(adapter); | 572 | zfcp_qdio_free(adapter); |
| 584 | |||
| 585 | zfcp_free_low_mem_buffers(adapter); | 573 | zfcp_free_low_mem_buffers(adapter); |
| 586 | kfree(adapter->req_list); | 574 | kfree(adapter->req_list); |
| 587 | kfree(adapter->fc_stats); | 575 | kfree(adapter->fc_stats); |
diff --git a/drivers/s390/scsi/zfcp_cfdc.c b/drivers/s390/scsi/zfcp_cfdc.c index f1a7518e67ed..10cbfd172a28 100644 --- a/drivers/s390/scsi/zfcp_cfdc.c +++ b/drivers/s390/scsi/zfcp_cfdc.c | |||
| @@ -85,20 +85,9 @@ static int zfcp_cfdc_copy_to_user(void __user *user_buffer, | |||
| 85 | 85 | ||
| 86 | static struct zfcp_adapter *zfcp_cfdc_get_adapter(u32 devno) | 86 | static struct zfcp_adapter *zfcp_cfdc_get_adapter(u32 devno) |
| 87 | { | 87 | { |
| 88 | struct zfcp_adapter *adapter = NULL, *cur_adapter; | 88 | char busid[9]; |
| 89 | struct ccw_dev_id dev_id; | 89 | snprintf(busid, sizeof(busid), "0.0.%04x", devno); |
| 90 | 90 | return zfcp_get_adapter_by_busid(busid); | |
| 91 | read_lock_irq(&zfcp_data.config_lock); | ||
| 92 | list_for_each_entry(cur_adapter, &zfcp_data.adapter_list_head, list) { | ||
| 93 | ccw_device_get_id(cur_adapter->ccw_device, &dev_id); | ||
| 94 | if (dev_id.devno == devno) { | ||
| 95 | adapter = cur_adapter; | ||
| 96 | zfcp_adapter_get(adapter); | ||
| 97 | break; | ||
| 98 | } | ||
| 99 | } | ||
| 100 | read_unlock_irq(&zfcp_data.config_lock); | ||
| 101 | return adapter; | ||
| 102 | } | 91 | } |
| 103 | 92 | ||
| 104 | static int zfcp_cfdc_set_fsf(struct zfcp_fsf_cfdc *fsf_cfdc, int command) | 93 | static int zfcp_cfdc_set_fsf(struct zfcp_fsf_cfdc *fsf_cfdc, int command) |
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h index e19e46ae4a68..b95e73ee0d6f 100644 --- a/drivers/s390/scsi/zfcp_def.h +++ b/drivers/s390/scsi/zfcp_def.h | |||
| @@ -451,7 +451,6 @@ struct zfcp_latencies { | |||
| 451 | }; | 451 | }; |
| 452 | 452 | ||
| 453 | struct zfcp_adapter { | 453 | struct zfcp_adapter { |
| 454 | struct list_head list; /* list of adapters */ | ||
| 455 | atomic_t refcount; /* reference count */ | 454 | atomic_t refcount; /* reference count */ |
| 456 | wait_queue_head_t remove_wq; /* can be used to wait for | 455 | wait_queue_head_t remove_wq; /* can be used to wait for |
| 457 | refcount drop to zero */ | 456 | refcount drop to zero */ |
| @@ -593,7 +592,6 @@ struct zfcp_fsf_req { | |||
| 593 | struct zfcp_data { | 592 | struct zfcp_data { |
| 594 | struct scsi_host_template scsi_host_template; | 593 | struct scsi_host_template scsi_host_template; |
| 595 | struct scsi_transport_template *scsi_transport_template; | 594 | struct scsi_transport_template *scsi_transport_template; |
| 596 | struct list_head adapter_list_head; /* head of adapter list */ | ||
| 597 | rwlock_t config_lock; /* serialises changes | 595 | rwlock_t config_lock; /* serialises changes |
| 598 | to adapter/port/unit | 596 | to adapter/port/unit |
| 599 | lists */ | 597 | lists */ |
