public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* end_request error procedure in 2.5?
@ 2002-09-16 13:49 Peter T. Breuer
  2002-09-16 13:54 ` Jens Axboe
  0 siblings, 1 reply; 4+ messages in thread
From: Peter T. Breuer @ 2002-09-16 13:49 UTC (permalink / raw)
  To: linux kernel

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) {
             blk_finished_io(bio_sectors(bio));
             req->bio = bio->bi_next;
             bio->bi_next = NULL;
             bio_endio(bio, uptodate);
     }
     blk_put_request(req);
 }


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" ..

Peter

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2002-09-16 14:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-09-16 13:49 end_request error procedure in 2.5? Peter T. Breuer
2002-09-16 13:54 ` Jens Axboe
2002-09-16 14:19   ` Peter T. Breuer
2002-09-16 14:55     ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox