NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/54045: mpii driver triggers panic on timeout in physio
The following reply was made to PR kern/54045; it has been noted by GNATS.
From: Frank Kardel <kardel%netbsd.org@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: kern/54045: mpii driver triggers panic on timeout in physio
Date: Wed, 6 Mar 2019 13:46:26 +0100
I agree with you. I have cleaned up the mpii driver a bit with respect
to error/status/resid handling - I will commit that soon afte some testing.
This cleanup will need to be pulled up to -8 also.
Frank
On 03/06/19 13:35, Michael van Elst wrote:
> The following reply was made to PR kern/54045; it has been noted by GNATS.
>
> From: mlelstv%serpens.de@localhost (Michael van Elst)
> To: gnats-bugs%netbsd.org@localhost
> Cc:
> Subject: Re: kern/54045: mpii driver triggers panic on timeout in physio
> Date: Wed, 6 Mar 2019 12:31:56 -0000 (UTC)
>
> kardel%netbsd.org@localhost writes:
>
> >>Description:
> > Timeouts on SCSI WRITE/READ commands in the mpii driver cause physio to panic with:
> > kernel diagnostic assertion "bp->b_error == 0" failed: file "/src/NetBSD/cur/src/sys/kern/kern_physio.c", line 179
>
>
> The adapter driver doesn't hold that assertion. You can get a partial
> transfer and an error condition at the same time from SCSI. Some error
> paths in some drivers reset xs->resid, but that's not used very consistently.
>
> The sd driver assures that the physio assertion is satisfied in sddone(),
> but the tape driver doesn't.
>
> The assertion itself is also something "new". The original code would
> accept a partial read (usually an EOM condition) that could also return
> an error.
>
> The combination of drivers that reset the residual after an error and
> an assertion that checks the fake residual is a bit strange too.
>
>
> --
> --
> Michael van Elst
> Internet: mlelstv%serpens.de@localhost
> "A potential Snark may lurk in every tree."
>
Home |
Main Index |
Thread Index |
Old Index