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)
This commit is contained in:
nwhitehorn 2013-09-27 16:02:40 +00:00
parent 9cc376c3e5
commit 53e3011adf
2 changed files with 5 additions and 0 deletions

View File

@ -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 File

@ -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;