Some scsi inquiry commands were failing with sense key 0x5 and ASC/ASCQ values
of 24/00. At times, this failure cause retries over several hours because the
driver was returning DID_BUS_BUSY. These retries and failures were clogging up
the console logs. Now, always initialize the fcpCdb to 0 during
lpfc_scsi_prep_cmnd. After the memset, only copy scsi_cmnd->cmd_len bytes into
the fcpCdb.
commit id:
df9e1b59f9e4671930a7762b9518461df4ea85f5
Signed-off-by: Maxim Uvarov <maxim.uvarov@oracle.com>
int_to_scsilun(lpfc_cmd->pCmd->device->lun,
&lpfc_cmd->fcp_cmnd->fcp_lun);
- memcpy(&fcp_cmnd->fcpCdb[0], scsi_cmnd->cmnd, 16);
-
+ memset(&fcp_cmnd->fcpCdb[0], 0, LPFC_FCP_CDB_LEN);
+ memcpy(&fcp_cmnd->fcpCdb[0], scsi_cmnd->cmnd, scsi_cmnd->cmd_len);
if (scsi_populate_tag_msg(scsi_cmnd, tag)) {
switch (tag[0]) {
case HEAD_OF_QUEUE_TAG:
#include <asm/byteorder.h>
struct lpfc_hba;
+#define LPFC_FCP_CDB_LEN 16
#define list_remove_head(list, entry, type, member) \
do { \
#define WRITE_DATA 0x01 /* Bit 0 */
#define READ_DATA 0x02 /* Bit 1 */
- uint8_t fcpCdb[16]; /* SRB cdb field is copied here */
+ uint8_t fcpCdb[LPFC_FCP_CDB_LEN]; /* SRB cdb field is copied here */
uint32_t fcpDl; /* Total transfer length */
};