• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/ide/

Lines Matching defs:rq

71 static int cdrom_log_sense(ide_drive_t *drive, struct request *rq,
76 if (!sense || !rq || (rq->cmd_flags & REQ_QUIET))
97 if (rq->cmd[0] == GPCMD_START_STOP_UNIT && sense->asc == 0x24)
296 static void cdrom_prepare_request(ide_drive_t *drive, struct request *rq)
300 ide_init_drive_cmd(rq);
301 rq->cmd_type = REQ_TYPE_ATA_PC;
302 rq->rq_disk = cd->disk;
309 struct request *rq = &info->request_sense_request;
315 cdrom_prepare_request(drive, rq);
317 rq->data = sense;
318 rq->cmd[0] = GPCMD_REQUEST_SENSE;
319 rq->cmd[4] = rq->data_len = 18;
321 rq->cmd_type = REQ_TYPE_SENSE;
323 /* NOTE! Save the failed command in "rq->buffer" */
324 rq->buffer = (void *) failed_command;
326 (void) ide_do_drive_cmd(drive, rq, ide_preempt);
331 struct request *rq = HWGROUP(drive)->rq;
332 int nsectors = rq->hard_cur_sectors;
334 if (blk_sense_request(rq) && uptodate) {
336 * For REQ_TYPE_SENSE, "rq->buffer" points to the original
339 struct request *failed = (struct request *) rq->buffer;
347 failed->sense_len = rq->sense_len;
368 if (!rq->current_nr_sectors && blk_fs_request(rq))
371 if (blk_pc_request(rq))
372 nsectors = (rq->data_len + 511) >> 9;
390 struct request *rq = HWGROUP(drive)->rq;
405 if (rq == NULL) {
406 printk("%s: missing rq in cdrom_decode_status\n", drive->name);
410 if (blk_sense_request(rq)) {
415 rq->cmd_flags |= REQ_FAILED;
420 } else if (blk_pc_request(rq) || rq->cmd_type == REQ_TYPE_ATA_PC) {
428 if (blk_pc_request(rq) && !rq->errors)
429 rq->errors = SAM_STAT_CHECK_CONDITION;
440 (rq->cmd[0] == GPCMD_START_STOP_UNIT)) {
448 } else if (!(rq->cmd_flags & REQ_QUIET)) {
453 rq->cmd_flags |= REQ_FAILED;
462 blkdev_dequeue_request(rq);
463 HWGROUP(drive)->rq = NULL;
466 cdrom_queue_request_sense(drive, rq->sense, rq);
470 } else if (blk_fs_request(rq)) {
475 if (blk_noretry_request(rq))
480 if (rq_data_dir(rq) == READ) {
492 if (!rq->errors)
494 rq->errors = 1;
517 if (++rq->errors > ERROR_MAX)
539 } else if ((++rq->errors > ERROR_MAX)) {
552 blkdev_dequeue_request(rq);
553 HWGROUP(drive)->rq = NULL;
556 cdrom_queue_request_sense(drive, rq->sense, rq);
566 blk_dump_rq_flags(rq, "ide-cd: bad rq");
576 struct request *rq = HWGROUP(drive)->rq;
585 switch (rq->cmd[0]) {
594 if (!(rq->cmd_flags & REQ_QUIET))
595 printk(KERN_INFO "ide-cd: cmd 0x%x timed out\n", rq->cmd[0]);
666 struct request *rq,
693 ide_set_handler(drive, handler, rq->timeout, cdrom_timer_expiry);
696 cmd_len = COMMAND_SIZE(rq->cmd[0]);
701 HWIF(drive)->atapi_output_bytes(drive, rq->cmd, cmd_len);
808 struct request *rq = HWGROUP(drive)->rq;
824 ide_end_request(drive, 1, rq->nr_sectors);
841 if (rq->current_nr_sectors > 0) {
843 drive->name, rq->current_nr_sectors);
844 rq->cmd_flags |= REQ_FAILED;
876 nskip = min_t(int, rq->current_nr_sectors - bio_cur_sectors(rq->bio), sectors_to_transfer);
883 --rq->current_nr_sectors;
894 if (rq->current_nr_sectors == 0 && rq->nr_sectors)
899 if (rq->current_nr_sectors == 0) {
900 cdrom_buffer_sectors(drive, rq->sector, sectors_to_transfer);
907 rq->current_nr_sectors);
912 HWIF(drive)->atapi_input_bytes(drive, rq->buffer, SECTOR_SIZE);
913 rq->buffer += SECTOR_SIZE;
914 --rq->nr_sectors;
915 --rq->current_nr_sectors;
916 ++rq->sector;
935 struct request *rq = HWGROUP(drive)->rq;
945 while (rq->nr_sectors > 0 &&
946 rq->sector >= info->sector_buffered &&
947 rq->sector < info->sector_buffered + info->nsectors_buffered) {
948 if (rq->current_nr_sectors == 0)
951 memcpy (rq->buffer,
953 (rq->sector - info->sector_buffered) * SECTOR_SIZE,
955 rq->buffer += SECTOR_SIZE;
956 --rq->current_nr_sectors;
957 --rq->nr_sectors;
958 ++rq->sector;
963 if (rq->nr_sectors == 0) {
969 if (rq->current_nr_sectors == 0)
976 if (rq->current_nr_sectors < bio_cur_sectors(rq->bio) &&
977 (rq->sector & (sectors_per_frame - 1))) {
979 drive->name, (long)rq->sector);
995 struct request *rq = HWGROUP(drive)->rq;
1008 nskip = rq->sector & (sectors_per_frame - 1);
1011 if (rq->current_nr_sectors != bio_cur_sectors(rq->bio) &&
1012 (rq->sector & (sectors_per_frame - 1))) {
1014 drive->name, rq->current_nr_sectors);
1018 rq->current_nr_sectors += nskip;
1022 rq->timeout = ATAPI_WAIT_PC;
1025 return cdrom_transfer_packet_command(drive, rq, &cdrom_read_intr);
1058 struct request *rq = HWGROUP(drive)->rq;
1059 sector_t frame = rq->sector;
1063 memset(rq->cmd, 0, sizeof(rq->cmd));
1064 rq->cmd[0] = GPCMD_SEEK;
1065 put_unaligned(cpu_to_be32(frame), (unsigned int *) &rq->cmd[2]);
1067 rq->timeout = ATAPI_WAIT_PC;
1068 return cdrom_transfer_packet_command(drive, rq, &cdrom_seek_intr);
1082 static void restore_request (struct request *rq)
1084 if (rq->buffer != bio_data(rq->bio)) {
1085 sector_t n = (rq->buffer - (char *) bio_data(rq->bio)) / SECTOR_SIZE;
1087 rq->buffer = bio_data(rq->bio);
1088 rq->nr_sectors += n;
1089 rq->sector -= n;
1091 rq->hard_cur_sectors = rq->current_nr_sectors = bio_cur_sectors(rq->bio);
1092 rq->hard_nr_sectors = rq->nr_sectors;
1093 rq->hard_sector = rq->sector;
1094 rq->q->prep_rq_fn(rq->q, rq);
1103 struct request *rq = HWGROUP(drive)->rq;
1110 restore_request(rq);
1121 if ((rq->sector & (sectors_per_frame - 1)) ||
1122 (rq->nr_sectors & (sectors_per_frame - 1)))
1137 struct request *rq = HWGROUP(drive)->rq;
1157 if (rq->cmd[0] == GPCMD_REQUEST_SENSE &&
1158 rq->data_len > 0 &&
1159 rq->data_len <= 5) {
1160 while (rq->data_len > 0) {
1161 *(unsigned char *)rq->data++ = 0;
1162 --rq->data_len;
1166 if (rq->data_len == 0)
1176 rq->cmd_flags |= REQ_FAILED;
1183 thislen = rq->data_len;
1188 if (!rq->data) {
1189 blk_dump_rq_flags(rq, "cdrom_pc_intr, write");
1193 HWIF(drive)->atapi_output_bytes(drive, rq->data, thislen);
1204 rq->data += thislen;
1205 rq->data_len -= thislen;
1210 if (!rq->data) {
1211 blk_dump_rq_flags(rq, "cdrom_pc_intr, write");
1215 HWIF(drive)->atapi_input_bytes(drive, rq->data, thislen);
1226 rq->data += thislen;
1227 rq->data_len -= thislen;
1229 if (blk_sense_request(rq))
1230 rq->sense_len += thislen;
1237 rq->cmd_flags |= REQ_FAILED;
1249 struct request *rq = HWGROUP(drive)->rq;
1251 if (!rq->timeout)
1252 rq->timeout = ATAPI_WAIT_PC;
1255 return cdrom_transfer_packet_command(drive, rq, &cdrom_pc_intr);
1262 struct request *rq = HWGROUP(drive)->rq;
1266 rq->cmd_flags &= ~REQ_FAILED;
1267 len = rq->data_len;
1274 static int cdrom_queue_packet_command(ide_drive_t *drive, struct request *rq)
1278 unsigned int flags = rq->cmd_flags;
1280 if (rq->sense == NULL)
1281 rq->sense = &sense;
1287 rq->cmd_flags = flags;
1289 error = ide_do_drive_cmd(drive, rq, ide_wait);
1292 if (rq->cmd_flags & REQ_FAILED) {
1296 struct request_sense *reqbuf = rq->sense;
1314 } while ((rq->cmd_flags & REQ_FAILED) && retries >= 0);
1317 return (rq->cmd_flags & REQ_FAILED) ? -EIO : 0;
1387 struct request *rq = HWGROUP(drive)->rq;
1414 end_that_request_chunk(rq, 1, rq->data_len);
1415 rq->data_len = 0;
1427 thislen = rq->data_len;
1440 if (rq_data_dir(rq) == WRITE) {
1462 int blen = blen = rq->data_len;
1463 char *ptr = rq->data;
1468 if (rq->bio) {
1469 ptr = bio_data(rq->bio);
1470 blen = bio_iovec(rq->bio)->bv_len;
1485 rq->data_len -= blen;
1487 if (rq->bio)
1488 end_that_request_chunk(rq, 1, blen);
1490 rq->data += blen;
1507 ide_set_handler(drive, cdrom_newpc_intr, rq->timeout, NULL);
1511 if (!rq->data_len)
1512 post_transform_command(rq);
1515 blkdev_dequeue_request(rq);
1516 end_that_request_last(rq, 1);
1517 HWGROUP(drive)->rq = NULL;
1529 struct request *rq = HWGROUP(drive)->rq;
1550 ide_end_request(drive, 1, rq->nr_sectors);
1567 if (rq->current_nr_sectors > 0) {
1569 drive->name, rq->current_nr_sectors);
1588 if (!rq->current_nr_sectors) {
1596 this_transfer = min_t(int, sectors_to_transfer, rq->current_nr_sectors);
1599 HWIF(drive)->atapi_output_bytes(drive, rq->buffer, SECTOR_SIZE);
1600 rq->buffer += SECTOR_SIZE;
1601 --rq->nr_sectors;
1602 --rq->current_nr_sectors;
1603 ++rq->sector;
1611 if (rq->current_nr_sectors == 0 && rq->nr_sectors)
1622 struct request *rq = HWGROUP(drive)->rq;
1624 rq->timeout = ATAPI_WAIT_PC;
1626 return cdrom_transfer_packet_command(drive, rq, cdrom_write_intr);
1629 static ide_startstop_t cdrom_start_write(ide_drive_t *drive, struct request *rq)
1638 if ((rq->nr_sectors & (sectors_per_frame - 1)) ||
1639 (rq->sector & (sectors_per_frame - 1))) {
1666 struct request *rq = HWGROUP(drive)->rq;
1668 if (!rq->timeout)
1669 rq->timeout = ATAPI_WAIT_PC;
1671 return cdrom_transfer_packet_command(drive, rq, cdrom_newpc_intr);
1674 static ide_startstop_t cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)
1678 rq->cmd_flags |= REQ_QUIET;
1685 if (rq->bio) {
1687 unsigned long addr = (unsigned long) page_address(bio_page(rq->bio));
1697 if ((rq->data_len & 15) || (addr & mask))
1702 return cdrom_start_packet_command(drive, rq->data_len, cdrom_do_newpc_cont);
1709 ide_do_rw_cdrom (ide_drive_t *drive, struct request *rq, sector_t block)
1714 if (blk_fs_request(rq)) {
1728 if ((rq_data_dir(rq) == READ) && IDE_LARGE_SEEK(info->last_block, block, IDECD_SEEK_THRESHOLD) && drive->dsc_overlap) {
1731 if (rq_data_dir(rq) == READ)
1734 action = cdrom_start_write(drive, rq);
1738 } else if (rq->cmd_type == REQ_TYPE_SENSE ||
1739 rq->cmd_type == REQ_TYPE_ATA_PC) {
1741 } else if (blk_pc_request(rq)) {
1742 return cdrom_do_block_pc(drive, rq);
1743 } else if (blk_special_request(rq)) {
1751 blk_dump_rq_flags(rq, "ide-cd bad flags");
2769 static int ide_cdrom_prep_fs(request_queue_t *q, struct request *rq)
2772 long block = (long)rq->hard_sector / (hard_sect >> 9);
2773 unsigned long blocks = rq->hard_nr_sectors / (hard_sect >> 9);
2775 memset(rq->cmd, 0, sizeof(rq->cmd));
2777 if (rq_data_dir(rq) == READ)
2778 rq->cmd[0] = GPCMD_READ_10;
2780 rq->cmd[0] = GPCMD_WRITE_10;
2785 rq->cmd[2] = (block >> 24) & 0xff;
2786 rq->cmd[3] = (block >> 16) & 0xff;
2787 rq->cmd[4] = (block >> 8) & 0xff;
2788 rq->cmd[5] = block & 0xff;
2793 rq->cmd[7] = (blocks >> 8) & 0xff;
2794 rq->cmd[8] = blocks & 0xff;
2795 rq->cmd_len = 10;
2803 static int ide_cdrom_prep_pc(struct request *rq)
2805 u8 *c = rq->cmd;
2818 rq->cmd_len = 10;
2828 rq->errors = ILLEGAL_REQUEST;
2835 static int ide_cdrom_prep_fn(request_queue_t *q, struct request *rq)
2837 if (blk_fs_request(rq))
2838 return ide_cdrom_prep_fs(q, rq);
2839 else if (blk_pc_request(rq))
2840 return ide_cdrom_prep_pc(rq);