Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: [jdolecek-ncq] src/sys/dev



On Fri, Jun 16, 2017 at 08:40:49PM +0000, Jaromir Dolecek wrote:
> Module Name:	src
> Committed By:	jdolecek
> Date:		Fri Jun 16 20:40:49 UTC 2017
> 
> Modified Files:
> 	src/sys/dev/ata [jdolecek-ncq]: ata.c ata_wdc.c atavar.h wd.c
> 	src/sys/dev/ic [jdolecek-ncq]: ahcisata_core.c mvsata.c siisata.c wdc.c
> 	src/sys/dev/scsipi [jdolecek-ncq]: atapi_wdc.c
> 
> Log Message:
> adjust reset channel and dump paths
> - channel reset now always kills active transfer, even on dump path, but
>   now doesn't touch the queued waiting transfers; also kill_xfer hook is
>   always called, so that HBA can free any private xfer resources and thus
>   the dump request has chance to work

Sounds like a recipe for more lost/corrupt data.  Remember, channel reset
is requestable from userland.

> - kill_xfer routines now always call ata_deactivate_xfer(); added KASSERT()s
>   to ata_free_xfer() to expect deactivated xfer
> - when called during channel reset before dump, ata_kill_active() drops
>   any queued waiting transfers without processing

Again, as above.

> - do not (re)queue any transfers in wddone() when dumping
> - kill AT_RST_NOCMD flag
> 
> This should also hopefully fix the 'polled command has been queued' panic
> as reported in:
> PR kern/11811 by John Hawkinson
> PR kern/47041 by Taylor R Campbell
> PR kern/51979 by Martin Husemann
> 
> dump tested working with piixide(4) and ahci(4). mvsata(4) dump times out,
> but otherwise tested working, will be fixed separately. siisata(4) mechanically
> changed and not tested.
> 
> 
> To generate a diff of this commit:
> cvs rdiff -u -r1.132.8.8 -r1.132.8.9 src/sys/dev/ata/ata.c
> cvs rdiff -u -r1.105.6.3 -r1.105.6.4 src/sys/dev/ata/ata_wdc.c
> cvs rdiff -u -r1.92.8.8 -r1.92.8.9 src/sys/dev/ata/atavar.h
> cvs rdiff -u -r1.428.2.15 -r1.428.2.16 src/sys/dev/ata/wd.c
> cvs rdiff -u -r1.57.6.12 -r1.57.6.13 src/sys/dev/ic/ahcisata_core.c
> cvs rdiff -u -r1.35.6.10 -r1.35.6.11 src/sys/dev/ic/mvsata.c
> cvs rdiff -u -r1.30.4.15 -r1.30.4.16 src/sys/dev/ic/siisata.c
> cvs rdiff -u -r1.283.2.4 -r1.283.2.5 src/sys/dev/ic/wdc.c
> cvs rdiff -u -r1.123.4.4 -r1.123.4.5 src/sys/dev/scsipi/atapi_wdc.c
> 
> Please note that diffs are not public domain; they are subject to the
> copyright notices on the relevant files.
> 


Home | Main Index | Thread Index | Old Index