Author: marius
Date: Sun Jan 27 17:15:58 2013
New Revision: 245987
URL: http://svnweb.freebsd.org/changeset/base/245987

Log:
  MFC: r241875
  
  Remove support for using Giant for locking within mpt(4). Finer grained
  locking has been working fine for ~5.5 years by now.

Modified:
  stable/8/sys/dev/mpt/mpt.h
  stable/8/sys/dev/mpt/mpt_cam.c
  stable/8/sys/dev/mpt/mpt_raid.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/dev/   (props changed)
  stable/8/sys/dev/mpt/   (props changed)

Modified: stable/8/sys/dev/mpt/mpt.h
==============================================================================
--- stable/8/sys/dev/mpt/mpt.h  Sun Jan 27 17:15:56 2013        (r245986)
+++ stable/8/sys/dev/mpt/mpt.h  Sun Jan 27 17:15:58 2013        (r245987)
@@ -788,7 +788,6 @@ mpt_assign_serno(struct mpt_softc *mpt, 
 }
 
 /***************************** Locking Primitives 
*****************************/
-#if 1
 #define        MPT_IFLAGS              INTR_TYPE_CAM | INTR_ENTROPY | 
INTR_MPSAFE
 #define        MPT_LOCK_SETUP(mpt)                                             
\
                mtx_init(&mpt->mpt_lock, "mpt", NULL, MTX_DEF);         \
@@ -803,8 +802,6 @@ mpt_assign_serno(struct mpt_softc *mpt, 
 #define        MPT_UNLOCK(mpt)         mtx_unlock(&(mpt)->mpt_lock)
 #define        MPT_OWNED(mpt)          mtx_owned(&(mpt)->mpt_lock)
 #define        MPT_LOCK_ASSERT(mpt)    mtx_assert(&(mpt)->mpt_lock, MA_OWNED)
-#define        MPTLOCK_2_CAMLOCK(mpt)
-#define        CAMLOCK_2_MPTLOCK(mpt)
 #define mpt_sleep(mpt, ident, priority, wmesg, timo) \
        msleep(ident, &(mpt)->mpt_lock, priority, wmesg, timo)
 #define mpt_req_timeout(req, ticks, func, arg) \
@@ -816,38 +813,6 @@ mpt_assign_serno(struct mpt_softc *mpt, 
 #define mpt_callout_drain(mpt, c) \
        callout_drain(c)
 
-#else
-
-#define        MPT_IFLAGS              INTR_TYPE_CAM | INTR_ENTROPY
-#define        MPT_LOCK_SETUP(mpt)     do { } while (0)
-#define        MPT_LOCK_DESTROY(mpt)   do { } while (0)
-#define        MPT_LOCK_ASSERT(mpt)    mtx_assert(&Giant, MA_OWNED)
-#define        MPT_LOCK(mpt)           mtx_lock(&Giant)
-#define        MPT_UNLOCK(mpt)         mtx_unlock(&Giant)
-#define        MPTLOCK_2_CAMLOCK(mpt)
-#define        CAMLOCK_2_MPTLOCK(mpt)
-
-#define mpt_req_timeout(req, ticks, func, arg) \
-       callout_reset(&(req)->callout, (ticks), (func), (arg))
-#define mpt_req_untimeout(req, func, arg) \
-       callout_stop(&(req)->callout)
-#define mpt_callout_init(mpt, c) \
-       callout_init(c, 0)
-#define mpt_callout_drain(mpt, c) \
-       callout_drain(c)
-
-static __inline int
-mpt_sleep(struct mpt_softc *, void *, int, const char *, int);
-
-static __inline int
-mpt_sleep(struct mpt_softc *mpt, void *i, int p, const char *w, int t)
-{
-       int r;
-       r = tsleep(i, p, w, t);
-       return (r);
-}
-#endif
-
 /******************************* Register Access 
******************************/
 static __inline void mpt_write(struct mpt_softc *, size_t, uint32_t);
 static __inline uint32_t mpt_read(struct mpt_softc *, int);

Modified: stable/8/sys/dev/mpt/mpt_cam.c
==============================================================================
--- stable/8/sys/dev/mpt/mpt_cam.c      Sun Jan 27 17:15:56 2013        
(r245986)
+++ stable/8/sys/dev/mpt/mpt_cam.c      Sun Jan 27 17:15:58 2013        
(r245987)
@@ -1347,9 +1347,7 @@ bad:
                ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
                KASSERT(ccb->ccb_h.status, ("zero ccb sts at %d", __LINE__));
                xpt_done(ccb);
-               CAMLOCK_2_MPTLOCK(mpt);
                mpt_free_request(mpt, req);
-               MPTLOCK_2_CAMLOCK(mpt);
                return;
        }
 
@@ -1583,9 +1581,7 @@ bad:
                if (seg < nseg && nxt_off >= MPT_REQUEST_AREA) {
                        request_t *nrq;
 
-                       CAMLOCK_2_MPTLOCK(mpt);
                        nrq = mpt_get_request(mpt, FALSE);
-                       MPTLOCK_2_CAMLOCK(mpt);
 
                        if (nrq == NULL) {
                                error = ENOMEM;
@@ -1633,9 +1629,7 @@ out:
                ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
                KASSERT(ccb->ccb_h.status, ("zero ccb sts at %d", __LINE__));
                xpt_done(ccb);
-               CAMLOCK_2_MPTLOCK(mpt);
                mpt_free_request(mpt, req);
-               MPTLOCK_2_CAMLOCK(mpt);
                return;
        }
 
@@ -1667,9 +1661,7 @@ out:
                tgt->state = TGT_STATE_MOVING_DATA;
 #endif
        }
-       CAMLOCK_2_MPTLOCK(mpt);
        mpt_send_cmd(mpt, req);
-       MPTLOCK_2_CAMLOCK(mpt);
 }
 
 static void
