Re: [patch 2/6] ide: fix ide_kill_rq() for special ide-{floppy,tape} driver requests

David Miller
2009-06-25T10:09:48Z

From: Borislav Petkov <petkovbb@googlemail.com>
Date: Wed, 24 Jun 2009 19:44:11 +0200

> On Wed, Jun 24, 2009 at 03:39:09AM -0700, David Miller wrote:
>> From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
>> Date: Wed, 24 Jun 2009 12:09:53 +0200
>>
>> > The obscure reasons is just the fact that both ide-floppy and ide-tape
>> > had a they own duplicated/buggy request completion routines.
>> >
>> > While they were being unified the whole bunch of similar class of bugs
>> > were fixed so I agree that there may still be more issues to deal with
>> > there.
>>
>> I see, the ->pc_callback() of these things set rq->errors and then
>> ide_pc_intr() happily overrides whatever was set there, either on it's
>> own or via ide_complete_rq().
>>
>> I'll look over this some more while I wait for the testing results
>> from Borislav.
>
> Ok, let's see now, I did some testing but can't seem to hit that
> particular path because it is taken relatively rarely - it can be
> reached from start_request() and ide_atapi_error() via ide_error for
> ide-floppy and ide-tape.
>
> If my code staring doesn't mislead me, the start_request()-one has to
> happen during an IDE reset operation, while we're polling for reset
> completion _and_ when drive->failures has reached drive->max_failures
> since this is the only site the drive->failures counter is increased.
>
> The ide_atapi_error() cannot happen because (!blk_fs_request(rq))
> requests are being completed in ide_error() with the respective error
> status.
>
> It is possible that I've missed something so feel free to correct me
> and/or suggest a different testing approach.

Ok, thanks Borislav.

My intention is to apply patches #2 and #3, thanks everyone!