summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2003-05-29 20:55:02 -0700
committerJens Axboe <axboe@suse.de>2003-05-29 20:55:02 -0700
commit4303cc87fde3ec2a35d9c1eef6b429eb0b38c8aa (patch)
tree14f1ab9ca8144b5a33cd10bbe11eff393877f610
parentba094e847570bf7c18dcb5d7b44a4a8dac67ce00 (diff)
[PATCH] ide-cd buglets
Assorted small ide-cd fixes, found and fixed by Andy Polyakov <appro@fy.chalmers.se>. - CHECK_CONDITION really wants to be SAM_STAT_CHECK_CONDITION, the damn bit shift by one bit again - Set sense_len correctly - Do post_transform() on the right buffer.
-rw-r--r--drivers/ide/ide-cd.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index f4700ed0b654..b26b6ac8acfc 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -666,8 +666,10 @@ static void cdrom_end_request (ide_drive_t *drive, int uptodate)
struct cdrom_info *info = drive->driver_data;
void *sense = &info->sense_data;
- if (failed && failed->sense)
+ if (failed && failed->sense) {
sense = failed->sense;
+ failed->sense_len = rq->sense_len;
+ }
cdrom_analyze_sense_data(drive, failed, sense);
}
@@ -723,7 +725,7 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
* scsi status byte
*/
if ((rq->flags & REQ_BLOCK_PC) && !rq->errors)
- rq->errors = CHECK_CONDITION;
+ rq->errors = SAM_STAT_CHECK_CONDITION;
/* Check for tray open. */
if (sense_key == NOT_READY) {
@@ -1609,11 +1611,13 @@ static inline int cdrom_write_check_ireason(ide_drive_t *drive, int len, int ire
static void post_transform_command(struct request *req)
{
- char *ibuf = req->buffer;
+ char *ibuf = req->data;
u8 *c = req->cmd;
if (!blk_pc_request(req))
return;
+ if (!ibuf)
+ return;
/*
* set ansi-revision and response data as atapi