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-floppy.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-floppy.c')
-rw-r--r-- | drivers/ide/ide-floppy.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c index 94600331a271..d3302cc891e4 100644 --- a/drivers/ide/ide-floppy.c +++ b/drivers/ide/ide-floppy.c | |||
@@ -263,7 +263,7 @@ static ide_startstop_t ide_floppy_do_request(ide_drive_t *drive, | |||
263 | } | 263 | } |
264 | pc = &floppy->queued_pc; | 264 | pc = &floppy->queued_pc; |
265 | idefloppy_create_rw_cmd(drive, pc, rq, (unsigned long)block); | 265 | idefloppy_create_rw_cmd(drive, pc, rq, (unsigned long)block); |
266 | } else if (blk_special_request(rq)) { | 266 | } else if (blk_special_request(rq) || blk_sense_request(rq)) { |
267 | pc = (struct ide_atapi_pc *)rq->special; | 267 | pc = (struct ide_atapi_pc *)rq->special; |
268 | } else if (blk_pc_request(rq)) { | 268 | } else if (blk_pc_request(rq)) { |
269 | pc = &floppy->queued_pc; | 269 | pc = &floppy->queued_pc; |
@@ -273,6 +273,8 @@ static ide_startstop_t ide_floppy_do_request(ide_drive_t *drive, | |||
273 | goto out_end; | 273 | goto out_end; |
274 | } | 274 | } |
275 | 275 | ||
276 | ide_prep_sense(drive, rq); | ||
277 | |||
276 | memset(&cmd, 0, sizeof(cmd)); | 278 | memset(&cmd, 0, sizeof(cmd)); |
277 | 279 | ||
278 | if (rq_data_dir(rq)) | 280 | if (rq_data_dir(rq)) |