/[linux-patches]/genpatches-2.6/tags/2.6.14-6/1002_2_cfq-io-sched-fix.patch
Gentoo

Contents of /genpatches-2.6/tags/2.6.14-6/1002_2_cfq-io-sched-fix.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 233 - (show annotations) (download)
Thu Dec 15 16:43:31 2005 UTC (12 years, 11 months ago) by dsd
File size: 2718 byte(s)
2.6.14-6 release
1 From stable-bounces@linux.kernel.org Mon Oct 31 04:51:49 2005
2 Date: Mon, 31 Oct 2005 13:52:39 +0100
3 From: Jens Axboe <axboe@suse.de>
4 To: stable@kernel.org
5 Cc:
6 Subject: [PATCH] Oops on suspend after on-the-fly switch to anticipatory i/o scheduler - PowerBook5, 4
7
8 Paul Collins wrote:
9 >I boot with elevator=cfq (wanted to try the ionice stuff, never got
10 >around to it). Having decided to go back to the anticipatory
11 >scheduler, I did the following:
12 >
13 ># echo anticipatory > /sys/block/hda/queue/scheduler
14 ># echo anticipatory > /sys/block/hdc/queue/scheduler
15 >
16 >A while later I did 'sudo snooze', which produced the Oops below.
17 >
18 >Booting with elevator=as and then changing to cfq, sleep works fine.
19 >But if I resume and change back to anticipatory I get a similar Oops
20 >on the next 'sudo snooze'.
21 >
22 >
23 > Oops: kernel access of bad area, sig: 11 [#1]
24 > NIP: C01E1948 LR: C01D6A60 SP: EFBC5C20 REGS: efbc5b70 TRAP: 0300
25 >Not tainted
26 > MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
27 > DAR: 00000020, DSISR: 40000000
28 > TASK = efb012c0[1213] 'pmud' THREAD: efbc4000
29 > Last syscall: 54 GPR00: 00080000 EFBC5C20 EFB012C0 EFE9E044
30 >EFBC5CE8 00000002 00000000 C03B0000 GPR08: C046E5D8 00000000
31 >C03B47C8 E6A58360 22042422 1001E4DC 10010000 10000000 GPR16:
32 >10000000 10000000 10000000 7FE4EB40 10000000 10000000 10010000
33 >C0400000 GPR24: C0380000 00000002 00000002 C046E0C0 00000000
34 >00000002 00000000 EFBC5CE8 NIP [c01e1948] as_insert_request+0xa8/0x6b0
35 > LR [c01d6a60] __elv_add_request+0xa0/0x100
36 > Call trace:
37 > [c01d6a60] __elv_add_request+0xa0/0x100
38 > [c01ffb84] ide_do_drive_cmd+0xb4/0x190
39 > [c01fc1c0] generic_ide_suspend+0x80/0xa0
40 > [c01d4574] suspend_device+0x104/0x160
41 > [c01d47c0] device_suspend+0x120/0x330
42 > [c03f3b50] pmac_suspend_devices+0x50/0x1b0
43 > [c03f4294] pmu_ioctl+0x344/0x9b0
44 > [c0082aa4] do_ioctl+0x84/0x90
45 > [c0082b3c] vfs_ioctl+0x8c/0x460
46 > [c0082f50] sys_ioctl+0x40/0x80
47 > [c0004850] ret_from_syscall+0x0/0x4c
48
49 Don't clear ->elevator_data on exit, if we are switching queues we are
50 overwriting the data of the new io scheduler.
51
52 Signed-off-by: Jens Axboe <axboe@suse.de>
53 Signed-off-by: Chris Wright <chrisw@osdl.org>
54 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
55 ---
56 drivers/block/cfq-iosched.c | 4 +---
57 1 file changed, 1 insertion(+), 3 deletions(-)
58
59 --- linux-2.6.14.1.orig/drivers/block/cfq-iosched.c
60 +++ linux-2.6.14.1/drivers/block/cfq-iosched.c
61 @@ -2260,10 +2260,8 @@ static void cfq_put_cfqd(struct cfq_data
62 if (!atomic_dec_and_test(&cfqd->ref))
63 return;
64
65 - blk_put_queue(q);
66 -
67 cfq_shutdown_timer_wq(cfqd);
68 - q->elevator->elevator_data = NULL;
69 + blk_put_queue(q);
70
71 mempool_destroy(cfqd->crq_pool);
72 kfree(cfqd->crq_hash);

  ViewVC Help
Powered by ViewVC 1.1.20