diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-11 12:19:22 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-11 12:19:22 -0500 |
| commit | eedcdefb1ad75de9cc0889b247524be64cc244ef (patch) | |
| tree | 763c742fe2ef0f109af364fca266f022739ef8bc /drivers/ide/ide-disk.c | |
| parent | 9585ca02f8f9e844b64e7ff4d167ccc1390a99ab (diff) | |
| parent | 467390a2a50493332ddc21eb806094b1829c1161 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6:
ide: remove stale comment from ide-lib.c
ide: fix comment in init_irq()
ide: ide_init_port() bugfix
ide-disk: fix flush requests (take 2)
ide: introduce CONFIG_BLK_DEV_IDEDMA_SFF option
bast-ide: build fix
ide-tape: remove never executed code
ide: fix ide/legacy/gayle.c compilation
ide-cd: replace ntohs with generic byteorder macro be16_to_cpu
ide: remove stale version number
pdc202xx_old: always enable burst mode
palm_bk3710: use struct ide_port_info
palm_bk3710: port initialization/probing bugfix
palm_bk3710: fix ide_unregister() usage
palm_bk3710: ide_register_hw() -> ide_device_add()
ide: insert BUG_ON() into __ide_set_handler() (take 2)
cs5520: remove stale comment
ide: another possible ide panic fix for blk-end-request
Diffstat (limited to 'drivers/ide/ide-disk.c')
| -rw-r--r-- | drivers/ide/ide-disk.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c index 3c69822507e2..aed8b31ca561 100644 --- a/drivers/ide/ide-disk.c +++ b/drivers/ide/ide-disk.c | |||
| @@ -590,20 +590,24 @@ static ide_proc_entry_t idedisk_proc[] = { | |||
| 590 | static void idedisk_prepare_flush(struct request_queue *q, struct request *rq) | 590 | static void idedisk_prepare_flush(struct request_queue *q, struct request *rq) |
| 591 | { | 591 | { |
| 592 | ide_drive_t *drive = q->queuedata; | 592 | ide_drive_t *drive = q->queuedata; |
| 593 | ide_task_t task; | 593 | ide_task_t *task = kmalloc(sizeof(*task), GFP_ATOMIC); |
| 594 | 594 | ||
| 595 | memset(&task, 0, sizeof(task)); | 595 | /* FIXME: map struct ide_taskfile on rq->cmd[] */ |
| 596 | BUG_ON(task == NULL); | ||
| 597 | |||
| 598 | memset(task, 0, sizeof(*task)); | ||
| 596 | if (ide_id_has_flush_cache_ext(drive->id) && | 599 | if (ide_id_has_flush_cache_ext(drive->id) && |
| 597 | (drive->capacity64 >= (1UL << 28))) | 600 | (drive->capacity64 >= (1UL << 28))) |
| 598 | task.tf.command = WIN_FLUSH_CACHE_EXT; | 601 | task->tf.command = WIN_FLUSH_CACHE_EXT; |
| 599 | else | 602 | else |
| 600 | task.tf.command = WIN_FLUSH_CACHE; | 603 | task->tf.command = WIN_FLUSH_CACHE; |
| 601 | task.tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_OUT_DEVICE; | 604 | task->tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_OUT_DEVICE | |
| 602 | task.data_phase = TASKFILE_NO_DATA; | 605 | IDE_TFLAG_DYN; |
| 606 | task->data_phase = TASKFILE_NO_DATA; | ||
| 603 | 607 | ||
| 604 | rq->cmd_type = REQ_TYPE_ATA_TASKFILE; | 608 | rq->cmd_type = REQ_TYPE_ATA_TASKFILE; |
| 605 | rq->cmd_flags |= REQ_SOFTBARRIER; | 609 | rq->cmd_flags |= REQ_SOFTBARRIER; |
| 606 | rq->special = &task; | 610 | rq->special = task; |
| 607 | } | 611 | } |
| 608 | 612 | ||
| 609 | /* | 613 | /* |