@@ -1758,9 +1750,7 @@ bad:
                ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
                KASSERT(ccb->ccb_h.status, ("zero ccb sts at %d", __LINE__));
                xpt_done(ccb);
-               CAMLOCK_2_MPTLOCK(mpt);
                mpt_free_request(mpt, req);
-               MPTLOCK_2_CAMLOCK(mpt);
                return;
        }
 
@@ -1978,9 +1968,7 @@ bad:
                if (seg < nseg && nxt_off >= MPT_REQUEST_AREA) {
                        request_t *nrq;
 
-                       CAMLOCK_2_MPTLOCK(mpt);
                        nrq = mpt_get_request(mpt, FALSE);
-                       MPTLOCK_2_CAMLOCK(mpt);
 
                        if (nrq == NULL) {
                                error = ENOMEM;
@@ -2028,9 +2016,7 @@ out:
                ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
                KASSERT(ccb->ccb_h.status, ("zero ccb sts at %d", __LINE__));
                xpt_done(ccb);
-               CAMLOCK_2_MPTLOCK(mpt);
                mpt_free_request(mpt, req);
-               MPTLOCK_2_CAMLOCK(mpt);
                return;
        }
 
@@ -2062,9 +2048,7 @@ out:
                tgt->state = TGT_STATE_MOVING_DATA;
 #endif
        }
-       CAMLOCK_2_MPTLOCK(mpt);
        mpt_send_cmd(mpt, req);
-       MPTLOCK_2_CAMLOCK(mpt);
 }
 
 static void
