Skip to content
Browse files

Make sure the CCB xflags field is initialized to zero so that

CAM_EXTLUN_VALID is not erroneously set. Also add an XPORT_SRP
identifier to the known SCSI transports for the SCSI RDMA protocol, as
used, for example with Infiniband storage.

Reviewed by:	scottl
Approved by:	re (marius)
  • Loading branch information...
1 parent 9cc376c commit 53e3011adf3dc428b24dc18abd3429df8a41c25a @nwhitehorn nwhitehorn committed Sep 27, 2013
Showing with 5 additions and 0 deletions.
  1. +3 −0 sys/cam/cam_ccb.h
  2. +2 −0 sys/cam/cam_xpt.c
View
3 sys/cam/cam_ccb.h
@@ -262,6 +262,7 @@ typedef enum {
XPORT_SAS, /* Serial Attached SCSI */
XPORT_SATA, /* Serial AT Attachment */
XPORT_ISCSI, /* iSCSI */
+ XPORT_SRP, /* SCSI RDMA Protocol */
} cam_xport;
#define XPORT_IS_ATA(t) ((t) == XPORT_ATA || (t) == XPORT_SATA)
@@ -1233,6 +1234,7 @@ cam_fill_csio(struct ccb_scsiio *csio, u_int32_t retries,
{
csio->ccb_h.func_code = XPT_SCSI_IO;
csio->ccb_h.flags = flags;
+ csio->ccb_h.xflags = 0;
csio->ccb_h.retry_count = retries;
csio->ccb_h.cbfcnp = cbfcnp;
csio->ccb_h.timeout = timeout;
@@ -1252,6 +1254,7 @@ cam_fill_ctio(struct ccb_scsiio *csio, u_int32_t retries,
{
csio->ccb_h.func_code = XPT_CONT_TARGET_IO;
csio->ccb_h.flags = flags;
+ csio->ccb_h.xflags = 0;
csio->ccb_h.retry_count = retries;
csio->ccb_h.cbfcnp = cbfcnp;
csio->ccb_h.timeout = timeout;
View
2 sys/cam/cam_xpt.c
@@ -3337,6 +3337,7 @@ xpt_setup_ccb(struct ccb_hdr *ccb_h, struct cam_path *path, u_int32_t priority)
}
ccb_h->pinfo.index = CAM_UNQUEUED_INDEX;
ccb_h->flags = 0;
+ ccb_h->xflags = 0;
}
/* Path manipulation functions */
@@ -3891,6 +3892,7 @@ xpt_bus_register(struct cam_sim *sim, device_t parent, u_int32_t bus)
case XPORT_FC:
case XPORT_USB:
case XPORT_ISCSI:
+ case XPORT_SRP:
case XPORT_PPB:
new_bus->xport = scsi_get_xport();
break;

0 comments on commit 53e3011

Please sign in to comment.
Something went wrong with that request. Please try again.