Release the "TUR" reference when clearing the TUR work flag. We mostly
do this right, except when there's no BP and we do a TUR by request. In that case, we clear the flag, but don't release the reference, leaking the reference on rare occasion. PR: 226510 Sponsored by: Netflix
This commit is contained in:
parent
83fc34ea0d
commit
7b0eb8dbf8
@ -3114,6 +3114,7 @@ dastart(struct cam_periph *periph, union ccb *start_ccb)
|
||||
if (bp == NULL) {
|
||||
if (cam_iosched_has_work_flags(softc->cam_iosched, DA_WORK_TUR)) {
|
||||
cam_iosched_clr_work_flags(softc->cam_iosched, DA_WORK_TUR);
|
||||
da_periph_release_locked(periph, DA_REF_TUR);
|
||||
scsi_test_unit_ready(&start_ccb->csio,
|
||||
/*retries*/ da_retry_count,
|
||||
dadone,
|
||||
@ -3139,11 +3140,6 @@ dastart(struct cam_periph *periph, union ccb *start_ccb)
|
||||
}
|
||||
}
|
||||
|
||||
if (cam_iosched_has_work_flags(softc->cam_iosched, DA_WORK_TUR)) {
|
||||
cam_iosched_clr_work_flags(softc->cam_iosched, DA_WORK_TUR);
|
||||
da_periph_release_locked(periph, DA_REF_TUR);
|
||||
}
|
||||
|
||||
if ((bp->bio_flags & BIO_ORDERED) != 0 ||
|
||||
(softc->flags & DA_FLAG_NEED_OTAG) != 0) {
|
||||
softc->flags &= ~DA_FLAG_NEED_OTAG;
|
||||
|
Loading…
Reference in New Issue
Block a user