On static review, the only code that makes me nervous are ata_shutdown/da_shutdown. Those are the only places where you hold that lock across an uncertain interval.