• Tejun Heo's avatar
    ide-cd,atapi: use bio for internal commands · 02e7cf8f
    Tejun Heo authored
    Impact: unify request data buffer handling
    
    rq->data is used mostly to pass kernel buffer through request queue
    without using bio.  There are only a couple of places which still do
    this in kernel and converting to bio isn't difficult.
    
    This patch converts ide-cd and atapi to use bio instead of rq->data
    for request sense and internal pc commands.  With previous change to
    unify sense request handling, this is relatively easily achieved by
    adding blk_rq_map_kern() during sense_rq prep and PC issue.
    
    If blk_rq_map_kern() fails for sense, the error is deferred till sense
    issue and aborts the failed command which triggered the sense.  Note
    that this is a slim possibility as sense prep is done on each command
    issue, so for the above condition to actually trigger, all preps since
    the last sense issue till the issue of the request which would require
    a sense should fail.
    
    * do_request functions might sleep now.  This should be okay as ide
      request_fn - do_ide_request() - is invoked only from make_request
      and plug work.  Make sure this is the case by adding might_sleep()
      to do_ide_request().
    
    * Functions which access the read sense data before the sense request
      is complete now should access bio_data(sense_rq->bio) as the sense
      buffer might have been copied during blk_rq_map_kern().
    
    * ide-tape updated to map sg.
    
    * cdrom_do_block_pc() now doesn't have to deal with REQ_TYPE_ATA_PC
      special case.  Simplified.
    
    * tp_ops->output/input_data path dropped from ide_pc_intr().
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    02e7cf8f
ide-io.c 23.6 KB