diff options
author | sos <sos@FreeBSD.org> | 2006-08-25 09:33:56 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2006-08-25 09:33:56 +0000 |
commit | 632c97e1f133406690c6702231aac820385035d5 (patch) | |
tree | 7b4f2bb8f780141fbf11a80991530cacd7ad833e /sys/dev/ata | |
parent | 12a681a764edc4fe946f89bf4a3a96e46fb90040 (diff) | |
download | FreeBSD-src-632c97e1f133406690c6702231aac820385035d5.zip FreeBSD-src-632c97e1f133406690c6702231aac820385035d5.tar.gz |
Properly initialize and destroy the RAID lock.
Also dont mess with RAID's thats not attached yet and avoid panic.
Diffstat (limited to 'sys/dev/ata')
-rw-r--r-- | sys/dev/ata/ata-raid.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-raid.c b/sys/dev/ata/ata-raid.c index f659f37..78afd7b 100644 --- a/sys/dev/ata/ata-raid.c +++ b/sys/dev/ata/ata-raid.c @@ -4087,7 +4087,8 @@ ata_raid_subdisk_detach(device_t dev) ars->raid[volume]->disks[ars->disk_number[volume]].flags &= ~(AR_DF_PRESENT | AR_DF_ONLINE); ars->raid[volume]->disks[ars->disk_number[volume]].dev = NULL; - ata_raid_config_changed(ars->raid[volume], 1); + if (mtx_initialized(&ars->raid[volume]->lock)) + ata_raid_config_changed(ars->raid[volume], 1); ars->raid[volume] = NULL; ars->disk_number[volume] = -1; } @@ -4149,6 +4150,8 @@ ata_raid_module_event_handler(module_t mod, int what, void *arg) if (!rdp || !rdp->status) continue; + if (mtx_initialized(&rdp->lock)) + mtx_destroy(&rdp->lock); if (rdp->disk) disk_destroy(rdp->disk); } |