• Tejun Heo's avatar
    ide-atapi,tape,floppy: allow ->pc_callback() to change rq->data_len · eb6a61bb
    Tejun Heo authored
    Impact: allow residual count implementation in ->pc_callback()
    
    rq->data_len has two duties - carrying the number of input bytes on
    issue and carrying residual count back to the issuer on completion.
    ide-atapi completion callback ->pc_callback() is the right place to do
    this but currently ide-atapi depends on rq->data_len carrying the
    original request size after calling ->pc_callback() to complete the pc
    request.
    
    This patch makes ide_pc_intr(), ide_tape_issue_pc() and
    ide_floppy_issue_pc() cache length to complete before calling
    ->pc_callback() so that it can modify rq->data_len as necessary.
    
    Note: As using rq->data_len for two purposes can make cases like this
          incorrect in subtle ways, future changes will introduce separate
          field for residual count.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Jens Axboe <jens.axboe@oracle.com>
    eb6a61bb
ide-atapi.c 16.8 KB