[lkml]   [2002]   [Sep]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subjectend_request error procedure in 2.5?
Can someone tell me why this block end_request routine works fine with a
request that isn't errored, but locks the machine a milisecond or two
later if the request is marked for erroring?

call as

end_request( req, (req->errors == 0) ? 1 : 0 );

static void end_request(struct request *req, int uptodate) {
struct bio *bio;
while ((bio = req->bio) != NULL) {
req->bio = bio->bi_next;
bio->bi_next = NULL;
bio_endio(bio, uptodate);

It works fine except on error. Kernel 2.5.31. I understand that
put_request adds the request back to a free list (if gotten from there
via get_request). The request is ordinary, except out of range ...
it's produced by an e2fsck of the device when the device itself is
unformatted, and the out of range request gets passed to the driver and
is errored there, and "kapow" ..

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:28    [W:0.068 / U:16.728 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site