zfcp_data.work_queue = create_singlethread_workqueue("zfcp_wq");
 
-       INIT_LIST_HEAD(&zfcp_data.adapter_list_head);
        sema_init(&zfcp_data.config_sema, 1);
        rwlock_init(&zfcp_data.config_lock);
 
                               &zfcp_sysfs_adapter_attrs))
                goto sysfs_failed;
 
-       write_lock_irq(&zfcp_data.config_lock);
        atomic_clear_mask(ZFCP_STATUS_COMMON_REMOVE, &adapter->status);
-       list_add_tail(&adapter->list, &zfcp_data.adapter_list_head);
-       write_unlock_irq(&zfcp_data.config_lock);
-
        zfcp_fc_nameserver_init(adapter);
 
        if (!zfcp_adapter_scsi_register(adapter))
                return;
 
        zfcp_adapter_debug_unregister(adapter);
-
-       /* remove specified adapter data structure from list */
-       write_lock_irq(&zfcp_data.config_lock);
-       list_del(&adapter->list);
-       write_unlock_irq(&zfcp_data.config_lock);
-
        zfcp_qdio_free(adapter);
-
        zfcp_free_low_mem_buffers(adapter);
        kfree(adapter->req_list);
        kfree(adapter->fc_stats);
 
 
 static struct zfcp_adapter *zfcp_cfdc_get_adapter(u32 devno)
 {
-       struct zfcp_adapter *adapter = NULL, *cur_adapter;
-       struct ccw_dev_id dev_id;
-
-       read_lock_irq(&zfcp_data.config_lock);
-       list_for_each_entry(cur_adapter, &zfcp_data.adapter_list_head, list) {
-               ccw_device_get_id(cur_adapter->ccw_device, &dev_id);
-               if (dev_id.devno == devno) {
-                       adapter = cur_adapter;
-                       zfcp_adapter_get(adapter);
-                       break;
-               }
-       }
-       read_unlock_irq(&zfcp_data.config_lock);
-       return adapter;
+       char busid[9];
+       snprintf(busid, sizeof(busid), "0.0.%04x", devno);
+       return zfcp_get_adapter_by_busid(busid);
 }
 
 static int zfcp_cfdc_set_fsf(struct zfcp_fsf_cfdc *fsf_cfdc, int command)
 
 };
 
 struct zfcp_adapter {
-       struct list_head        list;              /* list of adapters */
        atomic_t                refcount;          /* reference count */
        wait_queue_head_t       remove_wq;         /* can be used to wait for
                                                      refcount drop to zero */
 struct zfcp_data {
        struct scsi_host_template scsi_host_template;
        struct scsi_transport_template *scsi_transport_template;
-       struct list_head        adapter_list_head;  /* head of adapter list */
        rwlock_t                config_lock;        /* serialises changes
                                                       to adapter/port/unit
                                                       lists */