diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2007-04-25 13:42:27 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-05-01 17:06:03 -0700 |
commit | 3720eda544ece8fa5ade8c87e5f2cf2fb05b0ff5 (patch) | |
tree | ffd078d3143437b00350f78920df108b0490a32e /net/irda/timer.c | |
parent | ab02a65798ea8b940ea5645655238c778d4e4765 (diff) |
cfq-iosched: fix alias + front merge bug
There's a really rare and obscure bug in CFQ, that causes a crash in
cfq_dispatch_insert() due to rq == NULL. One example of that is seen
here:
http://lkml.org/lkml/2007/4/15/41
Neil correctly diagnosed the situation for how this can happen, read
that analysis here:
http://lkml.org/lkml/2007/4/25/57
This looks like it requires md to trigger, even though it should
potentially be possible to due with O_DIRECT (at least if you edit the
kernel and doctor some of the unplug calls).
The fix is to move the ->next_rq update to when we add a request to the
rbtree. Then we remove the possibility for a request to exist in the
rbtree code, but not have ->next_rq correctly updated.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'net/irda/timer.c')
0 files changed, 0 insertions, 0 deletions