diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-29 23:07:43 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-29 23:07:43 -0400 |
| commit | 5a4f13fad1ab5bd08dea78fc55321e429d83cddf (patch) | |
| tree | 4474bf39b945b5a672e940080b17bdcbc04e1d15 /drivers/ide/ide-io.c | |
| parent | ec9c45d456fd7f1e400c75e6c8040d1deb9d4fff (diff) | |
| parent | e18ed145c7f556f1de8350c32739bf35b26df705 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6:
ide: memory overrun in ide_get_identity_ioctl() on big endian machines using ioctl HDIO_OBSOLETE_IDENTITY
ide: fix resume for CONFIG_BLK_DEV_IDEACPI=y
ide-cd: handle fragmented packet commands gracefully
ide: always kill the whole request on error
ide: fix ide_kill_rq() for special ide-{floppy,tape} driver requests
Diffstat (limited to 'drivers/ide/ide-io.c')
| -rw-r--r-- | drivers/ide/ide-io.c | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index 93b7886a2d6e..d5f3c77beadd 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
| @@ -112,16 +112,6 @@ void ide_complete_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 stat, u8 err) | |||
| 112 | } | 112 | } |
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | /* obsolete, blk_rq_bytes() should be used instead */ | ||
| 116 | unsigned int ide_rq_bytes(struct request *rq) | ||
| 117 | { | ||
| 118 | if (blk_pc_request(rq)) | ||
| 119 | return blk_rq_bytes(rq); | ||
| 120 | else | ||
| 121 | return blk_rq_cur_sectors(rq) << 9; | ||
| 122 | } | ||
| 123 | EXPORT_SYMBOL_GPL(ide_rq_bytes); | ||
| 124 | |||
| 125 | int ide_complete_rq(ide_drive_t *drive, int error, unsigned int nr_bytes) | 115 | int ide_complete_rq(ide_drive_t *drive, int error, unsigned int nr_bytes) |
| 126 | { | 116 | { |
| 127 | ide_hwif_t *hwif = drive->hwif; | 117 | ide_hwif_t *hwif = drive->hwif; |
| @@ -152,14 +142,14 @@ void ide_kill_rq(ide_drive_t *drive, struct request *rq) | |||
| 152 | 142 | ||
| 153 | if ((media == ide_floppy || media == ide_tape) && drv_req) { | 143 | if ((media == ide_floppy || media == ide_tape) && drv_req) { |
| 154 | rq->errors = 0; | 144 | rq->errors = 0; |
| 155 | ide_complete_rq(drive, 0, blk_rq_bytes(rq)); | ||
| 156 | } else { | 145 | } else { |
| 157 | if (media == ide_tape) | 146 | if (media == ide_tape) |
| 158 | rq->errors = IDE_DRV_ERROR_GENERAL; | 147 | rq->errors = IDE_DRV_ERROR_GENERAL; |
| 159 | else if (blk_fs_request(rq) == 0 && rq->errors == 0) | 148 | else if (blk_fs_request(rq) == 0 && rq->errors == 0) |
| 160 | rq->errors = -EIO; | 149 | rq->errors = -EIO; |
| 161 | ide_complete_rq(drive, -EIO, ide_rq_bytes(rq)); | ||
| 162 | } | 150 | } |
| 151 | |||
| 152 | ide_complete_rq(drive, -EIO, blk_rq_bytes(rq)); | ||
| 163 | } | 153 | } |
| 164 | 154 | ||
| 165 | static void ide_tf_set_specify_cmd(ide_drive_t *drive, struct ide_taskfile *tf) | 155 | static void ide_tf_set_specify_cmd(ide_drive_t *drive, struct ide_taskfile *tf) |
