mpt(4): Properly lock mpt_timeout().
authorSascha Wildner <saw@online.de>
Wed, 31 Aug 2011 16:24:44 +0000 (18:24 +0200)
committerSascha Wildner <saw@online.de>
Wed, 31 Aug 2011 16:24:44 +0000 (18:24 +0200)
I had removed it with an assertion (like in FreeBSD) as part of the
last sync I did, but I had overlooked that FreeBSD initializes their
callout with callout_init_mtx().

For now, just put back locking like it was.

Reported-by: G.Isenmann
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue2127>

sys/dev/disk/mpt/mpt_cam.c

index 2b8a37b..46a7700 100644 (file)
@@ -1239,7 +1239,7 @@ mpt_timeout(void *arg)
        ccb = (union ccb *)arg;
        mpt = ccb->ccb_h.ccb_mpt_ptr;
 
-       MPT_LOCK_ASSERT(mpt);
+       MPT_LOCK(mpt);
        req = ccb->ccb_h.ccb_req_ptr;
        mpt_prt(mpt, "request %p:%u timed out for ccb %p (req->ccb %p)\n", req,
            req->serno, ccb, req->ccb);
@@ -1250,6 +1250,7 @@ mpt_timeout(void *arg)
                req->state |= REQ_STATE_TIMEDOUT;
                mpt_wakeup_recovery_thread(mpt);
        }
+       MPT_UNLOCK(mpt);
 }
 
 /*