Mike Anderson wrote: > Jens Axboe wrote: >> On Fri, Dec 05 2008, Alan D. Brunelle wrote: >>> Commands needing to be retried (TUR in this case) would result in a block >>> I/O request being re-used, without being re-initialized properly. This >>> patch ensures that the requests are correctly re-initialized via >>> standard allocation means. >>> >>> Prior to this patch, boots were failing consistently as in: >>> http://lkml.org/lkml/2008/12/5/161 >>> >>> With this patch in place, the system is booting reliably. >>> >>> Signed-off-by: Alan D. Brunelle >>> Cc: Jens Axboe >> Looks good. >> >> Acked-by: Jens Axboe >> >> Perhaps James can push it in, I'm about to shutdown for the day... >> > > I know a failure was not detected in the hp_sw_start_stop function, but it > uses the same retry method as hp_sw_tur we should update this function > also. > > I made a quick scope of callers of blk_get_request and I did not see a > repeated of this retry usage model. I will make another pass to see if I > missed something. drivers/cdrom/cdrom.c:cdrom_read_cdda_bpc() is even worse: it gets one request, then sits in a while loop re-using the same request over and over again. Since blk_rq_init() is an exported symbol, perhaps instead of having the three callers realloc, it _may_ be sufficient to just have them call that before re-use? (See attached un-tested patch for an example.) Regards, Alan