• Mikael Pettersson's avatar
    sata_promise: don't classify overruns as HSM errors · a2342f46
    Mikael Pettersson authored
    When sata_promise encounters an overrun or underrun error it
    translates that to a libata AC_ERR_HSM, causing a hard reset.
    Since over/under-runs were thought to be rare and transient,
    this action seemed reasonable.
    
    Unfortunately it turns out that the controller throws overrun
    errors when e.g. hal polls a CD or DVD writer containing blank
    media, causing long sequences of hard resets and retries before
    EH finally gives up.
    
    This patch updates sata_promise to classify over/under-runs as
    AC_ERR_OTHER instead. This allows libata EH and upper layers to
    retry or fail the operation as they see fit without the disruption
    caused by repeated hard resets.
    
    This fixes a problem using a DVD-RAM drive with sata_promise,
    reported by Thomas Schorpp. I also tested it on a DVD-RW drive.
    Signed-off-by: default avatarMikael Pettersson <mikpe@it.uu.se>
    Tested-by: default avatarthomas schorpp <thomas.schorpp@googlemail.com>
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    a2342f46
sata_promise.c 34.1 KB