Drop the periph/sim lock when calling disk_destroy().

This commit is contained in:
Scott Long 2007-04-16 19:41:14 +00:00
parent d292906a7c
commit cd5c9285cd
2 changed files with 3 additions and 5 deletions

View File

@ -486,7 +486,9 @@ cdcleanup(struct cam_periph *periph)
xpt_print(periph->path, "removing changer entry\n");
free(softc->changer, M_DEVBUF);
}
cam_periph_unlock(periph);
disk_destroy(softc->disk);
cam_periph_lock(periph);
free(softc, M_DEVBUF);
}

View File

@ -939,13 +939,9 @@ dacleanup(struct cam_periph *periph)
&& sysctl_ctx_free(&softc->sysctl_ctx) != 0) {
xpt_print(periph->path, "can't remove sysctl context\n");
}
disk_destroy(softc->disk);
/*
* XXX Gotta drop the periph lock so that the drain can complete with
* deadlocking on the lock. Hopefully dropping here is safe.
*/
cam_periph_unlock(periph);
disk_destroy(softc->disk);
callout_drain(&softc->sendordered_c);
cam_periph_lock(periph);
free(softc, M_DEVBUF);