|
@@ -372,7 +372,7 @@ static int cdrom_log_sense(ide_drive_t *drive, struct request *rq,
|
|
{
|
|
{
|
|
int log = 0;
|
|
int log = 0;
|
|
|
|
|
|
- if (!sense || !rq || (rq->flags & REQ_QUIET))
|
|
|
|
|
|
+ if (!sense || !rq || (rq->cmd_flags & REQ_QUIET))
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
switch (sense->sense_key) {
|
|
switch (sense->sense_key) {
|
|
@@ -597,7 +597,7 @@ static void cdrom_prepare_request(ide_drive_t *drive, struct request *rq)
|
|
struct cdrom_info *cd = drive->driver_data;
|
|
struct cdrom_info *cd = drive->driver_data;
|
|
|
|
|
|
ide_init_drive_cmd(rq);
|
|
ide_init_drive_cmd(rq);
|
|
- rq->flags = REQ_PC;
|
|
|
|
|
|
+ rq->cmd_type = REQ_TYPE_BLOCK_PC;
|
|
rq->rq_disk = cd->disk;
|
|
rq->rq_disk = cd->disk;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -617,7 +617,7 @@ static void cdrom_queue_request_sense(ide_drive_t *drive, void *sense,
|
|
rq->cmd[0] = GPCMD_REQUEST_SENSE;
|
|
rq->cmd[0] = GPCMD_REQUEST_SENSE;
|
|
rq->cmd[4] = rq->data_len = 18;
|
|
rq->cmd[4] = rq->data_len = 18;
|
|
|
|
|
|
- rq->flags = REQ_SENSE;
|
|
|
|
|
|
+ rq->cmd_type = REQ_TYPE_SENSE;
|
|
|
|
|
|
/* NOTE! Save the failed command in "rq->buffer" */
|
|
/* NOTE! Save the failed command in "rq->buffer" */
|
|
rq->buffer = (void *) failed_command;
|
|
rq->buffer = (void *) failed_command;
|
|
@@ -630,10 +630,10 @@ static void cdrom_end_request (ide_drive_t *drive, int uptodate)
|
|
struct request *rq = HWGROUP(drive)->rq;
|
|
struct request *rq = HWGROUP(drive)->rq;
|
|
int nsectors = rq->hard_cur_sectors;
|
|
int nsectors = rq->hard_cur_sectors;
|
|
|
|
|
|
- if ((rq->flags & REQ_SENSE) && uptodate) {
|
|
|
|
|
|
+ if (blk_sense_request(rq) && uptodate) {
|
|
/*
|
|
/*
|
|
- * For REQ_SENSE, "rq->buffer" points to the original failed
|
|
|
|
- * request
|
|
|
|
|
|
+ * For REQ_TYPE_SENSE, "rq->buffer" points to the original
|
|
|
|
+ * failed request
|
|
*/
|
|
*/
|
|
struct request *failed = (struct request *) rq->buffer;
|
|
struct request *failed = (struct request *) rq->buffer;
|
|
struct cdrom_info *info = drive->driver_data;
|
|
struct cdrom_info *info = drive->driver_data;
|
|
@@ -706,17 +706,17 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
- if (rq->flags & REQ_SENSE) {
|
|
|
|
|
|
+ if (blk_sense_request(rq)) {
|
|
/* We got an error trying to get sense info
|
|
/* We got an error trying to get sense info
|
|
from the drive (probably while trying
|
|
from the drive (probably while trying
|
|
to recover from a former error). Just give up. */
|
|
to recover from a former error). Just give up. */
|
|
|
|
|
|
- rq->flags |= REQ_FAILED;
|
|
|
|
|
|
+ rq->cmd_flags |= REQ_FAILED;
|
|
cdrom_end_request(drive, 0);
|
|
cdrom_end_request(drive, 0);
|
|
ide_error(drive, "request sense failure", stat);
|
|
ide_error(drive, "request sense failure", stat);
|
|
return 1;
|
|
return 1;
|
|
|
|
|
|
- } else if (rq->flags & (REQ_PC | REQ_BLOCK_PC)) {
|
|
|
|
|
|
+ } else if (blk_pc_request(rq)) {
|
|
/* All other functions, except for READ. */
|
|
/* All other functions, except for READ. */
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
|
|
|
|
@@ -724,7 +724,7 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
|
|
* if we have an error, pass back CHECK_CONDITION as the
|
|
* if we have an error, pass back CHECK_CONDITION as the
|
|
* scsi status byte
|
|
* scsi status byte
|
|
*/
|
|
*/
|
|
- if ((rq->flags & REQ_BLOCK_PC) && !rq->errors)
|
|
|
|
|
|
+ if (!rq->errors)
|
|
rq->errors = SAM_STAT_CHECK_CONDITION;
|
|
rq->errors = SAM_STAT_CHECK_CONDITION;
|
|
|
|
|
|
/* Check for tray open. */
|
|
/* Check for tray open. */
|
|
@@ -735,12 +735,12 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
|
|
cdrom_saw_media_change (drive);
|
|
cdrom_saw_media_change (drive);
|
|
/*printk("%s: media changed\n",drive->name);*/
|
|
/*printk("%s: media changed\n",drive->name);*/
|
|
return 0;
|
|
return 0;
|
|
- } else if (!(rq->flags & REQ_QUIET)) {
|
|
|
|
|
|
+ } else if (!(rq->cmd_flags & REQ_QUIET)) {
|
|
/* Otherwise, print an error. */
|
|
/* Otherwise, print an error. */
|
|
ide_dump_status(drive, "packet command error", stat);
|
|
ide_dump_status(drive, "packet command error", stat);
|
|
}
|
|
}
|
|
|
|
|
|
- rq->flags |= REQ_FAILED;
|
|
|
|
|
|
+ rq->cmd_flags |= REQ_FAILED;
|
|
|
|
|
|
/*
|
|
/*
|
|
* instead of playing games with moving completions around,
|
|
* instead of playing games with moving completions around,
|
|
@@ -881,7 +881,7 @@ static int cdrom_timer_expiry(ide_drive_t *drive)
|
|
wait = ATAPI_WAIT_PC;
|
|
wait = ATAPI_WAIT_PC;
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
- if (!(rq->flags & REQ_QUIET))
|
|
|
|
|
|
+ if (!(rq->cmd_flags & REQ_QUIET))
|
|
printk(KERN_INFO "ide-cd: cmd 0x%x timed out\n", rq->cmd[0]);
|
|
printk(KERN_INFO "ide-cd: cmd 0x%x timed out\n", rq->cmd[0]);
|
|
wait = 0;
|
|
wait = 0;
|
|
break;
|
|
break;
|
|
@@ -1124,7 +1124,7 @@ static ide_startstop_t cdrom_read_intr (ide_drive_t *drive)
|
|
if (rq->current_nr_sectors > 0) {
|
|
if (rq->current_nr_sectors > 0) {
|
|
printk (KERN_ERR "%s: cdrom_read_intr: data underrun (%d blocks)\n",
|
|
printk (KERN_ERR "%s: cdrom_read_intr: data underrun (%d blocks)\n",
|
|
drive->name, rq->current_nr_sectors);
|
|
drive->name, rq->current_nr_sectors);
|
|
- rq->flags |= REQ_FAILED;
|
|
|
|
|
|
+ rq->cmd_flags |= REQ_FAILED;
|
|
cdrom_end_request(drive, 0);
|
|
cdrom_end_request(drive, 0);
|
|
} else
|
|
} else
|
|
cdrom_end_request(drive, 1);
|
|
cdrom_end_request(drive, 1);
|
|
@@ -1456,7 +1456,7 @@ static ide_startstop_t cdrom_pc_intr (ide_drive_t *drive)
|
|
printk ("%s: cdrom_pc_intr: data underrun %d\n",
|
|
printk ("%s: cdrom_pc_intr: data underrun %d\n",
|
|
drive->name, pc->buflen);
|
|
drive->name, pc->buflen);
|
|
*/
|
|
*/
|
|
- rq->flags |= REQ_FAILED;
|
|
|
|
|
|
+ rq->cmd_flags |= REQ_FAILED;
|
|
cdrom_end_request(drive, 0);
|
|
cdrom_end_request(drive, 0);
|
|
}
|
|
}
|
|
return ide_stopped;
|
|
return ide_stopped;
|
|
@@ -1509,7 +1509,7 @@ static ide_startstop_t cdrom_pc_intr (ide_drive_t *drive)
|
|
rq->data += thislen;
|
|
rq->data += thislen;
|
|
rq->data_len -= thislen;
|
|
rq->data_len -= thislen;
|
|
|
|
|
|
- if (rq->flags & REQ_SENSE)
|
|
|
|
|
|
+ if (blk_sense_request(rq))
|
|
rq->sense_len += thislen;
|
|
rq->sense_len += thislen;
|
|
} else {
|
|
} else {
|
|
confused:
|
|
confused:
|
|
@@ -1517,7 +1517,7 @@ confused:
|
|
"appears confused (ireason = 0x%02x). "
|
|
"appears confused (ireason = 0x%02x). "
|
|
"Trying to recover by ending request.\n",
|
|
"Trying to recover by ending request.\n",
|
|
drive->name, ireason);
|
|
drive->name, ireason);
|
|
- rq->flags |= REQ_FAILED;
|
|
|
|
|
|
+ rq->cmd_flags |= REQ_FAILED;
|
|
cdrom_end_request(drive, 0);
|
|
cdrom_end_request(drive, 0);
|
|
return ide_stopped;
|
|
return ide_stopped;
|
|
}
|
|
}
|
|
@@ -1546,7 +1546,7 @@ static ide_startstop_t cdrom_do_packet_command (ide_drive_t *drive)
|
|
struct cdrom_info *info = drive->driver_data;
|
|
struct cdrom_info *info = drive->driver_data;
|
|
|
|
|
|
info->dma = 0;
|
|
info->dma = 0;
|
|
- rq->flags &= ~REQ_FAILED;
|
|
|
|
|
|
+ rq->cmd_flags &= ~REQ_FAILED;
|
|
len = rq->data_len;
|
|
len = rq->data_len;
|
|
|
|
|
|
/* Start sending the command to the drive. */
|
|
/* Start sending the command to the drive. */
|
|
@@ -1558,7 +1558,7 @@ static int cdrom_queue_packet_command(ide_drive_t *drive, struct request *rq)
|
|
{
|
|
{
|
|
struct request_sense sense;
|
|
struct request_sense sense;
|
|
int retries = 10;
|
|
int retries = 10;
|
|
- unsigned int flags = rq->flags;
|
|
|
|
|
|
+ unsigned int flags = rq->cmd_flags;
|
|
|
|
|
|
if (rq->sense == NULL)
|
|
if (rq->sense == NULL)
|
|
rq->sense = &sense;
|
|
rq->sense = &sense;
|
|
@@ -1567,14 +1567,14 @@ static int cdrom_queue_packet_command(ide_drive_t *drive, struct request *rq)
|
|
do {
|
|
do {
|
|
int error;
|
|
int error;
|
|
unsigned long time = jiffies;
|
|
unsigned long time = jiffies;
|
|
- rq->flags = flags;
|
|
|
|
|
|
+ rq->cmd_flags = flags;
|
|
|
|
|
|
error = ide_do_drive_cmd(drive, rq, ide_wait);
|
|
error = ide_do_drive_cmd(drive, rq, ide_wait);
|
|
time = jiffies - time;
|
|
time = jiffies - time;
|
|
|
|
|
|
/* FIXME: we should probably abort/retry or something
|
|
/* FIXME: we should probably abort/retry or something
|
|
* in case of failure */
|
|
* in case of failure */
|
|
- if (rq->flags & REQ_FAILED) {
|
|
|
|
|
|
+ if (rq->cmd_flags & REQ_FAILED) {
|
|
/* The request failed. Retry if it was due to a unit
|
|
/* The request failed. Retry if it was due to a unit
|
|
attention status
|
|
attention status
|
|
(usually means media was changed). */
|
|
(usually means media was changed). */
|
|
@@ -1596,10 +1596,10 @@ static int cdrom_queue_packet_command(ide_drive_t *drive, struct request *rq)
|
|
}
|
|
}
|
|
|
|
|
|
/* End of retry loop. */
|
|
/* End of retry loop. */
|
|
- } while ((rq->flags & REQ_FAILED) && retries >= 0);
|
|
|
|
|
|
+ } while ((rq->cmd_flags & REQ_FAILED) && retries >= 0);
|
|
|
|
|
|
/* Return an error if the command failed. */
|
|
/* Return an error if the command failed. */
|
|
- return (rq->flags & REQ_FAILED) ? -EIO : 0;
|
|
|
|
|
|
+ return (rq->cmd_flags & REQ_FAILED) ? -EIO : 0;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -1963,7 +1963,7 @@ static ide_startstop_t cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)
|
|
{
|
|
{
|
|
struct cdrom_info *info = drive->driver_data;
|
|
struct cdrom_info *info = drive->driver_data;
|
|
|
|
|
|
- rq->flags |= REQ_QUIET;
|
|
|
|
|
|
+ rq->cmd_flags |= REQ_QUIET;
|
|
|
|
|
|
info->dma = 0;
|
|
info->dma = 0;
|
|
|
|
|
|
@@ -2023,11 +2023,11 @@ ide_do_rw_cdrom (ide_drive_t *drive, struct request *rq, sector_t block)
|
|
}
|
|
}
|
|
info->last_block = block;
|
|
info->last_block = block;
|
|
return action;
|
|
return action;
|
|
- } else if (rq->flags & (REQ_PC | REQ_SENSE)) {
|
|
|
|
|
|
+ } else if (rq->cmd_type == REQ_TYPE_SENSE) {
|
|
return cdrom_do_packet_command(drive);
|
|
return cdrom_do_packet_command(drive);
|
|
- } else if (rq->flags & REQ_BLOCK_PC) {
|
|
|
|
|
|
+ } else if (blk_pc_request(rq)) {
|
|
return cdrom_do_block_pc(drive, rq);
|
|
return cdrom_do_block_pc(drive, rq);
|
|
- } else if (rq->flags & REQ_SPECIAL) {
|
|
|
|
|
|
+ } else if (blk_special_request(rq)) {
|
|
/*
|
|
/*
|
|
* right now this can only be a reset...
|
|
* right now this can only be a reset...
|
|
*/
|
|
*/
|
|
@@ -2105,7 +2105,7 @@ static int cdrom_check_status(ide_drive_t *drive, struct request_sense *sense)
|
|
|
|
|
|
req.sense = sense;
|
|
req.sense = sense;
|
|
req.cmd[0] = GPCMD_TEST_UNIT_READY;
|
|
req.cmd[0] = GPCMD_TEST_UNIT_READY;
|
|
- req.flags |= REQ_QUIET;
|
|
|
|
|
|
+ req.cmd_flags |= REQ_QUIET;
|
|
|
|
|
|
#if ! STANDARD_ATAPI
|
|
#if ! STANDARD_ATAPI
|
|
/* the Sanyo 3 CD changer uses byte 7 of TEST_UNIT_READY to
|
|
/* the Sanyo 3 CD changer uses byte 7 of TEST_UNIT_READY to
|
|
@@ -2207,7 +2207,7 @@ static int cdrom_read_capacity(ide_drive_t *drive, unsigned long *capacity,
|
|
req.cmd[0] = GPCMD_READ_CDVD_CAPACITY;
|
|
req.cmd[0] = GPCMD_READ_CDVD_CAPACITY;
|
|
req.data = (char *)&capbuf;
|
|
req.data = (char *)&capbuf;
|
|
req.data_len = sizeof(capbuf);
|
|
req.data_len = sizeof(capbuf);
|
|
- req.flags |= REQ_QUIET;
|
|
|
|
|
|
+ req.cmd_flags |= REQ_QUIET;
|
|
|
|
|
|
stat = cdrom_queue_packet_command(drive, &req);
|
|
stat = cdrom_queue_packet_command(drive, &req);
|
|
if (stat == 0) {
|
|
if (stat == 0) {
|
|
@@ -2230,7 +2230,7 @@ static int cdrom_read_tocentry(ide_drive_t *drive, int trackno, int msf_flag,
|
|
req.sense = sense;
|
|
req.sense = sense;
|
|
req.data = buf;
|
|
req.data = buf;
|
|
req.data_len = buflen;
|
|
req.data_len = buflen;
|
|
- req.flags |= REQ_QUIET;
|
|
|
|
|
|
+ req.cmd_flags |= REQ_QUIET;
|
|
req.cmd[0] = GPCMD_READ_TOC_PMA_ATIP;
|
|
req.cmd[0] = GPCMD_READ_TOC_PMA_ATIP;
|
|
req.cmd[6] = trackno;
|
|
req.cmd[6] = trackno;
|
|
req.cmd[7] = (buflen >> 8);
|
|
req.cmd[7] = (buflen >> 8);
|
|
@@ -2531,7 +2531,7 @@ static int ide_cdrom_packet(struct cdrom_device_info *cdi,
|
|
req.timeout = cgc->timeout;
|
|
req.timeout = cgc->timeout;
|
|
|
|
|
|
if (cgc->quiet)
|
|
if (cgc->quiet)
|
|
- req.flags |= REQ_QUIET;
|
|
|
|
|
|
+ req.cmd_flags |= REQ_QUIET;
|
|
|
|
|
|
req.sense = cgc->sense;
|
|
req.sense = cgc->sense;
|
|
cgc->stat = cdrom_queue_packet_command(drive, &req);
|
|
cgc->stat = cdrom_queue_packet_command(drive, &req);
|
|
@@ -2629,7 +2629,8 @@ int ide_cdrom_reset (struct cdrom_device_info *cdi)
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
cdrom_prepare_request(drive, &req);
|
|
cdrom_prepare_request(drive, &req);
|
|
- req.flags = REQ_SPECIAL | REQ_QUIET;
|
|
|
|
|
|
+ req.cmd_type = REQ_TYPE_SPECIAL;
|
|
|
|
+ req.cmd_flags = REQ_QUIET;
|
|
ret = ide_do_drive_cmd(drive, &req, ide_wait);
|
|
ret = ide_do_drive_cmd(drive, &req, ide_wait);
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -3116,9 +3117,9 @@ static int ide_cdrom_prep_pc(struct request *rq)
|
|
|
|
|
|
static int ide_cdrom_prep_fn(request_queue_t *q, struct request *rq)
|
|
static int ide_cdrom_prep_fn(request_queue_t *q, struct request *rq)
|
|
{
|
|
{
|
|
- if (rq->flags & REQ_CMD)
|
|
|
|
|
|
+ if (blk_fs_request(rq))
|
|
return ide_cdrom_prep_fs(q, rq);
|
|
return ide_cdrom_prep_fs(q, rq);
|
|
- else if (rq->flags & REQ_BLOCK_PC)
|
|
|
|
|
|
+ else if (blk_pc_request(rq))
|
|
return ide_cdrom_prep_pc(rq);
|
|
return ide_cdrom_prep_pc(rq);
|
|
|
|
|
|
return 0;
|
|
return 0;
|