Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 101214
b: refs/heads/master
c: 57279a7
h: refs/heads/master
v: v3
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Jul 15, 2008
1 parent be416ab commit 7fc90fd
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 28 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 931ee0dc5c69e8113233d21942681ab8fecde7f9
refs/heads/master: 57279a7a401eed844ded4346c5ff512e622ac1de
32 changes: 5 additions & 27 deletions trunk/drivers/ide/ide-io.c
Original file line number Diff line number Diff line change
Expand Up @@ -358,31 +358,6 @@ void ide_end_drive_cmd (ide_drive_t *drive, u8 stat, u8 err)

EXPORT_SYMBOL(ide_end_drive_cmd);

/**
* try_to_flush_leftover_data - flush junk
* @drive: drive to flush
*
* try_to_flush_leftover_data() is invoked in response to a drive
* unexpectedly having its DRQ_STAT bit set. As an alternative to
* resetting the drive, this routine tries to clear the condition
* by read a sector's worth of data from the drive. Of course,
* this may not help if the drive is *waiting* for data from *us*.
*/
static void try_to_flush_leftover_data (ide_drive_t *drive)
{
int i = (drive->mult_count ? drive->mult_count : 1) * SECTOR_WORDS;

if (drive->media != ide_disk)
return;
while (i > 0) {
u32 buffer[16];
u32 wcount = (i > 16) ? 16 : i;

i -= wcount;
drive->hwif->input_data(drive, NULL, buffer, wcount * 4);
}
}

static void ide_kill_rq(ide_drive_t *drive, struct request *rq)
{
if (rq->rq_disk) {
Expand Down Expand Up @@ -422,8 +397,11 @@ static ide_startstop_t ide_ata_error(ide_drive_t *drive, struct request *rq, u8
}

if ((stat & DRQ_STAT) && rq_data_dir(rq) == READ &&
(hwif->host_flags & IDE_HFLAG_ERROR_STOPS_FIFO) == 0)
try_to_flush_leftover_data(drive);
(hwif->host_flags & IDE_HFLAG_ERROR_STOPS_FIFO) == 0) {
int nsect = drive->mult_count ? drive->mult_count : 1;

ide_pad_transfer(drive, READ, nsect * SECTOR_SIZE);
}

if (rq->errors >= ERROR_MAX || blk_noretry_request(rq)) {
ide_kill_rq(drive, rq);
Expand Down

0 comments on commit 7fc90fd

Please sign in to comment.