Bartlomiej Zolnierkiewicz wrote: > On Thu, 3 Feb 2005 14:34:42 -0600, [EMAIL PROTECTED] > <[EMAIL PROTECTED]> wrote: >> >> Why does ide-cd use "DRIVER(drive)->end_request()" instead of >> "cdrom_end_request()" in the function ide_cdrom_error when it wants >> to end a request that's exceeded ERROR_MAX errors? (See code below.) > > Please always give the kernel version you are referring to. > ide_cdrom_error() is gone in 2.6.11-rc2. >
I was looking at 2.6.10, sorry about that. I'll have a look at 2.6.11-rc2. > If there is a bug, it is in ide_cdrom_driver declaration. > .end_request is not set to ide_cdrom_error. > I wondered about that. I'll give that a try. >> With certain requests (GET_CONFIGURATION (0x46), in particular), >> DRIVER(drive)->end_request() is not actually ending the request, >> because rq->bio is not NULL--but it also is not clearing rq->errors, >> so this request ends up getting retried forever, but no more resets >> are attempted because rq->errors has exceeded ERROR_MAX. > > I don't get this, maybe I'm looking at the wrong kernel version? > > Bartlomiej I should have explained this better. DRIVER(drive)->end_request() is actually calling default_end_request(), which calls ide_end_reuqest(), which ends up calling __ide_end_request(). And that will only end the request if end_that_request_first() (in ll_rw_blk.c) returns 0. However, end_that_request_first() returns 1 because rq->bio is not NULL (in the case of GPCMD_GET_CONFIGURATION, anyway). So, the request isn't ended, but neither is rq->errors cleared. Anyway, I'll have a look at 2.6.11-rc2. Thanks for the response! - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
