diff options
-rw-r--r-- | drivers/s390/scsi/zfcp_aux.c | 1 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_ccw.c | 3 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_fc.c | 8 |
3 files changed, 8 insertions, 4 deletions
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c index c4d07be6279a..616c60ffcf2c 100644 --- a/drivers/s390/scsi/zfcp_aux.c +++ b/drivers/s390/scsi/zfcp_aux.c | |||
@@ -524,7 +524,6 @@ int zfcp_adapter_enqueue(struct ccw_device *ccw_device) | |||
524 | goto sysfs_failed; | 524 | goto sysfs_failed; |
525 | 525 | ||
526 | atomic_clear_mask(ZFCP_STATUS_COMMON_REMOVE, &adapter->status); | 526 | atomic_clear_mask(ZFCP_STATUS_COMMON_REMOVE, &adapter->status); |
527 | zfcp_fc_nameserver_init(adapter); | ||
528 | 527 | ||
529 | if (!zfcp_adapter_scsi_register(adapter)) | 528 | if (!zfcp_adapter_scsi_register(adapter)) |
530 | return 0; | 529 | return 0; |
diff --git a/drivers/s390/scsi/zfcp_ccw.c b/drivers/s390/scsi/zfcp_ccw.c index 3aeef289fe7c..1fe1e2eda512 100644 --- a/drivers/s390/scsi/zfcp_ccw.c +++ b/drivers/s390/scsi/zfcp_ccw.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * Registration and callback for the s390 common I/O layer. | 4 | * Registration and callback for the s390 common I/O layer. |
5 | * | 5 | * |
6 | * Copyright IBM Corporation 2002, 2008 | 6 | * Copyright IBM Corporation 2002, 2009 |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #define KMSG_COMPONENT "zfcp" | 9 | #define KMSG_COMPONENT "zfcp" |
@@ -108,6 +108,7 @@ static int zfcp_ccw_set_online(struct ccw_device *ccw_device) | |||
108 | /* initialize request counter */ | 108 | /* initialize request counter */ |
109 | BUG_ON(!zfcp_reqlist_isempty(adapter)); | 109 | BUG_ON(!zfcp_reqlist_isempty(adapter)); |
110 | adapter->req_no = 0; | 110 | adapter->req_no = 0; |
111 | zfcp_fc_nameserver_init(adapter); | ||
111 | 112 | ||
112 | zfcp_erp_modify_adapter_status(adapter, "ccsonl1", NULL, | 113 | zfcp_erp_modify_adapter_status(adapter, "ccsonl1", NULL, |
113 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); | 114 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); |
diff --git a/drivers/s390/scsi/zfcp_fc.c b/drivers/s390/scsi/zfcp_fc.c index c22c47868550..aab8123c5966 100644 --- a/drivers/s390/scsi/zfcp_fc.c +++ b/drivers/s390/scsi/zfcp_fc.c | |||
@@ -98,8 +98,12 @@ static void zfcp_wka_port_offline(struct work_struct *work) | |||
98 | struct zfcp_wka_port *wka_port = | 98 | struct zfcp_wka_port *wka_port = |
99 | container_of(dw, struct zfcp_wka_port, work); | 99 | container_of(dw, struct zfcp_wka_port, work); |
100 | 100 | ||
101 | wait_event(wka_port->completion_wq, | 101 | /* Don't wait forvever. If the wka_port is too busy take it offline |
102 | atomic_read(&wka_port->refcount) == 0); | 102 | through a new call later */ |
103 | if (!wait_event_timeout(wka_port->completion_wq, | ||
104 | atomic_read(&wka_port->refcount) == 0, | ||
105 | HZ >> 1)) | ||
106 | return; | ||
103 | 107 | ||
104 | mutex_lock(&wka_port->mutex); | 108 | mutex_lock(&wka_port->mutex); |
105 | if ((atomic_read(&wka_port->refcount) != 0) || | 109 | if ((atomic_read(&wka_port->refcount) != 0) || |