• Tejun Heo's avatar
    ide: dequeue in-flight request · 8f6205cd
    Tejun Heo authored
    ide generally has single request in flight and tracks it using
    hwif->rq and all state handlers follow the following convention.
    
    * ide_started is returned if the request is in flight.
    
    * ide_stopped is returned if the queue needs to be restarted.  The
      request might or might not have been processed fully or partially.
    
    * hwif->rq is set to NULL, when an issued request completes.
    
    So, dequeueing model can be implemented by dequeueing after fetch,
    requeueing if hwif->rq isn't NULL on ide_stopped return and doing
    about the same thing on completion / port unlock paths.  These changes
    can be made in ide-io proper.
    
    In addition to the above main changes, the following updates are
    necessary.
    
    * ide-cd shouldn't dequeue a request when issuing REQUEST SENSE for it
      as the request is already dequeued.
    
    * ide-atapi uses request queue as stack when issuing REQUEST SENSE to
      put the REQUEST SENSE in front of the failed request.  This now
      needs to be done using requeueing.
    
    [ Impact: dequeue in-flight request ]
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    Cc: Borislav Petkov <petkovbb@googlemail.com>
    Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    8f6205cd
ide-io.c 24 KB