From 0a90ca27dd736236f8cc43a2bd9ce017017a9b0a Mon Sep 17 00:00:00 2001 From: Swen Schillig Date: Mon, 2 Mar 2009 13:09:11 +0100 Subject: [PATCH] --- yaml --- r: 136295 b: refs/heads/master c: 6d1a27f630f1d30bf85c61ec0436c287d0945fcc h: refs/heads/master i: 136293: 7fd42077aefb61f79ee904e8707708ff760f0219 136291: 16535e0bc7475cb4a55ed9e2dbcb5789c74c944e 136287: 7697ce250bb7b848ffa4c759619b4b262fa354b3 v: v3 --- [refs] | 2 +- trunk/drivers/s390/scsi/zfcp_aux.c | 1 - trunk/drivers/s390/scsi/zfcp_ccw.c | 3 ++- trunk/drivers/s390/scsi/zfcp_fc.c | 8 ++++++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index baf51f0753d2..0a01b574d723 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 947a9aca86eb2a921ed7aa92397cf7f38b896f90 +refs/heads/master: 6d1a27f630f1d30bf85c61ec0436c287d0945fcc diff --git a/trunk/drivers/s390/scsi/zfcp_aux.c b/trunk/drivers/s390/scsi/zfcp_aux.c index c4d07be6279a..616c60ffcf2c 100644 --- a/trunk/drivers/s390/scsi/zfcp_aux.c +++ b/trunk/drivers/s390/scsi/zfcp_aux.c @@ -524,7 +524,6 @@ int zfcp_adapter_enqueue(struct ccw_device *ccw_device) goto sysfs_failed; atomic_clear_mask(ZFCP_STATUS_COMMON_REMOVE, &adapter->status); - zfcp_fc_nameserver_init(adapter); if (!zfcp_adapter_scsi_register(adapter)) return 0; diff --git a/trunk/drivers/s390/scsi/zfcp_ccw.c b/trunk/drivers/s390/scsi/zfcp_ccw.c index 3aeef289fe7c..1fe1e2eda512 100644 --- a/trunk/drivers/s390/scsi/zfcp_ccw.c +++ b/trunk/drivers/s390/scsi/zfcp_ccw.c @@ -3,7 +3,7 @@ * * Registration and callback for the s390 common I/O layer. * - * Copyright IBM Corporation 2002, 2008 + * Copyright IBM Corporation 2002, 2009 */ #define KMSG_COMPONENT "zfcp" @@ -108,6 +108,7 @@ static int zfcp_ccw_set_online(struct ccw_device *ccw_device) /* initialize request counter */ BUG_ON(!zfcp_reqlist_isempty(adapter)); adapter->req_no = 0; + zfcp_fc_nameserver_init(adapter); zfcp_erp_modify_adapter_status(adapter, "ccsonl1", NULL, ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); diff --git a/trunk/drivers/s390/scsi/zfcp_fc.c b/trunk/drivers/s390/scsi/zfcp_fc.c index c22c47868550..aab8123c5966 100644 --- a/trunk/drivers/s390/scsi/zfcp_fc.c +++ b/trunk/drivers/s390/scsi/zfcp_fc.c @@ -98,8 +98,12 @@ static void zfcp_wka_port_offline(struct work_struct *work) struct zfcp_wka_port *wka_port = container_of(dw, struct zfcp_wka_port, work); - wait_event(wka_port->completion_wq, - atomic_read(&wka_port->refcount) == 0); + /* Don't wait forvever. If the wka_port is too busy take it offline + through a new call later */ + if (!wait_event_timeout(wka_port->completion_wq, + atomic_read(&wka_port->refcount) == 0, + HZ >> 1)) + return; mutex_lock(&wka_port->mutex); if ((atomic_read(&wka_port->refcount) != 0) ||