diff options
author | Matt Jacob <mjacob@FreeBSD.org> | 2006-03-07 17:56:40 +0000 |
---|---|---|
committer | Matt Jacob <mjacob@FreeBSD.org> | 2006-03-07 17:56:40 +0000 |
commit | 7a49a0d1fbd9812df28037bb03b5bb8cf2f20c9e (patch) | |
tree | f7a56bfd0e7a2774f62bf2cd9609fbf47a21a79a /sys/dev/mpt/mpt.c | |
parent | f09934b191a655137c6e94b4cf2e23b0f8c59125 (diff) | |
download | src-7a49a0d1fbd9812df28037bb03b5bb8cf2f20c9e.tar.gz src-7a49a0d1fbd9812df28037bb03b5bb8cf2f20c9e.zip |
Add a serial number for requests so we don't just depend on a request pointer
to try and do forensics on what has occurred.
Notes
Notes:
svn path=/head/; revision=156400
Diffstat (limited to 'sys/dev/mpt/mpt.c')
-rw-r--r-- | sys/dev/mpt/mpt.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/dev/mpt/mpt.c b/sys/dev/mpt/mpt.c index adffd4444a2d..7b3e7377cd9f 100644 --- a/sys/dev/mpt/mpt.c +++ b/sys/dev/mpt/mpt.c @@ -1006,6 +1006,7 @@ mpt_free_request(struct mpt_softc *mpt, request_t *req) req->chain = NULL; mpt_free_request(mpt, nxt); /* NB: recursion */ } + req->serno = 0; req->ccb = NULL; req->state = REQ_STATE_FREE; if (LIST_EMPTY(&mpt->ack_frames)) { @@ -1042,6 +1043,9 @@ retry: TAILQ_REMOVE(&mpt->request_free_list, req, links); req->state = REQ_STATE_ALLOCATED; req->chain = NULL; + if ((req->serno = ++(mpt->cmd_serno)) == 0) { + req->serno = ++(mpt->cmd_serno); + } } else if (sleep_ok != 0) { mpt->getreqwaiter = 1; mpt_sleep(mpt, &mpt->request_free_list, PUSER, "mptgreq", 0); |