summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMartin Dalecki <dalecki@evision-ventures.com>2002-06-04 19:39:20 -0700
committerRussell King <rmk@flint.arm.linux.org.uk>2002-06-04 19:39:20 -0700
commit856dd13d08f3f292cf76729df0ac7cf740edacc6 (patch)
treeea3f980d1cd0f92c1bafec740b801b0cc45726e0 /include
parentea1e2d6259e83d6fae83473f7b90a683ec770322 (diff)
[PATCH] 2.5.20 IDE 85
- Work a bit on the automatic CRC error recovery handling. System still hangs. But one thing for sure - we don't have to use any specialized irq handler for it. - Since ioctl don't any longer submit requests to the queue without rq->special set, we can safely remove args_error handling from start_request. - Make REQ_SPECIAL usage in ide-floppy obvious. - Use REQ_SPECIAL everywhere instead of REQ_DRIVE_ACB. This is actually a bit dangerous but should work as far as I can see. - Unfold the now not REQ_SPECIAL specific dequeing part of ide_end_drive_cmd(). Turns out that we can thereafter remove the calls to ide_end_drice_cmd() at places where the request type isn't REQ_SPECIAL all any longer. (tcq.c) - After the above operation it turns out that there are just two places where ide_end_drive_cmd remains, namely: ata_error, task_no_data_intr drive_cmd_intr. We can avoid it by changing the logics in ata_error a slightly. So now just to cases remain where ide_end_drive_cmd remains used: drive_cmd_intr and task_no_data_intr. - Now looking a bit closer we can realize that drive_cmd_intr and task_no_data_intr can be easly merged together, since the usage of task_no_data_intr implied taskfile.sector_number == 0. - Use one single ata_special_intr function for the handling of interrupts submitted through ide_raw_cmd. - Move the remaining artefacts of ide_end_drive_cmd directly to ata_special_intr. Oh we don't need to check for REQ_SPECIAL any longer there, since the context is already known. - Set the ata_special_intr handler and command type directly inside ide_raw_taskfile to save code.
Diffstat (limited to 'include')
-rw-r--r--include/linux/blkdev.h5
-rw-r--r--include/linux/ide.h7
2 files changed, 2 insertions, 10 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index a3e1c02d6d63..c2645da2d975 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -81,13 +81,11 @@ enum rq_flag_bits {
/*
* for ATA/ATAPI devices
*/
- __REQ_DRIVE_ACB,
-
__REQ_PC, /* packet command (special) */
__REQ_BLOCK_PC, /* queued down pc from block layer */
__REQ_SENSE, /* sense retrival */
- __REQ_SPECIAL, /* driver special command (currently reset) */
+ __REQ_SPECIAL, /* driver suplied command */
__REQ_NR_BITS, /* stops here */
};
@@ -100,7 +98,6 @@ enum rq_flag_bits {
#define REQ_STARTED (1 << __REQ_STARTED)
#define REQ_DONTPREP (1 << __REQ_DONTPREP)
#define REQ_QUEUED (1 << __REQ_QUEUED)
-#define REQ_DRIVE_ACB (1 << __REQ_DRIVE_ACB)
#define REQ_PC (1 << __REQ_PC)
#define REQ_BLOCK_PC (1 << __REQ_BLOCK_PC)
#define REQ_SENSE (1 << __REQ_SENSE)
diff --git a/include/linux/ide.h b/include/linux/ide.h
index b5c4cdb9cedc..52a0d9b28915 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -654,11 +654,6 @@ typedef enum {
extern int ide_do_drive_cmd(struct ata_device *, struct request *, ide_action_t);
-/*
- * Clean up after success/failure of an explicit drive cmd.
- */
-extern void ide_end_drive_cmd(struct ata_device *, struct request *);
-
struct ata_taskfile {
struct hd_drive_task_hdr taskfile;
struct hd_drive_task_hdr hobfile;
@@ -695,7 +690,7 @@ static inline void ide_unmap_rq(struct request *rq, char *to,
bio_kunmap_irq(to, flags);
}
-extern ide_startstop_t task_no_data_intr(struct ata_device *, struct request *);
+extern ide_startstop_t ata_special_intr(struct ata_device *, struct request *);
extern int ide_raw_taskfile(struct ata_device *, struct ata_taskfile *);
extern void ide_fix_driveid(struct hd_driveid *id);