Commit 51b96642 authored by Ziye Yang's avatar Ziye Yang Committed by Jim Harris
Browse files

scsi: Make scsi sense data build more clear



Change-Id: I072abaae2d00ab84d7322f3dadd8dd30608b1a1c
Signed-off-by: default avatarZiye Yang <ziye.yang@intel.com>
parent 379ebca0
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);
+2 −2
Original line number Diff line number Diff line
@@ -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;
+6 −18
Original line number Diff line number Diff line
@@ -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
+6 −18
Original line number Diff line number Diff line
@@ -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 *