Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d655a03 authored by Borislav Petkov's avatar Borislav Petkov Committed by Bartlomiej Zolnierkiewicz
Browse files

ide-atapi: remove ide-scsi remnants from ide_pc_intr()



As a result, remove now unused ide_scsi_get_timeout and ide_scsi_expiry.

Signed-off-by: default avatarBorislav Petkov <petkovbb@gmail.com>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 5fe31104
Loading
Loading
Loading
Loading
+13 −55
Original line number Original line Diff line number Diff line
@@ -240,19 +240,6 @@ void ide_retry_pc(ide_drive_t *drive, struct gendisk *disk)
}
}
EXPORT_SYMBOL_GPL(ide_retry_pc);
EXPORT_SYMBOL_GPL(ide_retry_pc);


int ide_scsi_expiry(ide_drive_t *drive)
{
	struct ide_atapi_pc *pc = drive->pc;

	debug_log("%s called for %lu at %lu\n", __func__,
		  pc->scsi_cmd->serial_number, jiffies);

	pc->flags |= PC_FLAG_TIMEDOUT;

	return 0; /* we do not want the IDE subsystem to retry */
}
EXPORT_SYMBOL_GPL(ide_scsi_expiry);

int ide_cd_expiry(ide_drive_t *drive)
int ide_cd_expiry(ide_drive_t *drive)
{
{
	struct request *rq = HWGROUP(drive)->rq;
	struct request *rq = HWGROUP(drive)->rq;
@@ -309,21 +296,14 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
	struct request *rq = hwif->hwgroup->rq;
	struct request *rq = hwif->hwgroup->rq;
	const struct ide_tp_ops *tp_ops = hwif->tp_ops;
	const struct ide_tp_ops *tp_ops = hwif->tp_ops;
	xfer_func_t *xferfunc;
	xfer_func_t *xferfunc;
	ide_expiry_t *expiry;
	unsigned int timeout, temp;
	unsigned int timeout, temp;
	u16 bcount;
	u16 bcount;
	u8 stat, ireason, scsi = !!(drive->dev_flags & IDE_DFLAG_SCSI), dsc = 0;
	u8 stat, ireason, dsc = 0;


	debug_log("Enter %s - interrupt handler\n", __func__);
	debug_log("Enter %s - interrupt handler\n", __func__);


	if (scsi) {
		timeout = ide_scsi_get_timeout(pc);
		expiry = ide_scsi_expiry;
	} else {
	timeout = (drive->media == ide_floppy) ? WAIT_FLOPPY_CMD
	timeout = (drive->media == ide_floppy) ? WAIT_FLOPPY_CMD
					       : WAIT_TAPE_CMD;
					       : WAIT_TAPE_CMD;
		expiry = NULL;
	}


	if (pc->flags & PC_FLAG_TIMEDOUT) {
	if (pc->flags & PC_FLAG_TIMEDOUT) {
		drive->pc_callback(drive, 0);
		drive->pc_callback(drive, 0);
@@ -335,8 +315,8 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)


	if (pc->flags & PC_FLAG_DMA_IN_PROGRESS) {
	if (pc->flags & PC_FLAG_DMA_IN_PROGRESS) {
		if (hwif->dma_ops->dma_end(drive) ||
		if (hwif->dma_ops->dma_end(drive) ||
		    (drive->media == ide_tape && !scsi && (stat & ATA_ERR))) {
		    (drive->media == ide_tape && (stat & ATA_ERR))) {
			if (drive->media == ide_floppy && !scsi)
			if (drive->media == ide_floppy)
				printk(KERN_ERR "%s: DMA %s error\n",
				printk(KERN_ERR "%s: DMA %s error\n",
					drive->name, rq_data_dir(pc->rq)
					drive->name, rq_data_dir(pc->rq)
						     ? "write" : "read");
						     ? "write" : "read");
@@ -358,7 +338,7 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)


		local_irq_enable_in_hardirq();
		local_irq_enable_in_hardirq();


		if (drive->media == ide_tape && !scsi &&
		if (drive->media == ide_tape &&
		    (stat & ATA_ERR) && rq->cmd[0] == REQUEST_SENSE)
		    (stat & ATA_ERR) && rq->cmd[0] == REQUEST_SENSE)
			stat &= ~ATA_ERR;
			stat &= ~ATA_ERR;


@@ -366,11 +346,8 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
			/* Error detected */
			/* Error detected */
			debug_log("%s: I/O error\n", drive->name);
			debug_log("%s: I/O error\n", drive->name);


			if (drive->media != ide_tape || scsi) {
			if (drive->media != ide_tape)
				pc->rq->errors++;
				pc->rq->errors++;
				if (scsi)
					goto cmd_finished;
			}


			if (rq->cmd[0] == REQUEST_SENSE) {
			if (rq->cmd[0] == REQUEST_SENSE) {
				printk(KERN_ERR "%s: I/O error in request sense"
				printk(KERN_ERR "%s: I/O error in request sense"
@@ -386,7 +363,6 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
			/* queued, but not started */
			/* queued, but not started */
			return ide_stopped;
			return ide_stopped;
		}
		}
cmd_finished:
		pc->error = 0;
		pc->error = 0;


		if ((pc->flags & PC_FLAG_WAIT_FOR_DSC) && (stat & ATA_DSC) == 0)
		if ((pc->flags & PC_FLAG_WAIT_FOR_DSC) && (stat & ATA_DSC) == 0)
@@ -433,25 +409,8 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
						"us more data than expected - "
						"us more data than expected - "
						"discarding data\n",
						"discarding data\n",
						drive->name);
						drive->name);
				if (scsi)

					temp = pc->buf_size - pc->xferred;
				ide_pad_transfer(drive, 0, bcount);
				else
					temp = 0;
				if (temp) {
					if (pc->sg)
						drive->pc_io_buffers(drive, pc,
								     temp, 0);
					else
						tp_ops->input_data(drive, NULL,
							pc->cur_pos, temp);
					printk(KERN_ERR "%s: transferred %d of "
							"%d bytes\n",
							drive->name,
							temp, bcount);
				}
				pc->xferred += temp;
				pc->cur_pos += temp;
				ide_pad_transfer(drive, 0, bcount - temp);
				goto next_irq;
				goto next_irq;
			}
			}
			debug_log("The device wants to send us more data than "
			debug_log("The device wants to send us more data than "
@@ -461,14 +420,13 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
	} else
	} else
		xferfunc = tp_ops->output_data;
		xferfunc = tp_ops->output_data;


	if ((drive->media == ide_floppy && !scsi && !pc->buf) ||
	if ((drive->media == ide_floppy && !pc->buf) ||
	    (drive->media == ide_tape && !scsi && pc->bh) ||
	    (drive->media == ide_tape && pc->bh)) {
	    (scsi && pc->sg)) {
		int done = drive->pc_io_buffers(drive, pc, bcount,
		int done = drive->pc_io_buffers(drive, pc, bcount,
				  !!(pc->flags & PC_FLAG_WRITING));
				  !!(pc->flags & PC_FLAG_WRITING));


		/* FIXME: don't do partial completions */
		/* FIXME: don't do partial completions */
		if (drive->media == ide_floppy && !scsi)
		if (drive->media == ide_floppy)
			ide_end_request(drive, 1, done >> 9);
			ide_end_request(drive, 1, done >> 9);
	} else
	} else
		xferfunc(drive, NULL, pc->cur_pos, bcount);
		xferfunc(drive, NULL, pc->cur_pos, bcount);
@@ -481,7 +439,7 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
		  rq->cmd[0], bcount);
		  rq->cmd[0], bcount);
next_irq:
next_irq:
	/* And set the interrupt handler again */
	/* And set the interrupt handler again */
	ide_set_handler(drive, ide_pc_intr, timeout, expiry);
	ide_set_handler(drive, ide_pc_intr, timeout, NULL);
	return ide_started;
	return ide_started;
}
}


+0 −6
Original line number Original line Diff line number Diff line
@@ -1248,12 +1248,6 @@ int ide_set_media_lock(ide_drive_t *, struct gendisk *, int);
void ide_create_request_sense_cmd(ide_drive_t *, struct ide_atapi_pc *);
void ide_create_request_sense_cmd(ide_drive_t *, struct ide_atapi_pc *);
void ide_retry_pc(ide_drive_t *, struct gendisk *);
void ide_retry_pc(ide_drive_t *, struct gendisk *);


static inline unsigned long ide_scsi_get_timeout(struct ide_atapi_pc *pc)
{
	return max_t(unsigned long, WAIT_CMD, pc->timeout - jiffies);
}

int ide_scsi_expiry(ide_drive_t *);
int ide_cd_expiry(ide_drive_t *);
int ide_cd_expiry(ide_drive_t *);


int ide_cd_get_xferlen(struct request *);
int ide_cd_get_xferlen(struct request *);