diff options
author | Søren Schmidt <sos@FreeBSD.org> | 2004-08-27 12:03:18 +0000 |
---|---|---|
committer | Søren Schmidt <sos@FreeBSD.org> | 2004-08-27 12:03:18 +0000 |
commit | 71d7101fac1fd880bd276ab491528d50552c8d5d (patch) | |
tree | f4b1d15f76b6556f51d77f955a6864523d2b29cd /sys/dev/ata/ata-disk.c | |
parent | db575a8507c58e801dde553b4308c44378f4eae6 (diff) | |
download | src-71d7101fac1fd880bd276ab491528d50552c8d5d.tar.gz src-71d7101fac1fd880bd276ab491528d50552c8d5d.zip |
Rearrange the call to disk_destroy.
Suggested by: phk
Notes
Notes:
svn path=/head/; revision=134375
Diffstat (limited to 'sys/dev/ata/ata-disk.c')
-rw-r--r-- | sys/dev/ata/ata-disk.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/dev/ata/ata-disk.c b/sys/dev/ata/ata-disk.c index 9007d3b78fff..a6dfb3a1128c 100644 --- a/sys/dev/ata/ata-disk.c +++ b/sys/dev/ata/ata-disk.c @@ -164,12 +164,12 @@ ad_detach(struct ata_device *atadev) if (adp->flags & AD_F_RAID_SUBDISK) ata_raiddisk_detach(adp); #endif + disk_destroy(adp->disk); + ata_prtdev(atadev, "WARNING - removed from configuration\n"); mtx_lock(&adp->queue_mtx); bioq_flush(&adp->queue, NULL, ENXIO); mtx_unlock(&adp->queue_mtx); mtx_destroy(&adp->queue_mtx); - disk_destroy(adp->disk); - ata_prtdev(atadev, "WARNING - removed from configuration\n"); ata_free_name(atadev); ata_free_lun(&adp_lun_map, adp->lun); atadev->attach = NULL; @@ -219,10 +219,6 @@ adstrategy(struct bio *bp) { struct ad_softc *adp = bp->bio_disk->d_drv1; - if (adp->device->flags & ATA_D_DETACHING) { - biofinish(bp, NULL, ENXIO); - return; - } mtx_lock(&adp->queue_mtx); bioq_disksort(&adp->queue, bp); mtx_unlock(&adp->queue_mtx); @@ -245,6 +241,10 @@ ad_start(struct ata_device *atadev) } bioq_remove(&adp->queue, bp); mtx_unlock(&adp->queue_mtx); + if (adp->device->flags & ATA_D_DETACHING) { + biofinish(bp, NULL, ENXIO); + return; + } if (!(request = ata_alloc_request())) { ata_prtdev(atadev, "FAILURE - out of memory in start\n"); |