• T
    [PATCH] libata: check if port is disabled after internal command · 1f7dd3e9
    Tejun Heo 提交于
    libata core is being changed to disallow port/device disable on lower
    layers.  However, some LLDDs (sata_mv) directly disable port on
    command failure.  This patch makes ata_exec_internal() check whether a
    port got disabled after an internal command.  If it is, AC_ERR_SYSTEM
    is added to err_mask and the port gets re-enabled.
    
    As internal command failure results in device disable for drivers
    which don't implement newer reset/EH callbacks, this change results in
    no behavior change for single device per port controllers.  For
    slave-possible LLDDs which disable port on command failure, (1) such
    drivers don't exist currently, (2) issuing command to the other device
    of once-disabled port shouldn't result in catastrophe even if such
    driver exists.  So, this should be enough as a temporary measure.
    Signed-off-by: NTejun Heo <htejun@gmail.com>
    Signed-off-by: NJeff Garzik <jeff@garzik.org>
    1f7dd3e9
libata-core.c 119.0 KB