Make cam_periph_hold() behavior consistent: drop taken reference and

return ENXIO if periph was invalidated while we were waiting for it.

MFC after:	1 week
This commit is contained in:
Alexander Motin 2012-06-21 15:14:51 +00:00
parent 10284c8b26
commit aed9c88cff

View File

@ -440,6 +440,10 @@ cam_periph_hold(struct cam_periph *periph, int priority)
cam_periph_release_locked(periph);
return (error);
}
if (periph->flags & CAM_PERIPH_INVALID) {
cam_periph_release_locked(periph);
return (ENXIO);
}
}
periph->flags |= CAM_PERIPH_LOCKED;