@@ -2083,7 +2067,6 @@ mpt_start(struct cam_sim *sim, union ccb
        mpt = ccb->ccb_h.ccb_mpt_ptr;
        raid_passthru = (sim == mpt->phydisk_sim);
 
-       CAMLOCK_2_MPTLOCK(mpt);
        if ((req = mpt_get_request(mpt, FALSE)) == NULL) {
                if (mpt->outofbeer == 0) {
                        mpt->outofbeer = 1;
@@ -2092,14 +2075,12 @@ mpt_start(struct cam_sim *sim, union ccb
                }
                ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
                mpt_set_ccb_status(ccb, CAM_REQUEUE_REQ);
-               MPTLOCK_2_CAMLOCK(mpt);
                xpt_done(ccb);
                return;
        }
 #ifdef INVARIANTS
        mpt_req_not_spcl(mpt, req, "mpt_start", __LINE__);
 #endif
-       MPTLOCK_2_CAMLOCK(mpt);
 
        if (sizeof (bus_addr_t) > 4) {
                cb = mpt_execute_req_a64;
@@ -2121,15 +2102,12 @@ mpt_start(struct cam_sim *sim, union ccb
        mpt_req->Function = MPI_FUNCTION_SCSI_IO_REQUEST;
        if (raid_passthru) {
                mpt_req->Function = MPI_FUNCTION_RAID_SCSI_IO_PASSTHROUGH;
-               CAMLOCK_2_MPTLOCK(mpt);
                if (mpt_map_physdisk(mpt, ccb, &tgt) != 0) {
-                       MPTLOCK_2_CAMLOCK(mpt);
                        ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
                        mpt_set_ccb_status(ccb, CAM_DEV_NOT_THERE);
                        xpt_done(ccb);
                        return;
                }
-               MPTLOCK_2_CAMLOCK(mpt);
                mpt_req->Bus = 0;       /* we never set bus here */
        } else {
                tgt = ccb->ccb_h.target_id;
@@ -2424,7 +2402,6 @@ mpt_cam_event(struct mpt_softc *mpt, req
                } else {
                        pathid = cam_sim_path(mpt->sim);
                }
-               MPTLOCK_2_CAMLOCK(mpt);
                /*
                 * Allocate a CCB, create a wildcard path for this bus,
                 * and schedule a rescan.
@@ -2432,19 +2409,16 @@ mpt_cam_event(struct mpt_softc *mpt, req
                ccb = xpt_alloc_ccb_nowait();
                if (ccb == NULL) {
                        mpt_prt(mpt, "unable to alloc CCB for rescan\n");
-                       CAMLOCK_2_MPTLOCK(mpt);
                        break;
                }
 
                if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, pathid,
                    CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
-                       CAMLOCK_2_MPTLOCK(mpt);
                        mpt_prt(mpt, "unable to create path for rescan\n");
                        xpt_free_ccb(ccb);
                        break;
                }
                xpt_rescan(ccb);
-               CAMLOCK_2_MPTLOCK(mpt);
                break;
        }
 #else
@@ -2541,13 +2515,11 @@ mpt_cam_event(struct mpt_softc *mpt, req
                } else {
                        sim = mpt->sim;
                }
-               MPTLOCK_2_CAMLOCK(mpt);
                for (lun_id = 0; lun_id < MPT_MAX_LUNS; lun_id++) {
                        if (xpt_create_path(&tmppath, NULL, cam_sim_path(sim),
                            pqf->TargetID, lun_id) != CAM_REQ_CMP) {
                                mpt_prt(mpt, "unable to create a path to send "
                                    "XPT_REL_SIMQ");
-                               CAMLOCK_2_MPTLOCK(mpt);
                                break;
                        }
                        xpt_setup_ccb(&crs.ccb_h, tmppath, 5);
@@ -2561,7 +2533,6 @@ mpt_cam_event(struct mpt_softc *mpt, req
                        }
                        xpt_free_path(tmppath);
                }
-               CAMLOCK_2_MPTLOCK(mpt);
                break;
        }
        case MPI_EVENT_IR_RESYNC_UPDATE:
@@ -2583,39 +2554,32 @@ mpt_cam_event(struct mpt_softc *mpt, req
                        sim = mpt->sim;
                switch(psdsc->ReasonCode) {
                case MPI_EVENT_SAS_DEV_STAT_RC_ADDED:
-                       MPTLOCK_2_CAMLOCK(mpt);
                        ccb = xpt_alloc_ccb_nowait();
                        if (ccb == NULL) {
                                mpt_prt(mpt,
                                    "unable to alloc CCB for rescan\n");
-                               CAMLOCK_2_MPTLOCK(mpt);
                                break;
                        }
                        if (xpt_create_path(&ccb->ccb_h.path, xpt_periph,
                            cam_sim_path(sim), psdsc->TargetID,
                            CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
-                               CAMLOCK_2_MPTLOCK(mpt);
                                mpt_prt(mpt,
                                    "unable to create path for rescan\n");
                                xpt_free_ccb(ccb);
                                break;
                        }
                        xpt_rescan(ccb);
-                       CAMLOCK_2_MPTLOCK(mpt);
                        break;
                case MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING:
-                       MPTLOCK_2_CAMLOCK(mpt);
                        if (xpt_create_path(&tmppath, NULL, cam_sim_path(sim),
                            psdsc->TargetID, CAM_LUN_WILDCARD) !=
                            CAM_REQ_CMP) {
                                mpt_prt(mpt,
                                    "unable to create path for async event");
-                               CAMLOCK_2_MPTLOCK(mpt);
                                break;
                        }
                        xpt_async(AC_LOST_DEVICE, tmppath, NULL);
                        xpt_free_path(tmppath);
-                       CAMLOCK_2_MPTLOCK(mpt);
                        break;
                case MPI_EVENT_SAS_DEV_STAT_RC_CMPL_INTERNAL_DEV_RESET:
                case MPI_EVENT_SAS_DEV_STAT_RC_CMPL_TASK_ABORT_INTERNAL:
@@ -2735,9 +2699,7 @@ mpt_scsi_reply_handler(struct mpt_softc 
                    req, req->serno);
        }
        KASSERT(ccb->ccb_h.status, ("zero ccb sts at %d", __LINE__));
-       MPTLOCK_2_CAMLOCK(mpt);
        xpt_done(ccb);
-       CAMLOCK_2_MPTLOCK(mpt);
        if ((req->state & REQ_STATE_TIMEDOUT) == 0) {
                TAILQ_REMOVE(&mpt->request_pending_list, req, links);
        } else {
@@ -3316,15 +3278,12 @@ mpt_action(struct cam_sim *sim, union cc
            ccb->ccb_h.func_code != XPT_PATH_INQ &&
            ccb->ccb_h.func_code != XPT_RESET_BUS &&
            ccb->ccb_h.func_code != XPT_RESET_DEV) {
-               CAMLOCK_2_MPTLOCK(mpt);
                if (mpt_map_physdisk(mpt, ccb, &tgt) != 0) {
-                       MPTLOCK_2_CAMLOCK(mpt);
                        ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
                        mpt_set_ccb_status(ccb, CAM_DEV_NOT_THERE);
                        xpt_done(ccb);
                        return;
                }
-               MPTLOCK_2_CAMLOCK(mpt);
        }
        ccb->ccb_h.ccb_mpt_ptr = mpt;
 
@@ -3373,9 +3332,7 @@ mpt_action(struct cam_sim *sim, union cc
                } else {
                        xpt_print(ccb->ccb_h.path, "reset device\n");
                }
-               CAMLOCK_2_MPTLOCK(mpt);
                (void) mpt_bus_reset(mpt, tgt, lun, FALSE);
-               MPTLOCK_2_CAMLOCK(mpt);
 
                /*
                 * mpt_bus_reset is always successful in that it
@@ -3389,7 +3346,6 @@ mpt_action(struct cam_sim *sim, union cc
        case XPT_ABORT:
        {
                union ccb *accb = ccb->cab.abort_ccb;
-               CAMLOCK_2_MPTLOCK(mpt);
                switch (accb->ccb_h.func_code) {
                case XPT_ACCEPT_TARGET_IO:
                case XPT_IMMED_NOTIFY:
@@ -3406,7 +3362,6 @@ mpt_action(struct cam_sim *sim, union cc
                        ccb->ccb_h.status = CAM_REQ_INVALID;
                        break;
                }
-               MPTLOCK_2_CAMLOCK(mpt);
                break;
        }
 
@@ -3546,7 +3501,6 @@ mpt_action(struct cam_sim *sim, union cc
                        period >>= MPI_SCSIDEVPAGE1_RP_SHIFT_MIN_SYNC_PERIOD;
                }
 #endif
-               CAMLOCK_2_MPTLOCK(mpt);
                if (dval & DP_DISC_ENABLE) {
                        mpt->mpt_disc_enable |= (1 << tgt);
                } else if (dval & DP_DISC_DISABL) {
@@ -3564,7 +3518,6 @@ mpt_action(struct cam_sim *sim, union cc
                        mpt_setsync(mpt, tgt, period, offset);
                }
                if (dval == 0) {
-                       MPTLOCK_2_CAMLOCK(mpt);
                        mpt_set_ccb_status(ccb, CAM_REQ_CMP);
                        break;
                }
@@ -3576,7 +3529,6 @@ mpt_action(struct cam_sim *sim, union cc
                } else {
                        mpt_set_ccb_status(ccb, CAM_REQ_CMP);
                }
-               MPTLOCK_2_CAMLOCK(mpt);
                break;
        }
        case XPT_GET_TRAN_SETTINGS:
@@ -3751,14 +3703,12 @@ mpt_action(struct cam_sim *sim, union cc
        {
                int result;
 
-               CAMLOCK_2_MPTLOCK(mpt);
                if (ccb->cel.enable)
                        result = mpt_enable_lun(mpt,
                            ccb->ccb_h.target_id, ccb->ccb_h.target_lun);
                else
                        result = mpt_disable_lun(mpt,
                            ccb->ccb_h.target_id, ccb->ccb_h.target_lun);
-               MPTLOCK_2_CAMLOCK(mpt);
                if (result == 0) {
                        mpt_set_ccb_status(ccb, CAM_REQ_CMP);
                } else {
@@ -3788,7 +3738,6 @@ mpt_action(struct cam_sim *sim, union cc
                } else {
                        trtp = &mpt->trt[lun];
                }
-               CAMLOCK_2_MPTLOCK(mpt);
                if (ccb->ccb_h.func_code == XPT_ACCEPT_TARGET_IO) {
                        mpt_lprt(mpt, MPT_PRT_DEBUG1,
                            "Put FREE ATIO %p lun %d\n", ccb, lun);
@@ -3803,13 +3752,10 @@ mpt_action(struct cam_sim *sim, union cc
                        mpt_lprt(mpt, MPT_PRT_ALWAYS, "Got Notify ACK\n");
                }
                mpt_set_ccb_status(ccb, CAM_REQ_INPROG);
-               MPTLOCK_2_CAMLOCK(mpt);
                return;
        }
        case XPT_CONT_TARGET_IO:
-               CAMLOCK_2_MPTLOCK(mpt);
                mpt_target_start_io(mpt, ccb);
-               MPTLOCK_2_CAMLOCK(mpt);
                return;
 
        default:
@@ -3853,18 +3799,15 @@ mpt_get_spi_settings(struct mpt_softc *m
                CONFIG_PAGE_SCSI_DEVICE_0 tmp;
                dval = 0;
 
-               CAMLOCK_2_MPTLOCK(mpt);
                tmp = mpt->mpt_dev_page0[tgt];
                rv = mpt_read_cur_cfg_page(mpt, tgt, &tmp.Header,
                    sizeof(tmp), FALSE, 5000);
                if (rv) {
-                       MPTLOCK_2_CAMLOCK(mpt);
                        mpt_prt(mpt, "can't get tgt %d config page 0\n", tgt);
                        return (rv);
                }
                mpt2host_config_page_scsi_device_0(&tmp);
                
-               MPTLOCK_2_CAMLOCK(mpt);
                mpt_lprt(mpt, MPT_PRT_DEBUG,
                    "mpt_get_spi_settings[%d]: current NP %x Info %x\n", tgt,
                    tmp.NegotiatedParameters, tmp.Information);
@@ -4493,18 +4436,14 @@ mpt_target_start_io(struct mpt_softc *mp
                xpt_freeze_simq(mpt->sim, 1);
                ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
                tgt->ccb->ccb_h.status |= CAM_RELEASE_SIMQ;
-               MPTLOCK_2_CAMLOCK(mpt);
                xpt_done(ccb);
-               CAMLOCK_2_MPTLOCK(mpt);
                return;
        default:
                mpt_prt(mpt, "ccb %p flags 0x%x tag 0x%08x had bad request "
                    "starting I/O\n", ccb, csio->ccb_h.flags, csio->tag_id);
                mpt_tgt_dump_req_state(mpt, cmd_req);
                mpt_set_ccb_status(ccb, CAM_REQ_CMP_ERR);
-               MPTLOCK_2_CAMLOCK(mpt);
                xpt_done(ccb);
-               CAMLOCK_2_MPTLOCK(mpt);
                return;
        }
 
@@ -4524,9 +4463,7 @@ mpt_target_start_io(struct mpt_softc *mp
                        }
                        ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
                        mpt_set_ccb_status(ccb, CAM_REQUEUE_REQ);
-                       MPTLOCK_2_CAMLOCK(mpt);
                        xpt_done(ccb);
-                       CAMLOCK_2_MPTLOCK(mpt);
                        return;
                }
                ccb->ccb_h.status = CAM_SIM_QUEUED | CAM_REQ_INPROG;
@@ -4600,7 +4537,6 @@ mpt_target_start_io(struct mpt_softc *mp
                    "nxtstate=%d\n", csio, csio->tag_id, csio->dxfer_len,
                    tgt->resid, ccb->ccb_h.flags, req, req->serno, tgt->state);
 
-               MPTLOCK_2_CAMLOCK(mpt);
                if ((ccb->ccb_h.flags & CAM_SCATTER_VALID) == 0) {
                        if ((ccb->ccb_h.flags & CAM_DATA_PHYS) == 0) {
                                int error;
@@ -4640,7 +4576,6 @@ mpt_target_start_io(struct mpt_softc *mp
                                (*cb)(req, sgs, csio->sglist_cnt, 0);
                        }
                }
-               CAMLOCK_2_MPTLOCK(mpt);
        } else {
                uint8_t *sp = NULL, sense[MPT_SENSE_SIZE];
 
@@ -4657,9 +4592,7 @@ mpt_target_start_io(struct mpt_softc *mp
                            ccb->ccb_h.status, tgt->resid, tgt->bytes_xfered);
                        mpt_set_ccb_status(ccb, CAM_REQ_CMP);
                        ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
-                       MPTLOCK_2_CAMLOCK(mpt);
                        xpt_done(ccb);
-                       CAMLOCK_2_MPTLOCK(mpt);
                        return;
                }
                if (ccb->ccb_h.flags & CAM_SEND_SENSE) {
@@ -4865,9 +4798,7 @@ mpt_scsi_tgt_status(struct mpt_softc *mp
                if (ccb) {
                        ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
                        mpt_set_ccb_status(ccb, CAM_REQUEUE_REQ);
-                       MPTLOCK_2_CAMLOCK(mpt);
                        xpt_done(ccb);
-                       CAMLOCK_2_MPTLOCK(mpt);
                } else {
                        mpt_prt(mpt,
                            "could not allocate status request- dropping\n");
@@ -5042,9 +4973,7 @@ mpt_scsi_tgt_tsk_mgmt(struct mpt_softc *
        }
        tgt->ccb = (union ccb *) inot;
        inot->ccb_h.status = CAM_MESSAGE_RECV|CAM_DEV_QFRZN;
-       MPTLOCK_2_CAMLOCK(mpt);
        xpt_done((union ccb *)inot);
-       CAMLOCK_2_MPTLOCK(mpt);
 }
 
 static void
@@ -5314,9 +5243,7 @@ mpt_scsi_tgt_atio(struct mpt_softc *mpt,
                    itag, atiop->tag_id, tgt->reply_desc, tgt->resid);
        }
        
-       MPTLOCK_2_CAMLOCK(mpt);
        xpt_done((union ccb *)atiop);
-       CAMLOCK_2_MPTLOCK(mpt);
 }
 
 static void
@@ -5425,9 +5352,7 @@ mpt_scsi_tgt_reply_handler(struct mpt_so
                                        mpt->outofbeer = 0;
                                        mpt_lprt(mpt, MPT_PRT_DEBUG, "THAWQ\n");
                                }
-                               MPTLOCK_2_CAMLOCK(mpt);
                                xpt_done(ccb);
-                               CAMLOCK_2_MPTLOCK(mpt);
                                break;
                        }
                        /*
@@ -5510,9 +5435,7 @@ mpt_scsi_tgt_reply_handler(struct mpt_so
                                        mpt->outofbeer = 0;
                                        mpt_lprt(mpt, MPT_PRT_DEBUG, "THAWQ\n");
                                }
-                               MPTLOCK_2_CAMLOCK(mpt);
                                xpt_done(ccb);
-                               CAMLOCK_2_MPTLOCK(mpt);
                        }
                        break;
                }

Modified: stable/8/sys/dev/mpt/mpt_raid.c
==============================================================================
--- stable/8/sys/dev/mpt/mpt_raid.c     Sun Jan 27 17:15:56 2013        
(r245986)
+++ stable/8/sys/dev/mpt/mpt_raid.c     Sun Jan 27 17:15:58 2013        
(r245987)
@@ -692,9 +692,7 @@ mpt_raid_thread(void *arg)
                 */
                if (firstrun) {
                        firstrun = 0;
-                       MPTLOCK_2_CAMLOCK(mpt);
                        xpt_release_simq(mpt->phydisk_sim, TRUE);
-                       CAMLOCK_2_MPTLOCK(mpt);
                }
 
                if (mpt->raid_rescan != 0) {
@@ -1664,19 +1662,16 @@ mpt_raid_set_vol_queue_depth(struct mpt_
 
                mpt->raid_rescan = 0;
 
-               MPTLOCK_2_CAMLOCK(mpt);
                error = xpt_create_path(&path, xpt_periph,
                                        cam_sim_path(mpt->sim),
                                        mpt_vol->config_page->VolumeID,
                                        /*lun*/0);
                if (error != CAM_REQ_CMP) {
-                       CAMLOCK_2_MPTLOCK(mpt);
                        mpt_vol_prt(mpt, mpt_vol, "Unable to allocate path!\n");
                        continue;
                }
                mpt_adjust_queue_depth(mpt, mpt_vol, path);
                xpt_free_path(path);
-               CAMLOCK_2_MPTLOCK(mpt);
        }
        MPT_UNLOCK(mpt);
        return (0);
_______________________________________________
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