diff options
author | Borislav Petkov <petkovbb@googlemail.com> | 2009-04-18 18:00:42 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-04-28 01:37:30 -0400 |
commit | 068753203e6cd085664a62e0fc0636e19b148a12 (patch) | |
tree | d3eec62f2ecd5524c89bb7c8d4f482e93a4cc196 /drivers/ide/ide-tape.c | |
parent | c457ce874a0f3dfa3d5e9f2309789f6f34e24325 (diff) |
ide-atapi: convert ide-{floppy,tape} to using preallocated sense buffer
Since we're issuing REQ_TYPE_SENSE now we need to allow those types of
rqs in the ->do_request callbacks. As a future improvement, sense_len
assignment might be unified across all ATAPI devices. Borislav to
check with specs and test.
As a result, get rid of ide_queue_pc_head() and
drive->request_sense_rq.
tj: * Init request sense ide_atapi_pc from sense request. In the
longer timer, it would probably better to fold
ide_create_request_sense_cmd() into its only current user -
ide_floppy_get_format_progress().
* ide_retry_pc() no longer takes @disk.
CC: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
CC: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'drivers/ide/ide-tape.c')
-rw-r--r-- | drivers/ide/ide-tape.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c index aadf53cfac6f..8324dfa78a3f 100644 --- a/drivers/ide/ide-tape.c +++ b/drivers/ide/ide-tape.c | |||
@@ -695,7 +695,7 @@ static ide_startstop_t idetape_media_access_finished(ide_drive_t *drive) | |||
695 | printk(KERN_ERR "ide-tape: %s: I/O error, ", | 695 | printk(KERN_ERR "ide-tape: %s: I/O error, ", |
696 | tape->name); | 696 | tape->name); |
697 | /* Retry operation */ | 697 | /* Retry operation */ |
698 | ide_retry_pc(drive, tape->disk); | 698 | ide_retry_pc(drive); |
699 | return ide_stopped; | 699 | return ide_stopped; |
700 | } | 700 | } |
701 | pc->error = 0; | 701 | pc->error = 0; |
@@ -752,7 +752,7 @@ static ide_startstop_t idetape_do_request(ide_drive_t *drive, | |||
752 | (unsigned long long)rq->sector, rq->nr_sectors, | 752 | (unsigned long long)rq->sector, rq->nr_sectors, |
753 | rq->current_nr_sectors); | 753 | rq->current_nr_sectors); |
754 | 754 | ||
755 | if (!blk_special_request(rq)) { | 755 | if (!(blk_special_request(rq) || blk_sense_request(rq))) { |
756 | /* We do not support buffer cache originated requests. */ | 756 | /* We do not support buffer cache originated requests. */ |
757 | printk(KERN_NOTICE "ide-tape: %s: Unsupported request in " | 757 | printk(KERN_NOTICE "ide-tape: %s: Unsupported request in " |
758 | "request queue (%d)\n", drive->name, rq->cmd_type); | 758 | "request queue (%d)\n", drive->name, rq->cmd_type); |
@@ -840,6 +840,9 @@ static ide_startstop_t idetape_do_request(ide_drive_t *drive, | |||
840 | BUG(); | 840 | BUG(); |
841 | 841 | ||
842 | out: | 842 | out: |
843 | /* prepare sense request for this command */ | ||
844 | ide_prep_sense(drive, rq); | ||
845 | |||
843 | memset(&cmd, 0, sizeof(cmd)); | 846 | memset(&cmd, 0, sizeof(cmd)); |
844 | 847 | ||
845 | if (rq_data_dir(rq)) | 848 | if (rq_data_dir(rq)) |