• Steffen Maier's avatar
    zfcp: fix fc_host port_type with NPIV · bd77befa
    Steffen Maier authored
    For an NPIV-enabled FCP device, zfcp can erroneously show
    "NPort (fabric via point-to-point)" instead of "NPIV VPORT"
    for the port_type sysfs attribute of the corresponding
    fc_host.
    s390-tools that can be affected are dbginfo.sh and ziomon.
    
    zfcp_fsf_exchange_config_evaluate() ignores
    fsf_qtcb_bottom_config.connection_features indicating NPIV
    and only sets fc_host_port_type to FC_PORTTYPE_NPORT if
    fsf_qtcb_bottom_config.fc_topology is FSF_TOPO_FABRIC.
    
    Only the independent zfcp_fsf_exchange_port_evaluate()
    evaluates connection_features to overwrite fc_host_port_type
    to FC_PORTTYPE_NPIV in case of NPIV.
    Code was introduced with upstream kernel 2.6.30
    commit 0282985d
    ("[SCSI] zfcp: Report fc_host_port_type as NPIV").
    
    This works during FCP device recovery (such as set online)
    because it performs FSF_QTCB_EXCHANGE_CONFIG_DATA followed by
    FSF_QTCB_EXCHANGE_PORT_DATA in sequence.
    
    However, the zfcp-specific scsi host sysfs attributes
    "requests", "megabytes", or "seconds_active" trigger only
    zfcp_fsf_exchange_config_evaluate() resetting fc_host
    port_type to FC_PORTTYPE_NPORT despite NPIV.
    
    The zfcp-specific scsi host sysfs attribute "utilization"
    triggers only zfcp_fsf_exchange_port_evaluate() correcting
    the fc_host port_type again in case of NPIV.
    
    Evaluate fsf_qtcb_bottom_config.connection_features
    in zfcp_fsf_exchange_config_evaluate() where it belongs to.
    Signed-off-by: default avatarSteffen Maier <maier@linux.vnet.ibm.com>
    Fixes: 0282985d ("[SCSI] zfcp: Report fc_host_port_type as NPIV")
    Cc: <stable@vger.kernel.org> #2.6.30+
    Reviewed-by: default avatarBenjamin Block <bblock@linux.vnet.ibm.com>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    bd77befa
zfcp_fsf.c 65.7 KB