From e5250f0e82b4a0f903443ec6b419ba83e20b7784 Mon Sep 17 00:00:00 2001 From: Christof Schmitt Date: Thu, 20 Dec 2007 12:30:25 +0100 Subject: [PATCH] --- yaml --- r: 77083 b: refs/heads/master c: 3f0ca62add34010241db682e63bb68ba765bf4a9 h: refs/heads/master i: 77081: 3b191f5b3a95a975f06dcc609840cf08df48b078 77079: 8b3721447bfae670eddfc1d764e599195008e19c v: v3 --- [refs] | 2 +- trunk/drivers/s390/scsi/zfcp_erp.c | 2 +- trunk/drivers/s390/scsi/zfcp_fsf.c | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index a4f20db66cf7..ccb5fe4f4986 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 951f746fece2e24a26853b3872d16e9013b6fe0b +refs/heads/master: 3f0ca62add34010241db682e63bb68ba765bf4a9 diff --git a/trunk/drivers/s390/scsi/zfcp_erp.c b/trunk/drivers/s390/scsi/zfcp_erp.c index 76fef3f6387e..4f86c0e12961 100644 --- a/trunk/drivers/s390/scsi/zfcp_erp.c +++ b/trunk/drivers/s390/scsi/zfcp_erp.c @@ -456,7 +456,7 @@ zfcp_test_link(struct zfcp_port *port) zfcp_port_get(port); retval = zfcp_erp_adisc(port); - if (retval != 0) { + if (retval != 0 && retval != -EBUSY) { zfcp_port_put(port); ZFCP_LOG_NORMAL("reopen needed for port 0x%016Lx " "on adapter %s\n ", port->wwpn, diff --git a/trunk/drivers/s390/scsi/zfcp_fsf.c b/trunk/drivers/s390/scsi/zfcp_fsf.c index 665fcb6ec5d5..908e8b2107c1 100644 --- a/trunk/drivers/s390/scsi/zfcp_fsf.c +++ b/trunk/drivers/s390/scsi/zfcp_fsf.c @@ -1668,6 +1668,12 @@ zfcp_fsf_send_els(struct zfcp_send_els *els) goto failed_req; } + if (unlikely(!atomic_test_mask(ZFCP_STATUS_COMMON_UNBLOCKED, + &els->port->status))) { + ret = -EBUSY; + goto port_blocked; + } + sbale = zfcp_qdio_sbale_req(fsf_req, fsf_req->sbal_curr, 0); if (zfcp_use_one_sbal(els->req, els->req_count, els->resp, els->resp_count)){ @@ -1749,6 +1755,7 @@ zfcp_fsf_send_els(struct zfcp_send_els *els) "0x%06x)\n", zfcp_get_busid_by_adapter(adapter), d_id); goto out; + port_blocked: failed_send: zfcp_fsf_req_free(fsf_req);