diff options
| author | Alexander Motin <mav@FreeBSD.org> | 2009-11-14 20:30:42 +0000 |
|---|---|---|
| committer | Alexander Motin <mav@FreeBSD.org> | 2009-11-14 20:30:42 +0000 |
| commit | 1f1158b28d08e72c5c25edbfd65275faf9664f50 (patch) | |
| tree | 486b246b0d97d9dc6a8759c655949f0053c3bdab | |
| parent | ec700f26b95cebe8f8d0d2fd2ac28f0f11495407 (diff) | |
Notes
| -rw-r--r-- | sys/cam/cam_periph.c | 5 | ||||
| -rw-r--r-- | sys/cam/cam_queue.c | 1 | ||||
| -rw-r--r-- | sys/cam/cam_queue.h | 7 |
3 files changed, 6 insertions, 7 deletions
diff --git a/sys/cam/cam_periph.c b/sys/cam/cam_periph.c index 63cc2c6b891f..9bac0f5a82e2 100644 --- a/sys/cam/cam_periph.c +++ b/sys/cam/cam_periph.c @@ -1465,6 +1465,11 @@ camperiphscsisenseerror(union ccb *ccb, cam_flags camflags, action_string = "No recovery CCB supplied"; goto sense_error_done; } + /* + * Clear freeze flag for original request here, as + * this freeze will be dropped as part of ERESTART. + */ + ccb->ccb_h.status &= ~CAM_DEV_QFRZN; bcopy(ccb, save_ccb, sizeof(*save_ccb)); print_ccb = save_ccb; periph->flags |= CAM_PERIPH_RECOVERY_INPROG; diff --git a/sys/cam/cam_queue.c b/sys/cam/cam_queue.c index 56586be3cf7a..328f0b802a75 100644 --- a/sys/cam/cam_queue.c +++ b/sys/cam/cam_queue.c @@ -334,7 +334,6 @@ cam_ccbq_init(struct cam_ccbq *ccbq, int openings) } ccbq->devq_openings = openings; ccbq->dev_openings = openings; - TAILQ_INIT(&ccbq->active_ccbs); return (0); } diff --git a/sys/cam/cam_queue.h b/sys/cam/cam_queue.h index d2990ad26e94..31f9bc238bf7 100644 --- a/sys/cam/cam_queue.h +++ b/sys/cam/cam_queue.h @@ -60,7 +60,6 @@ struct cam_ccbq { int dev_openings; int dev_active; int held; - struct ccb_hdr_tailq active_ccbs; }; struct cam_ed; @@ -209,9 +208,6 @@ static __inline void cam_ccbq_send_ccb(struct cam_ccbq *ccbq, union ccb *send_ccb) { - TAILQ_INSERT_TAIL(&ccbq->active_ccbs, - &(send_ccb->ccb_h), - xpt_links.tqe); send_ccb->ccb_h.pinfo.index = CAM_ACTIVE_INDEX; ccbq->dev_active++; ccbq->dev_openings--; @@ -220,8 +216,7 @@ cam_ccbq_send_ccb(struct cam_ccbq *ccbq, union ccb *send_ccb) static __inline void cam_ccbq_ccb_done(struct cam_ccbq *ccbq, union ccb *done_ccb) { - TAILQ_REMOVE(&ccbq->active_ccbs, &done_ccb->ccb_h, - xpt_links.tqe); + ccbq->dev_active--; ccbq->dev_openings++; ccbq->held++; |
