From 521f34bab1d9b431747ff31b4bd44ac1c00436c4 Mon Sep 17 00:00:00 2001 From: mav Date: Sat, 20 Sep 2014 13:48:52 +0000 Subject: [PATCH] MFC r271702: Fix tpc_create_token() introduced in r269497 to encode CREATOR LOGICAL UNIT DESCRIPTOR field as Identification Descriptor CSCD descriptor, not just as Identification Descriptor. Approved by: re (gjb) git-svn-id: svn://svn.freebsd.org/base/stable/10@271904 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sys/cam/ctl/ctl_tpc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sys/cam/ctl/ctl_tpc.c b/sys/cam/ctl/ctl_tpc.c index 4d41005d2..7a973cbba 100644 --- a/sys/cam/ctl/ctl_tpc.c +++ b/sys/cam/ctl/ctl_tpc.c @@ -1811,6 +1811,7 @@ tpc_create_token(struct ctl_lun *lun, struct ctl_port *port, off_t len, { static int id = 0; struct scsi_vpd_id_descriptor *idd = NULL; + struct scsi_ec_cscd_id *cscd; int targid_len; scsi_ulto4b(ROD_TYPE_AUR, token->type); @@ -1824,8 +1825,12 @@ tpc_create_token(struct ctl_lun *lun, struct ctl_port *port, off_t len, idd = scsi_get_devid_desc((struct scsi_vpd_id_descriptor *) lun->lun_devid->data, lun->lun_devid->len, scsi_devid_is_lun_eui64); - if (idd != NULL) - memcpy(&token->body[8], idd, 4 + idd->length); + if (idd != NULL) { + cscd = (struct scsi_ec_cscd_id *)&token->body[8]; + cscd->type_code = EC_CSCD_ID; + cscd->luidt_pdt = T_DIRECT; + memcpy(&cscd->codeset, idd, 4 + idd->length); + } scsi_u64to8b(0, &token->body[40]); scsi_u64to8b(len, &token->body[48]); if (port->target_devid) { -- 2.45.0