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

Reply via email to