scsi: Make scsi sense data build more clear
Change-Id: I072abaae2d00ab84d7322f3dadd8dd30608b1a1c Signed-off-by: Ziye Yang <ziye.yang@intel.com>
This commit is contained in:
parent
379ebca018
commit
51b9664203
@ -255,7 +255,7 @@ void spdk_scsi_task_construct(struct spdk_scsi_task *task, uint32_t *owner_task_
|
||||
void spdk_scsi_task_put(struct spdk_scsi_task *task);
|
||||
void spdk_scsi_task_alloc_data(struct spdk_scsi_task *task, uint32_t alloc_len,
|
||||
uint8_t **data);
|
||||
int spdk_scsi_task_build_sense_data(struct spdk_scsi_task *task, int sk, int asc,
|
||||
void spdk_scsi_task_build_sense_data(struct spdk_scsi_task *task, int sk, int asc,
|
||||
int ascq);
|
||||
void spdk_scsi_task_set_check_condition(struct spdk_scsi_task *task, int sk,
|
||||
int asc, int ascq);
|
||||
|
@ -1801,10 +1801,10 @@ spdk_bdev_scsi_process_primary(struct spdk_bdev *bdev,
|
||||
asc = 0x00;
|
||||
ascq = 0x00;
|
||||
|
||||
data_len = spdk_scsi_task_build_sense_data(task, sk, asc, ascq);
|
||||
spdk_scsi_task_build_sense_data(task, sk, asc, ascq);
|
||||
|
||||
/* omit SenseLength */
|
||||
data_len -= 2;
|
||||
data_len = task->sense_data_len - 2;
|
||||
memcpy(data, &task->sense_data[2], data_len);
|
||||
task->data_transferred = (uint64_t)data_len;
|
||||
task->status = SPDK_SCSI_STATUS_GOOD;
|
||||
|
@ -131,24 +131,21 @@ spdk_scsi_task_alloc_data(struct spdk_scsi_task *task, uint32_t alloc_len,
|
||||
memset(task->rbuf, 0, task->alloc_len);
|
||||
}
|
||||
|
||||
int
|
||||
void
|
||||
spdk_scsi_task_build_sense_data(struct spdk_scsi_task *task, int sk, int asc, int ascq)
|
||||
{
|
||||
uint8_t *data;
|
||||
uint8_t *cp;
|
||||
int resp_code;
|
||||
int hlen = 0, len, plen;
|
||||
int total;
|
||||
|
||||
data = task->sense_data;
|
||||
resp_code = 0x70; /* Current + Fixed format */
|
||||
|
||||
/* SenseLength */
|
||||
memset(data, 0, 2);
|
||||
hlen = 2;
|
||||
|
||||
/* Sense Data */
|
||||
cp = &data[hlen];
|
||||
cp = &data[2];
|
||||
|
||||
/* VALID(7) RESPONSE CODE(6-0) */
|
||||
cp[0] = 0x80 | resp_code;
|
||||
@ -158,9 +155,9 @@ spdk_scsi_task_build_sense_data(struct spdk_scsi_task *task, int sk, int asc, in
|
||||
cp[2] = sk & 0xf;
|
||||
/* INFORMATION */
|
||||
memset(&cp[3], 0, 4);
|
||||
|
||||
/* ADDITIONAL SENSE LENGTH */
|
||||
cp[7] = 0;
|
||||
len = 8;
|
||||
cp[7] = 10;
|
||||
|
||||
/* COMMAND-SPECIFIC INFORMATION */
|
||||
memset(&cp[8], 0, 4);
|
||||
@ -175,19 +172,10 @@ spdk_scsi_task_build_sense_data(struct spdk_scsi_task *task, int sk, int asc, in
|
||||
cp[15] = 0;
|
||||
cp[16] = 0;
|
||||
cp[17] = 0;
|
||||
/* Additional sense bytes */
|
||||
plen = 18 - len;
|
||||
|
||||
/* ADDITIONAL SENSE LENGTH */
|
||||
cp[7] = plen;
|
||||
|
||||
total = hlen + len + plen;
|
||||
|
||||
/* SenseLength */
|
||||
to_be16(data, total - 2);
|
||||
task->sense_data_len = total;
|
||||
|
||||
return total;
|
||||
to_be16(data, 18);
|
||||
task->sense_data_len = 20;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -72,24 +72,21 @@ spdk_scsi_task_alloc_data(struct spdk_scsi_task *task, uint32_t alloc_len,
|
||||
*data = task->rbuf;
|
||||
}
|
||||
|
||||
int
|
||||
void
|
||||
spdk_scsi_task_build_sense_data(struct spdk_scsi_task *task, int sk, int asc, int ascq)
|
||||
{
|
||||
uint8_t *data;
|
||||
uint8_t *cp;
|
||||
int resp_code;
|
||||
int hlen = 0, len, plen;
|
||||
int total;
|
||||
|
||||
data = task->sense_data;
|
||||
resp_code = 0x70; /* Current + Fixed format */
|
||||
|
||||
/* SenseLength */
|
||||
memset(data, 0, 2);
|
||||
hlen = 2;
|
||||
|
||||
/* Sense Data */
|
||||
cp = &data[hlen];
|
||||
cp = &data[2];
|
||||
|
||||
/* VALID(7) RESPONSE CODE(6-0) */
|
||||
cp[0] = 0x80 | resp_code;
|
||||
@ -99,9 +96,9 @@ spdk_scsi_task_build_sense_data(struct spdk_scsi_task *task, int sk, int asc, in
|
||||
cp[2] = sk & 0xf;
|
||||
/* INFORMATION */
|
||||
memset(&cp[3], 0, 4);
|
||||
|
||||
/* ADDITIONAL SENSE LENGTH */
|
||||
cp[7] = 0;
|
||||
len = 8;
|
||||
cp[7] = 10;
|
||||
|
||||
/* COMMAND-SPECIFIC INFORMATION */
|
||||
memset(&cp[8], 0, 4);
|
||||
@ -116,19 +113,10 @@ spdk_scsi_task_build_sense_data(struct spdk_scsi_task *task, int sk, int asc, in
|
||||
cp[15] = 0;
|
||||
cp[16] = 0;
|
||||
cp[17] = 0;
|
||||
/* Additional sense bytes */
|
||||
plen = 18 - len;
|
||||
|
||||
/* ADDITIONAL SENSE LENGTH */
|
||||
cp[7] = plen;
|
||||
|
||||
total = hlen + len + plen;
|
||||
|
||||
/* SenseLength */
|
||||
to_be16(data, total - 2);
|
||||
task->sense_data_len = total;
|
||||
|
||||
return total;
|
||||
to_be16(data, 18);
|
||||
task->sense_data_len = 20;
|
||||
}
|
||||
|
||||
struct spdk_bdev_io *
|
||||
|
Loading…
Reference in New Issue
Block a user