Files
kernel_arpi/include/linux
Bartlomiej Zolnierkiewicz 395d8ef5be ide-disk: fix flush requests (take 2)
commit 813a0eb233
Author: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Date:   Fri Jan 25 22:17:10 2008 +0100

    ide: switch idedisk_prepare_flush() to use REQ_TYPE_ATA_TASKFILE requests

...

broke flush requests.

Allocating IDE command structure on the stack for flush requests is not
a very brilliant idea:

- idedisk_prepare_flush() only prepares the request and it doesn't wait
  for it to be completed

- there are can be multiple flush requests queued in the queue

Fix the problem (per hints from James Bottomley) by:
- dynamically allocating ide_task_t instance using kmalloc(..., GFP_ATOMIC)
- adding new taskfile flag (IDE_TFLAG_DYN)
- calling kfree() in ide_end_drive_command() if IDE_TFLAG_DYN is set
  (while at it rename 'args' to 'task' and fix whitespace damage)

[ This will be fixed properly before 2.6.25 but this bug is rather
  critical and the proper solution requires some more work + testing. ]

Thanks to Sebastian Siewior and Christoph Hellwig for reporting the
problem and testing patches (extra thanks to Sebastian for bisecting
it to the guilty commmit).

Tested-by: Sebastian Siewior <ide-bug@ml.breakpoint.cc>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Jens Axboe <jens.axboe@oracle.com>
Cc: Tejun Heo <htejun@gmail.com>
Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2008-02-11 00:32:14 +01:00
..
2008-01-28 14:54:13 -08:00
2008-02-06 10:41:15 -08:00
2008-02-07 08:42:23 -08:00
2008-02-05 09:44:13 -08:00
2007-12-26 19:36:35 -08:00
2008-02-05 03:20:13 -08:00
2008-02-06 10:41:02 -08:00
2008-01-23 05:24:15 -05:00
2008-01-28 15:00:14 -08:00
2008-02-08 12:41:03 +01:00
2008-01-29 21:55:15 +01:00
2008-01-28 14:54:10 -08:00
2008-02-03 17:45:46 +02:00
2008-01-28 23:21:18 +01:00
2008-01-28 23:21:18 +01:00
2007-12-06 17:40:19 -05:00
2008-01-25 21:08:02 +01:00
2008-01-30 13:31:10 +01:00
2008-02-03 17:45:46 +02:00
2008-02-03 15:42:53 +02:00
2008-02-08 02:09:56 +00:00
2008-02-08 09:22:24 -08:00
2008-02-07 08:42:30 -08:00
2008-01-28 23:21:18 +01:00
2008-02-03 17:45:46 +02:00
2007-10-29 07:41:32 -07:00
2007-11-29 09:24:54 -08:00
2008-01-25 21:08:33 +01:00
2008-02-03 15:42:53 +02:00
2008-01-28 14:51:22 +01:00
2008-02-05 09:44:19 -08:00
2008-01-30 13:30:27 +01:00
2008-02-07 20:39:44 -05:00
2008-01-27 18:14:52 +01:00
2008-02-11 00:32:14 +01:00
2008-02-01 16:13:16 -05:00
2008-01-28 15:08:27 -08:00
2008-01-28 15:07:58 -08:00
2008-01-28 15:07:57 -08:00
2008-01-28 14:55:09 -08:00
2008-01-28 14:55:09 -08:00
2007-12-05 05:37:32 -08:00
2008-02-06 22:39:45 +01:00
2008-02-06 10:41:02 -08:00
2008-01-31 19:28:20 -08:00
2008-02-08 09:22:42 -08:00
2008-01-28 23:58:27 -05:00
2008-02-06 10:41:21 -08:00
2008-02-08 09:22:29 -08:00
2007-11-05 15:12:32 -08:00
2007-11-29 09:24:52 -08:00
2008-01-08 16:10:35 -08:00
2008-01-24 20:40:05 -08:00
2008-01-25 21:08:34 +01:00
2007-10-25 15:02:50 +10:00
2008-01-30 13:33:13 +01:00
2008-02-03 17:45:46 +02:00
2008-02-06 10:41:01 -08:00
2008-02-09 11:08:33 -08:00
2008-02-08 09:22:42 -08:00
2008-01-28 23:21:18 +01:00
2008-02-08 09:22:31 -08:00
2008-01-28 14:56:29 -08:00
2008-01-28 14:54:18 -08:00
2008-01-30 02:06:08 -05:00
2008-02-06 16:29:59 +11:00
2008-02-05 09:44:19 -08:00
2007-12-06 17:35:41 -05:00
2008-02-02 11:32:01 -08:00
2008-02-10 12:52:46 -08:00
2008-02-02 02:44:34 +03:00
2008-02-07 23:11:56 -08:00
2008-02-03 17:45:46 +02:00
2008-02-06 10:41:20 -08:00
2008-02-08 09:22:31 -08:00
2008-02-08 09:22:26 -08:00
2008-01-25 21:08:24 +01:00
2008-01-25 21:08:24 +01:00
2008-02-05 09:44:22 -08:00
2008-01-30 13:31:47 +01:00
2008-02-08 09:22:41 -08:00
2008-01-31 19:26:46 -08:00
2007-11-29 09:24:54 -08:00
2008-02-07 08:42:34 -08:00
2008-02-07 08:42:30 -08:00
2008-02-08 09:22:41 -08:00
2008-02-08 09:22:27 -08:00
2008-01-02 13:04:48 -08:00
2008-01-02 13:04:48 -08:00
2008-02-03 17:45:46 +02:00
2008-01-25 21:08:33 +01:00
2008-01-31 19:28:30 -08:00
2008-01-24 00:47:27 -05:00
2008-01-30 13:31:20 +01:00
2008-01-30 13:31:20 +01:00
2008-02-08 09:22:31 -08:00
2008-01-25 21:08:34 +01:00
2008-02-07 08:42:34 -08:00
2008-02-05 09:44:07 -08:00
2008-02-01 17:45:14 +01:00
2008-02-07 08:42:16 -08:00
2008-02-08 09:22:34 -08:00
2008-02-08 09:22:36 -08:00
2008-01-24 20:40:26 -08:00
2007-12-26 19:36:35 -08:00
2007-10-23 13:47:31 -05:00
2008-02-04 23:50:13 +11:00
2008-02-04 23:50:03 +11:00
2008-02-04 23:50:02 +11:00
2008-02-04 23:50:03 +11:00
2008-02-06 10:41:03 -08:00
2008-02-05 09:44:07 -08:00
2008-02-03 15:42:53 +02:00