[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <45E3E009.4050503@cs.wisc.edu>
Date: Tue, 27 Feb 2007 01:38:49 -0600
From: Swetha Krishnan <swetha@...wisc.edu>
To: linux-kernel@...r.kernel.org
Subject: Removing request from I/O scheduler queue
I'm using linux 2.6.12 within user-mode linux. I need to remove a
specific I/O request (that I have means to identify) from the I/O
scheduler queues instead of moving it to the driver dispatch queue.
To remove a request from the anticipatory scheduler's sort/fifo queues ,
I'm making a call to as_remove_queued_request(), from within
as_move_to_dispatch(). Before removing it, I invoke the
as_find_next_arq() function so that the scheduler can pick the next
request once this one is removed.
Everything works fine as far as the remove is concerned, but after
returning from the remove function and the end_io function that I call
on the request's bio field(a dummy end_io), the scheduler fails to
proceed with the next request chosen. I do check that if the next req
chosen is NULL, I exit from the as_move_to_dispatch() function but even
if I do this, the kernel panics after exiting from that function.
The chief points of panic from the (larger) dump, seems to be
a02277d0: [<a005eec3>] handle_IRQ_event+0x37/0x8c
a0227800: [<a005efaf>] __do_IRQ+0x97/0xe0
a0227820: [<a000defc>] do_IRQ+0x30/0x3c
Could you give me any pointers as to why this is happening? Is there any
additional cleanup that I need to do when I remove a request from the
scheduler's queues that as_remove_queued_request() does not already do?
I am rather new to linux I/O scheduling, so would be great if you could
let me know if there something basic I'm missing here.
Thanks,
Swetha.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists