aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_erp.c
diff options
context:
space:
mode:
authorChristof Schmitt <christof.schmitt@de.ibm.com>2010-09-08 08:39:59 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-09-16 22:54:21 -0400
commita1ca48319a9aa1c5b57ce142f538e76050bb8972 (patch)
tree0cfaec3fddadd2de778f721d6dd98aa34f19ff2d /drivers/s390/scsi/zfcp_erp.c
parentc61b536c97f225a74cf430716fdb243dfafe9d48 (diff)
[SCSI] zfcp: Move ACL/CFDC code to zfcp_cfdc.c
Move the code evaluating the ACL/CFDC specific errors to the file zfcp_cfdc.c. With this change, all code related to the old access control feature is kept in one file, not split across zfcp_erp.c and zfcp_fsf.c. Reviewed-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/s390/scsi/zfcp_erp.c')
-rw-r--r--drivers/s390/scsi/zfcp_erp.c82
1 files changed, 0 insertions, 82 deletions
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c
index 734fc838931..9e7d029ac7a 100644
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -1593,85 +1593,3 @@ void zfcp_erp_lun_boxed(struct scsi_device *sdev, char *id, void *ref)
1593 ZFCP_STATUS_COMMON_ACCESS_BOXED, ZFCP_SET); 1593 ZFCP_STATUS_COMMON_ACCESS_BOXED, ZFCP_SET);
1594 zfcp_erp_lun_reopen(sdev, ZFCP_STATUS_COMMON_ERP_FAILED, id, ref); 1594 zfcp_erp_lun_reopen(sdev, ZFCP_STATUS_COMMON_ERP_FAILED, id, ref);
1595} 1595}
1596
1597/**
1598 * zfcp_erp_port_access_denied - Adapter denied access to port.
1599 * @port: port where access has been denied
1600 * @id: id for debug trace
1601 * @ref: reference for debug trace
1602 *
1603 * Since the adapter has denied access, stop using the port and the
1604 * attached LUNs.
1605 */
1606void zfcp_erp_port_access_denied(struct zfcp_port *port, char *id, void *ref)
1607{
1608 zfcp_erp_modify_port_status(port, id, ref,
1609 ZFCP_STATUS_COMMON_ERP_FAILED |
1610 ZFCP_STATUS_COMMON_ACCESS_DENIED, ZFCP_SET);
1611}
1612
1613/**
1614 * zfcp_erp_lun_access_denied - Adapter denied access to LUN.
1615 * @sdev: SCSI device / LUN where access has been denied
1616 * @id: id for debug trace
1617 * @ref: reference for debug trace
1618 *
1619 * Since the adapter has denied access, stop using the LUN.
1620 */
1621void zfcp_erp_lun_access_denied(struct scsi_device *sdev, char *id, void *ref)
1622{
1623 zfcp_erp_modify_lun_status(sdev, id, ref,
1624 ZFCP_STATUS_COMMON_ERP_FAILED |
1625 ZFCP_STATUS_COMMON_ACCESS_DENIED, ZFCP_SET);
1626}
1627
1628static void zfcp_erp_lun_access_changed(struct scsi_device *sdev, char *id,
1629 void *ref)
1630{
1631 struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev);
1632 int status = atomic_read(&zfcp_sdev->status);
1633
1634 if (!(status & (ZFCP_STATUS_COMMON_ACCESS_DENIED |
1635 ZFCP_STATUS_COMMON_ACCESS_BOXED)))
1636 return;
1637
1638 zfcp_erp_lun_reopen(sdev, ZFCP_STATUS_COMMON_ERP_FAILED, id, ref);
1639}
1640
1641static void zfcp_erp_port_access_changed(struct zfcp_port *port, char *id,
1642 void *ref)
1643{
1644 struct scsi_device *sdev;
1645 int status = atomic_read(&port->status);
1646
1647 if (!(status & (ZFCP_STATUS_COMMON_ACCESS_DENIED |
1648 ZFCP_STATUS_COMMON_ACCESS_BOXED))) {
1649 shost_for_each_device(sdev, port->adapter->scsi_host)
1650 if (sdev_to_zfcp(sdev)->port == port)
1651 zfcp_erp_lun_access_changed(sdev, id, ref);
1652 return;
1653 }
1654
1655 zfcp_erp_port_reopen(port, ZFCP_STATUS_COMMON_ERP_FAILED, id, ref);
1656}
1657
1658/**
1659 * zfcp_erp_adapter_access_changed - Process change in adapter ACT
1660 * @adapter: Adapter where the Access Control Table (ACT) changed
1661 * @id: Id for debug trace
1662 * @ref: Reference for debug trace
1663 */
1664void zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter, char *id,
1665 void *ref)
1666{
1667 unsigned long flags;
1668 struct zfcp_port *port;
1669
1670 if (adapter->connection_features & FSF_FEATURE_NPIV_MODE)
1671 return;
1672
1673 read_lock_irqsave(&adapter->port_list_lock, flags);
1674 list_for_each_entry(port, &adapter->port_list, list)
1675 zfcp_erp_port_access_changed(port, id, ref);
1676 read_unlock_irqrestore(&adapter->port_list_lock, flags);
1677}