diff options
| author | Martin Dalecki <dalecki@evision-ventures.com> | 2002-06-04 19:39:20 -0700 |
|---|---|---|
| committer | Russell King <rmk@flint.arm.linux.org.uk> | 2002-06-04 19:39:20 -0700 |
| commit | 856dd13d08f3f292cf76729df0ac7cf740edacc6 (patch) | |
| tree | ea3f980d1cd0f92c1bafec740b801b0cc45726e0 /include | |
| parent | ea1e2d6259e83d6fae83473f7b90a683ec770322 (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.h | 5 | ||||
| -rw-r--r-- | include/linux/ide.h | 7 |
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); |
