--- src/sys/bus/cam/scsi/scsi_ch.c 2008/05/18 20:30:20 1.27 +++ src/sys/bus/cam/scsi/scsi_ch.c 2008/07/18 00:07:23 1.28 @@ -424,14 +424,12 @@ chopen(struct dev_open_args *ap) */ if ((error = chgetparams(periph)) != 0) { softc->flags &= ~CH_FLAG_OPEN; - cam_periph_unlock(periph); + cam_periph_unhold(periph, 1); cam_periph_release(periph); - return(error); + } else { + cam_periph_unhold(periph, 1); } - cam_periph_unhold(periph); - cam_periph_unlock(periph); - return(error); } @@ -645,7 +643,7 @@ chdone(struct cam_periph *periph, union * operation. */ xpt_release_ccb(done_ccb); - cam_periph_unhold(periph); + cam_periph_unhold(periph, 0); return; } case CH_CCB_WAITING: