Author: imp Date: Sat Feb 15 18:14:23 2020 New Revision: 357969 URL: https://svnweb.freebsd.org/changeset/base/357969
Log: The KASSERT is too strict: revert r357897 It's valid for a periph to be removed with outstanding transactions on the device. In CAM, multiple periphs attach to a single device. There's no interlock to prevent one of these going away while other periphs have outstanding CCBs and it's not an error either. Remove this overly agressive KASSERT to prevent false-positive panics when devices depart. Modified: head/sys/cam/cam_periph.c Modified: head/sys/cam/cam_periph.c ============================================================================== --- head/sys/cam/cam_periph.c Sat Feb 15 18:03:16 2020 (r357968) +++ head/sys/cam/cam_periph.c Sat Feb 15 18:14:23 2020 (r357969) @@ -57,7 +57,6 @@ __FBSDID("$FreeBSD$"); #include <cam/cam_periph.h> #include <cam/cam_debug.h> #include <cam/cam_sim.h> -#include <cam/cam_xpt_internal.h> /* For KASSERTs only */ #include <cam/scsi/scsi_all.h> #include <cam/scsi/scsi_message.h> @@ -682,10 +681,6 @@ camperiphfree(struct cam_periph *periph) cam_periph_assert(periph, MA_OWNED); KASSERT(periph->periph_allocating == 0, ("%s%d: freed while allocating", periph->periph_name, periph->unit_number)); - KASSERT(periph->path->device->ccbq.dev_active == 0, - ("%s%d: freed with %d active CCBs\n", - periph->periph_name, periph->unit_number, - periph->path->device->ccbq.dev_active)); for (p_drv = periph_drivers; *p_drv != NULL; p_drv++) { if (strcmp((*p_drv)->driver_name, periph->periph_name) == 0) break; _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"