• P
    ide: really restart pending and in-flight atapi dma · 502356ee
    Pavel Butsykin 提交于
    Restart of ATAPI DMA used to be unreachable, because the request to do
    so wasn't indicated in bus->error_status due to the lack of spare bits, and
    ide_restart_bh() would return early doing nothing.
    
    This patch makes use of the observation that not all bit combinations were
    possible in ->error_status. In particular, IDE_RETRY_READ only made sense
    together with IDE_RETRY_DMA or IDE_RETRY_PIO. This allows to re-use
    IDE_RETRY_READ alone as an indicator of ATAPI DMA restart request.
    
    To makes things more uniform, ATAPI DMA gets its own value for ->dma_cmd.
    As a means against confusion, macros are added to test the state of
    ->error_status.
    
    The patch fixes the restart of both in-flight and pending ATAPI DMA,
    following the scheme similar to that of IDE DMA.
    
    [Including a fixup patch:
    Message-id: 1460465594-15777-1-git-send-email-pbutsykin@virtuozzo.com
    --js]
    Signed-off-by: NPavel Butsykin <pbutsykin@virtuozzo.com>
    Signed-off-by: NDenis V. Lunev <den@openvz.org>
    Reviewed-by: NRoman Kagan <rkagan@virtuozzo.com>
    Reviewed-by: NJohn Snow <jsnow@redhat.com>
    Message-id: 1459924806-306-4-git-send-email-den@openvz.org
    Signed-off-by: NJohn Snow <jsnow@redhat.com>
    502356ee
atapi.c 40.6 KB