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

--- Comment #16 from Warner Losh <[email protected]> ---
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.
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"

Reply via email to