Those locally allocated requests are foul, and the patch is a good cleanup,
but is a simpler fix more appropriate?
The bug is in end_that_request_last(), yes?
void end_that_request_last(struct request *req)
{
if (req->waiting != NULL)
complete(req->waiting);
req_finished_io(req);
blkdev_release_request(req);
}
Wouldn't it be simpler to just do:
void end_that_request_last(struct request *req)
{
struct completion *c = req->waiting;
req_finished_io(req);
blkdev_release_request(req);
if (c)
complete(c);
}
I vaguely seem to remember being told months ago why this wasn't right ;)
-
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/