RE: [PATCH v6 0/7] libsas error handling + discovery v6

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Changes since v5: http://marc.info/?l=linux-scsi&m=132656475829637&w=2
> 
> 1/ Reworked "libsas: let libata recover links that fail to transmit
initial
>    sig-fis" to better handle problematic expanders and slow to attach ata
>    devices.  libsas will now validate linkrate and take 'device-type' into
>    account when determining if a new device is attached.
> 
> 2/ Added support for asynchronously scanning ata devices.
> 
> 3/ Reworked "libsas: fix sas_unregister_ports vs sas_drain_work" as
lockdep
>    complained about the original.
> 
> 4/ New patch "libsas: fix sas port naming" makes direct-attached device
naming
>    more predictable and consistent with expander attached device naming.
> 
> 5/ Made scan order more predictable by ensuring that regardless of device
type
>    we always attach in discovery order.  Slow to link devices will still
be
>    scanned out of order, link needs to be in at least the 'stp pending'
state
>    before the device will be considered attached.
> 
[Jack Wang] 
Asynchronously scan really make the discovery far more quickly, with v4
reset expander will need more than 3 minites to get discovered, with this v6
patchset it takes less than 5 seconds.

Dear Dan,

Could you share how you test procedure to find out these bugs?

Thanks.
> ---
> 
> Dan Williams (7):
>       libsas: fix sas_unregister_ports vs sas_drain_work
>       libsas: improve ata debug statements
>       libsas: fix sas port naming
>       libsas: let libata recover links that fail to transmit initial
sig-fis
>       libsas: delete device on sas address changed
>       libsas: restore scan order
>       libsas: async ata scanning
> 
> 
>  drivers/ata/libata-core.c           |   34 +++--
>  drivers/ata/libata-scsi.c           |   13 ++
>  drivers/ata/libata.h                |    1
>  drivers/scsi/aic94xx/aic94xx_init.c |    1
>  drivers/scsi/isci/init.c            |    1
>  drivers/scsi/libsas/sas_ata.c       |  187 +++++++++++++++++++++--------
>  drivers/scsi/libsas/sas_discover.c  |   47 +++++--
>  drivers/scsi/libsas/sas_event.c     |   19 ++-
>  drivers/scsi/libsas/sas_expander.c  |  229
> +++++++++++++++++++++--------------
>  drivers/scsi/libsas/sas_init.c      |   18 ++-
>  drivers/scsi/libsas/sas_internal.h  |   16 ++
>  drivers/scsi/libsas/sas_port.c      |    2
>  drivers/scsi/libsas/sas_scsi_host.c |   18 ---
>  drivers/scsi/mvsas/mv_init.c        |    1
>  drivers/scsi/pm8001/pm8001_init.c   |    1
>  include/linux/libata.h              |    1
>  include/scsi/libsas.h               |    1
>  include/scsi/sas.h                  |    4 -
>  include/scsi/sas_ata.h              |   23 ++--
>  19 files changed, 398 insertions(+), 219 deletions(-)
> 
> 
> Full snapshot in git:  note that
libsas-eh-reworks-v4..libsas-eh-reworks-v6
> is
> a fast-forward, but that will not always be the case.
> 
> The following changes since commit
76ffe8a3f766358a0ade543153625b3e4e66159d:
> 
>   [SCSI] libfc: remove redundant timer init for fcp (2012-01-16 12:47:18
+0400)
> 
> are available in the git repository at:
>   git://git.kernel.org/pub/scm/linux/kernel/git/djbw/isci.git
> libsas-eh-reworks-v6
> 
> Dan Williams (47):
>       libsas: remove unused ata_task_resp fields
>       libsas: kill sas_slave_destroy
>       libsas: fix domain_device leak
>       libsas: fix leak of dev->sata_dev.identify_[packet_]device
>       libsas: replace event locks with atomic bitops
>       libsas: convert ha->state to flags
>       libsas: introduce sas_drain_work()
>       libsas: remove ata_port.lock management duties from lldds
>       libsas: convert dev->gone to flags
>       libsas: prevent domain rediscovery competing with ata error handling
>       libsas: use ->set_dmamode to notify lldds of NCQ parameters
>       libsas: kill invocation of scsi_eh_finish_cmd from sas_ata_task_done
>       libsas: close error handling vs sas_ata_task_done() race
>       libsas: prevent double completion of scmds from eh
>       libsas: fix timeout vs completion race
>       libsas: let libata handle command timeouts
>       libsas: defer SAS_TASK_NEED_DEV_RESET commands to libata
>       libsas: use libata-eh-reset for sata rediscovery fis transmit
failures
>       libsas: perform sas-transport resets in shost->workq context
>       libsas: execute transport link resets with libata-eh via host
workqueue
>       libsas: sas_phy_enable via transport_sas_phy_reset
>       libsas: async ata-eh
>       libsas: poll for ata device readiness after reset
>       libsas: don't mark expanders as gone when a child device is removed
>       libsas: check for 'gone' expanders in smp_execute_task()
>       libsas: fix sas_find_local_phy(), take phy references
>       libsas: don't recover 'gone' devices in sas_ata_hard_reset()
>       isci: kill iphy->isci_port lookups
>       isci: kill isci_port->status
>       isci: fix interpretation of "hard" reset
>       isci: stop interpreting ->lldd_lu_reset() as an ata soft-reset
>       isci: ->lldd_ata_check_ready handler
>       isci: remove bus and reset handlers
>       isci: remove IDEV_EH hack to disable "discovery-time" ata resets
>       libsas: pre-clean commands that won the eh vs completion race
>       libsas: feed the scsi_block_when_processing_errors() meter
>       libsas: mark all domain devices gone if root port disappears
>       libsas: close scsi_remove_target() vs libata-eh race
>       libsas: fix mixed topology recovery
>       libsas: route local link resets through ata-eh
>       libsas: fix sas_unregister_ports vs sas_drain_work
>       libsas: improve ata debug statements
>       libsas: fix sas port naming
>       libsas: let libata recover links that fail to transmit initial
sig-fis
>       libsas: delete device on sas address changed
>       libsas: restore scan order
>       libsas: async ata scanning
> 
> Jeff Skirvin (2):
>       libsas: Remove redundant phy state notification calls.
>       libsas: add mutex for SMP task execution
> 
> Maciej Trela (1):
>       libsas: kill spurious sas_put_device
> 
>  Documentation/scsi/libsas.txt       |   15 -
>  drivers/ata/libata-core.c           |   34 +-
>  drivers/ata/libata-eh.c             |    1 +
>  drivers/ata/libata-scsi.c           |   13 +
>  drivers/ata/libata.h                |    2 +-
>  drivers/scsi/aic94xx/aic94xx.h      |    2 +
>  drivers/scsi/aic94xx/aic94xx_dev.c  |   38 +-
>  drivers/scsi/aic94xx/aic94xx_init.c |    6 +-
>  drivers/scsi/aic94xx/aic94xx_tmf.c  |    9 +-
>  drivers/scsi/isci/host.c            |    8 +-
>  drivers/scsi/isci/host.h            |   19 +-
>  drivers/scsi/isci/init.c            |   14 +-
>  drivers/scsi/isci/phy.c             |   18 +-
>  drivers/scsi/isci/phy.h             |    1 -
>  drivers/scsi/isci/port.c            |  217 +++++-----
>  drivers/scsi/isci/port.h            |   11 +-
>  drivers/scsi/isci/remote_device.c   |   32 +-
>  drivers/scsi/isci/remote_device.h   |    7 +-
>  drivers/scsi/isci/request.c         |  198 +--------
>  drivers/scsi/isci/request.h         |    9 +-
>  drivers/scsi/isci/task.c            |  158 ++------
>  drivers/scsi/isci/task.h            |   40 --
>  drivers/scsi/libsas/sas_ata.c       |  818
> +++++++++++++++++------------------
>  drivers/scsi/libsas/sas_discover.c  |  204 +++++++--
>  drivers/scsi/libsas/sas_event.c     |   96 ++++-
>  drivers/scsi/libsas/sas_expander.c  |  304 +++++++++-----
>  drivers/scsi/libsas/sas_host_smp.c  |   11 +-
>  drivers/scsi/libsas/sas_init.c      |  211 ++++++++-
>  drivers/scsi/libsas/sas_internal.h  |   80 +++--
>  drivers/scsi/libsas/sas_phy.c       |   12 +-
>  drivers/scsi/libsas/sas_port.c      |   30 +-
>  drivers/scsi/libsas/sas_scsi_host.c |  354 +++++++---------
>  drivers/scsi/mvsas/mv_init.c        |    2 -
>  drivers/scsi/mvsas/mv_sas.c         |   11 +-
>  drivers/scsi/pm8001/pm8001_init.c   |    2 -
>  drivers/scsi/pm8001/pm8001_sas.c    |   29 +-
>  drivers/scsi/scsi_transport_sas.c   |   59 +++-
>  include/linux/libata.h              |    2 +
>  include/scsi/libsas.h               |   70 ++--
>  include/scsi/sas.h                  |    4 +-
>  include/scsi/sas_ata.h              |   44 ++-
>  include/scsi/scsi_transport_sas.h   |   12 +-
>  42 files changed, 1686 insertions(+), 1521 deletions(-)
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux