Author: trasz
Date: Wed Dec 17 10:49:03 2008
New Revision: 186219
URL: http://svn.freebsd.org/changeset/base/186219

Log:
  Revert r186186 for now; it breaks stuff.
  
  Approved by:  rwatson (mentor)

Modified:
  head/sys/cam/cam_periph.c
  head/sys/cam/cam_xpt.c
  head/sys/cam/scsi/scsi_da.c

Modified: head/sys/cam/cam_periph.c
==============================================================================
--- head/sys/cam/cam_periph.c   Wed Dec 17 10:42:53 2008        (r186218)
+++ head/sys/cam/cam_periph.c   Wed Dec 17 10:49:03 2008        (r186219)
@@ -311,6 +311,8 @@ cam_periph_hold(struct cam_periph *perip
        struct mtx *mtx;
        int error;
 
+       mtx_assert(periph->sim->mtx, MA_OWNED);
+
        /*
         * Increment the reference count on the peripheral
         * while we wait for our lock attempt to succeed
@@ -322,8 +324,6 @@ cam_periph_hold(struct cam_periph *perip
                return (ENXIO);
 
        mtx = periph->sim->mtx;
-       mtx_assert(mtx, MA_OWNED);
-
        if (mtx == &Giant)
                mtx = NULL;
 

Modified: head/sys/cam/cam_xpt.c
==============================================================================
--- head/sys/cam/cam_xpt.c      Wed Dec 17 10:42:53 2008        (r186218)
+++ head/sys/cam/cam_xpt.c      Wed Dec 17 10:49:03 2008        (r186219)
@@ -1595,7 +1595,7 @@ xpt_remove_periph(struct cam_periph *per
 {
        struct cam_ed *device;
 
-       cam_periph_lock(periph);
+       mtx_assert(periph->sim->mtx, MA_OWNED);
 
        device = periph->path->device;
 
@@ -1615,7 +1615,6 @@ xpt_remove_periph(struct cam_periph *per
        mtx_lock(&xsoftc.xpt_topo_lock);
        xsoftc.xpt_generation++;
        mtx_unlock(&xsoftc.xpt_topo_lock);
-       cam_periph_unlock(periph);
 }
 
 

Modified: head/sys/cam/scsi/scsi_da.c
==============================================================================
--- head/sys/cam/scsi/scsi_da.c Wed Dec 17 10:42:53 2008        (r186218)
+++ head/sys/cam/scsi/scsi_da.c Wed Dec 17 10:49:03 2008        (r186219)
@@ -772,8 +772,8 @@ daclose(struct disk *dp)
 
        softc->flags &= ~DA_FLAG_OPEN;
        cam_periph_unhold(periph);
-       cam_periph_unlock(periph);
        cam_periph_release(periph);
+       cam_periph_unlock(periph);
        return (0);     
 }
 
@@ -995,8 +995,10 @@ dacleanup(struct cam_periph *periph)
                xpt_print(periph->path, "can't remove sysctl context\n");
        }
 
+       cam_periph_unlock(periph);
        disk_destroy(softc->disk);
        callout_drain(&softc->sendordered_c);
+       cam_periph_lock(periph);
        free(softc, M_DEVBUF);
 }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to