diff options
| author | Martin Dalecki <dalecki@evision-ventures.com> | 2002-04-15 23:28:45 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-04-15 23:28:45 -0700 |
| commit | 0c0a9d38acd9d73595b332dba0cda8126437bca3 (patch) | |
| tree | 86cf76a6ef964239764c00b6e0912623a82eb26a /include/linux | |
| parent | 87689e36a32102c9b0fc938d5a44e4c8d0f6256f (diff) | |
[PATCH] 2.5.8 IDE 37
- Don't abuse the sense field for passing failed packet_commands in struct
packet_command use a new field instead.
- Apply minor bits forwarded by Dave Jones to me.
- Fix ide_raw_taskfile() to flag the ar used there to be no subject of free_req
list management. This solvs the "hang after /proc/ide read" problem, which
was in fact a memory corruption problem.
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/ide.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/ide.h b/include/linux/ide.h index dafbf3d4fe17..cd424925cee8 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h @@ -975,6 +975,7 @@ extern void revalidate_drives(void); #define ATA_AR_QUEUED 1 #define ATA_AR_SETUP 2 #define ATA_AR_RETURN 4 +#define ATA_AR_STATIC 8 /* * if turn-around time is longer than this, halve queue depth @@ -1015,7 +1016,8 @@ static inline struct ata_request *ata_ar_get(ide_drive_t *drive) static inline void ata_ar_put(ide_drive_t *drive, struct ata_request *ar) { - list_add(&ar->ar_queue, &drive->free_req); + if (!(ar->ar_flags & ATA_AR_STATIC)) + list_add(&ar->ar_queue, &drive->free_req); if (ar->ar_flags & ATA_AR_QUEUED) { /* clear the tag */ |
