diff options
| author | Søren Schmidt <sos@FreeBSD.org> | 2003-08-25 07:59:50 +0000 |
|---|---|---|
| committer | Søren Schmidt <sos@FreeBSD.org> | 2003-08-25 07:59:50 +0000 |
| commit | ea01d569176e1d1f562af32e9e6f8168eaecbb82 (patch) | |
| tree | 6bef55007d546e8d66ad87bb423931749ce20c30 /sys/dev | |
| parent | e4d023cef8d1745e5143ba4a5d8644673a81ef27 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/ata/ata-all.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c index 6f938586ffd4a..0a66ec287a59f 100644 --- a/sys/dev/ata/ata-all.c +++ b/sys/dev/ata/ata-all.c @@ -196,12 +196,14 @@ ata_detach(device_t dev) mtx_unlock(&ch->queue_mtx); if (ch->device[MASTER].param) { - ata_controlcmd(&ch->device[MASTER], ATA_FLUSHCACHE, 0, 0, 0); + if (ch->device[MASTER].param->support.command2 & ATA_SUPPORT_FLUSHCACHE) + ata_controlcmd(&ch->device[MASTER], ATA_FLUSHCACHE, 0, 0, 0); free(ch->device[MASTER].param, M_ATA); ch->device[MASTER].param = NULL; } if (ch->device[SLAVE].param) { - ata_controlcmd(&ch->device[SLAVE], ATA_FLUSHCACHE, 0, 0, 0); + if (ch->device[SLAVE].param->support.command2 & ATA_SUPPORT_FLUSHCACHE) + ata_controlcmd(&ch->device[SLAVE], ATA_FLUSHCACHE, 0, 0, 0); free(ch->device[SLAVE].param, M_ATA); ch->device[SLAVE].param = NULL; } @@ -303,9 +305,11 @@ ata_shutdown(void *arg, int howto) for (ctlr = 0; ctlr < devclass_get_maxunit(ata_devclass); ctlr++) { if (!(ch = devclass_get_softc(ata_devclass, ctlr))) continue; - if (ch->device[MASTER].param) + if (ch->device[MASTER].param && + ch->device[MASTER].param->support.command2 & ATA_SUPPORT_FLUSHCACHE) ata_controlcmd(&ch->device[MASTER], ATA_FLUSHCACHE, 0, 0, 0); - if (ch->device[SLAVE].param) + if (ch->device[SLAVE].param && + ch->device[SLAVE].param->support.command2 & ATA_SUPPORT_FLUSHCACHE) ata_controlcmd(&ch->device[SLAVE], ATA_FLUSHCACHE, 0, 0, 0); } } |
