From 62b86814095a27a95e68d425012fd941a89c4388 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 19 Sep 2012 19:43:01 -0700 Subject: [PATCH] SCSI: Fix all remaining places where alloc_len==0 means xfer direction should be == NONE --- lib/scsi-lowlevel.c | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/lib/scsi-lowlevel.c b/lib/scsi-lowlevel.c index ccad570..6d5b98c 100644 --- a/lib/scsi-lowlevel.c +++ b/lib/scsi-lowlevel.c @@ -208,7 +208,11 @@ scsi_reportluns_cdb(int report_type, int alloc_len) *(uint32_t *)&task->cdb[6] = htonl(alloc_len); task->cdb_size = 12; - task->xfer_dir = SCSI_XFER_READ; + if (alloc_len != 0) { + task->xfer_dir = SCSI_XFER_READ; + } else { + task->xfer_dir = SCSI_XFER_NONE; + } task->expxferlen = alloc_len; task->params.reportluns.report_type = report_type; @@ -420,7 +424,7 @@ scsi_cdb_inquiry(int evpd, int page_code, int alloc_len) *(uint16_t *)&task->cdb[3] = htons(alloc_len); task->cdb_size = 6; - if (alloc_len > 0) { + if (alloc_len != 0) { task->xfer_dir = SCSI_XFER_READ; } else { task->xfer_dir = SCSI_XFER_NONE; @@ -706,7 +710,11 @@ scsi_cdb_read6(uint32_t lba, uint32_t xferlen, int blocksize) task->cdb[4] = num_blocks; } - task->xfer_dir = SCSI_XFER_READ; + if (xferlen != 0) { + task->xfer_dir = SCSI_XFER_READ; + } else { + task->xfer_dir = SCSI_XFER_NONE; + } task->expxferlen = xferlen; task->params.read6.lba = lba; @@ -1249,7 +1257,11 @@ scsi_cdb_unmap(int anchor, int group, uint16_t xferlen) *(uint16_t *)&task->cdb[7] = htons(xferlen); task->cdb_size = 10; - task->xfer_dir = SCSI_XFER_WRITE; + if (xferlen != 0) { + task->xfer_dir = SCSI_XFER_WRITE; + } else { + task->xfer_dir = SCSI_XFER_NONE; + } task->expxferlen = xferlen; return task; @@ -1370,7 +1382,11 @@ scsi_cdb_modesense6(int dbd, enum scsi_modesense_page_control pc, task->cdb[4] = alloc_len; task->cdb_size = 6; - task->xfer_dir = SCSI_XFER_READ; + if (alloc_len != 0) { + task->xfer_dir = SCSI_XFER_READ; + } else { + task->xfer_dir = SCSI_XFER_NONE; + } task->expxferlen = alloc_len; task->params.modesense6.dbd = dbd; @@ -1752,7 +1768,11 @@ scsi_cdb_serviceactionin16(enum scsi_service_action_in sa, uint32_t xferlen) *(uint32_t *)&task->cdb[10] = htonl(xferlen); task->cdb_size = 16; - task->xfer_dir = SCSI_XFER_READ; + if (xferlen != 0) { + task->xfer_dir = SCSI_XFER_READ; + } else { + task->xfer_dir = SCSI_XFER_NONE; + } task->expxferlen = xferlen; task->params.serviceactionin.sa = sa; @@ -1792,7 +1812,11 @@ scsi_cdb_get_lba_status(uint64_t starting_lba, uint32_t alloc_len) *(uint32_t *)&task->cdb[10] = htonl(alloc_len); task->cdb_size = 16; - task->xfer_dir = SCSI_XFER_READ; + if (alloc_len != 0) { + task->xfer_dir = SCSI_XFER_READ; + } else { + task->xfer_dir = SCSI_XFER_NONE; + } task->expxferlen = alloc_len; task->params.serviceactionin.sa = SCSI_GET_LBA_STATUS;