corruption with mtdblock
David Woodhouse
dwmw2 at infradead.org
Mon Nov 6 10:19:47 EST 2000
nico at cam.org said:
> Nope. The only place where the queue can be plugged is:
> if (list_empty(head)) {
> q->plug_device_fn(q, bh->b_rdev); /* is atomic */
> Therefore the queue can't be plugged until we emptied it.
But it starts off empty - so doesn't it get plugged the first time a
request is added? But it doesn't actually bite us until requests are merged
- when we do 'cat /dev/mtdblock0' or massive writes.
> To be sure I tried to disable plugging by providing a dummy plug
> function that does nothing. No difference.
Ah. If something is mucking with the request at the head of the queue while
(q->head_active && !q->plugged) then I think that has to be a kernel bug.
Just before the end_request() in mtdblock_handle_request(), can you put in
a sanity check for req->bh->b_end_io? If it's not a sane value, can you
print the current values of q->head_active and q->plugged?
--
dwmw2
To unsubscribe, send "unsubscribe mtd" to majordomo at infradead.org
More information about the linux-mtd
mailing list