CAM_DEV_QFREEZE handling should only be done on request submission but
neither on completion nor by SIM drivers in the first place. This issue has been revealed by r249466. Reviewed by: mav MFC after: 3 days
This commit is contained in:
parent
8aa9937318
commit
95c5ac34ba
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=251394
@ -2352,17 +2352,6 @@ static void sym_enqueue_cam_ccb(ccb_p cp)
|
||||
/*
|
||||
* Complete a pending CAM CCB.
|
||||
*/
|
||||
static void _sym_xpt_done(hcb_p np, union ccb *ccb)
|
||||
{
|
||||
SYM_LOCK_ASSERT(MA_OWNED);
|
||||
|
||||
KASSERT((ccb->ccb_h.status & CAM_SIM_QUEUED) == 0,
|
||||
("%s: status=CAM_SIM_QUEUED", __func__));
|
||||
|
||||
if (ccb->ccb_h.flags & CAM_DEV_QFREEZE)
|
||||
sym_freeze_cam_ccb(ccb);
|
||||
xpt_done(ccb);
|
||||
}
|
||||
|
||||
static void sym_xpt_done(hcb_p np, union ccb *ccb, ccb_p cp)
|
||||
{
|
||||
@ -2374,7 +2363,7 @@ static void sym_xpt_done(hcb_p np, union ccb *ccb, ccb_p cp)
|
||||
ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
|
||||
ccb->ccb_h.sym_hcb_ptr = NULL;
|
||||
}
|
||||
_sym_xpt_done(np, ccb);
|
||||
xpt_done(ccb);
|
||||
}
|
||||
|
||||
static void sym_xpt_done2(hcb_p np, union ccb *ccb, int cam_status)
|
||||
@ -2382,7 +2371,7 @@ static void sym_xpt_done2(hcb_p np, union ccb *ccb, int cam_status)
|
||||
SYM_LOCK_ASSERT(MA_OWNED);
|
||||
|
||||
sym_set_cam_status(ccb, cam_status);
|
||||
_sym_xpt_done(np, ccb);
|
||||
xpt_done(ccb);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -8935,7 +8924,7 @@ static int sym_cam_attach(hcb_p np)
|
||||
goto fail;
|
||||
np->sim = sim;
|
||||
|
||||
if (xpt_create_path(&path, 0,
|
||||
if (xpt_create_path(&path, NULL,
|
||||
cam_sim_path(np->sim), CAM_TARGET_WILDCARD,
|
||||
CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
|
||||
goto fail;
|
||||
|
Loading…
Reference in New Issue
Block a user