• Mark Salyzyn's avatar
    [SCSI] pm8001: fix DEV_IS_GONE infinite retry · b90b378a
    Mark Salyzyn authored
    On the pm8001, when a device is in the process of going away (device
    power off or hot plug), depending on the timing, the driver would return
    SAS_PHY_DOWN as the return value to the queuecommand DEV_IS_GONE logic.
    The net result is an near infinite retry (especially if SAS debugging is
    enabled), the logs will fill with:
    
    kernel: mpi_ssp_completion 2119:e21:SSP IO status 0x13 tag 0xcc1c0000
    dlen=90 param=0xe
    kernel: wwn=5000c50034069e86  cdb=12 00 00 00 5a 00 00 00 00 00 00 00 00
    00 00 00
    kernel: sas: lldd_execute_task returned: 138
    kernel: sas: lldd_execute_task returned: 138
    kernel: sas: lldd_execute_task returned: 138
    kernel: sas: lldd_execute_task returned: 138
    kernel: sas: lldd_execute_task returned: 138
    kernel: sas: lldd_execute_task returned: 138
    kernel: sas: lldd_execute_task returned: 138
    . . .
    
    This patch changes to leverage the port_attached logic to complete the
    command with a status of PHY_DOWN so that the disposition can be handled
    immediately and correctly.
    Signed-off-by: default avatarMark Salyzyn <mark_salyzyn@us.xyratex.com>
    Acked-by: default avatarJack Wang <jack_wang@usish.com>
    Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
    b90b378a
pm8001_sas.c 30.6 KB