summaryrefslogtreecommitdiffstats
path: root/sys/cam
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2013-09-01 13:01:59 +0000
committermav <mav@FreeBSD.org>2013-09-01 13:01:59 +0000
commite56875d5c503472f354a46c980d618505f5b8041 (patch)
treec1f7d403849a5e96ee9c1c261060caac7af820d8 /sys/cam
parent554edd303fabee026ab6a23bf21f05a70170aefe (diff)
downloadFreeBSD-src-e56875d5c503472f354a46c980d618505f5b8041.zip
FreeBSD-src-e56875d5c503472f354a46c980d618505f5b8041.tar.gz
Bring legacy CAM target implementation back into API/KPI-coherent and even
functional state. While CTL is much more superior target from all points, there is no reason why this code should not work. Tested with ahc(4) as target side HBA. MFC after: 2 weeks
Diffstat (limited to 'sys/cam')
-rw-r--r--sys/cam/scsi/scsi_targ_bh.c10
-rw-r--r--sys/cam/scsi/scsi_target.c6
2 files changed, 11 insertions, 5 deletions
diff --git a/sys/cam/scsi/scsi_targ_bh.c b/sys/cam/scsi/scsi_targ_bh.c
index 2d591cd..bcf4eea 100644
--- a/sys/cam/scsi/scsi_targ_bh.c
+++ b/sys/cam/scsi/scsi_targ_bh.c
@@ -305,10 +305,10 @@ targbhenlun(struct cam_periph *periph)
* so the SIM can tell us of asynchronous target mode events.
*/
for (i = 0; i < MAX_ACCEPT; i++) {
- struct ccb_immed_notify *inot;
+ struct ccb_immediate_notify *inot;
- inot = (struct ccb_immed_notify*)malloc(sizeof(*inot), M_SCSIBH,
- M_NOWAIT);
+ inot = (struct ccb_immediate_notify*)malloc(sizeof(*inot),
+ M_SCSIBH, M_NOWAIT);
if (inot == NULL) {
status = CAM_RESRC_UNAVAIL;
@@ -316,7 +316,7 @@ targbhenlun(struct cam_periph *periph)
}
xpt_setup_ccb(&inot->ccb_h, periph->path, CAM_PRIORITY_NORMAL);
- inot->ccb_h.func_code = XPT_IMMED_NOTIFY;
+ inot->ccb_h.func_code = XPT_IMMEDIATE_NOTIFY;
inot->ccb_h.cbfcnp = targbhdone;
SLIST_INSERT_HEAD(&softc->immed_notify_slist, &inot->ccb_h,
periph_links.sle);
@@ -712,7 +712,7 @@ targbhdone(struct cam_periph *periph, union ccb *done_ccb)
}
break;
}
- case XPT_IMMED_NOTIFY:
+ case XPT_IMMEDIATE_NOTIFY:
{
int frozen;
diff --git a/sys/cam/scsi/scsi_target.c b/sys/cam/scsi/scsi_target.c
index 78e96fb..4b4ad78 100644
--- a/sys/cam/scsi/scsi_target.c
+++ b/sys/cam/scsi/scsi_target.c
@@ -551,6 +551,7 @@ targwrite(struct cdev *dev, struct uio *uio, int ioflag)
switch (func_code) {
case XPT_ACCEPT_TARGET_IO:
case XPT_IMMED_NOTIFY:
+ case XPT_IMMEDIATE_NOTIFY:
cam_periph_lock(softc->periph);
ccb = targgetccb(softc, func_code, priority);
descr = (struct targ_cmd_descr *)ccb->ccb_h.targ_descr;
@@ -781,6 +782,7 @@ targdone(struct cam_periph *periph, union ccb *done_ccb)
switch (done_ccb->ccb_h.func_code) {
/* All FC_*_QUEUED CCBs go back to userland */
case XPT_IMMED_NOTIFY:
+ case XPT_IMMEDIATE_NOTIFY:
case XPT_ACCEPT_TARGET_IO:
case XPT_CONT_TARGET_IO:
TAILQ_INSERT_TAIL(&softc->user_ccb_queue, &done_ccb->ccb_h,
@@ -961,6 +963,7 @@ targfreeccb(struct targ_softc *softc, union ccb *ccb)
switch (ccb->ccb_h.func_code) {
case XPT_ACCEPT_TARGET_IO:
case XPT_IMMED_NOTIFY:
+ case XPT_IMMEDIATE_NOTIFY:
CAM_DEBUG_PRINT(CAM_DEBUG_PERIPH, ("freeing ccb %p\n", ccb));
free(ccb, M_TARG);
break;
@@ -1131,6 +1134,9 @@ targccblen(xpt_opcode func_code)
case XPT_IMMED_NOTIFY:
len = sizeof(struct ccb_immed_notify);
break;
+ case XPT_IMMEDIATE_NOTIFY:
+ len = sizeof(struct ccb_immediate_notify);
+ break;
case XPT_REL_SIMQ:
len = sizeof(struct ccb_relsim);
break;
OpenPOWER on IntegriCloud