Wait a minute - it might be readahead that gets killed.
If I remember correctly READA requests are dropped when failing to allocate
space for it - yes I did...
/usr/src/develop/linux/drivers/block/ll_rw_block.c:746 (earlier kernel)
/*
* Grab a free request from the freelist - if that is empty, check
* if we are doing read ahead and abort instead of blocking for
* a free slot.
*/
get_rq:
if (freereq) {
req = freereq;
freereq = NULL;
} else if ((req = get_request(q, rw)) == NULL) {
spin_unlock_irq(&io_request_lock);
if (rw_ahead)
goto end_io;
freereq = __get_request_wait(q, rw);
goto again;
}
Suppose we fail with get_request, the request is a rw_ahead,
it quits... => no read ahead.
Try to add a prink there...
if (rw_ahead) {
printk("Skipping readahead...\n");
goto end_io;
}
Can it be the problem???
/RogerL
-- Roger Larsson Skellefteċ Sweden- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/