https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226510

--- Comment #16 from Warner Losh <i...@freebsd.org> ---
It looks like we're not releasing the DA_REF_TUR. We clear it, but don't
release, then see if it is set and clear it and release. This isn't going to
work out too well, so always release when we clear the work flag.


diff --git a/sys/cam/scsi/scsi_da.c b/sys/cam/scsi/scsi_da.c
index 4bcddbb8dff9..beeda8d90f79 100644
--- a/sys/cam/scsi/scsi_da.c
+++ b/sys/cam/scsi/scsi_da.c
@@ -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;

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
freebsd-bugs@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to