diff options
| -rwxr-xr-x | Documentation/target/tcm_mod_builder.py | 8 | ||||
| -rw-r--r-- | drivers/infiniband/ulp/srpt/ib_srpt.c | 6 | ||||
| -rw-r--r-- | drivers/scsi/qla2xxx/tcm_qla2xxx.c | 8 | ||||
| -rw-r--r-- | drivers/target/iscsi/iscsi_target.c | 13 | ||||
| -rw-r--r-- | drivers/target/iscsi/iscsi_target_configfs.c | 16 | ||||
| -rw-r--r-- | drivers/target/loopback/tcm_loop.c | 6 | ||||
| -rw-r--r-- | drivers/target/sbp/sbp_target.c | 6 | ||||
| -rw-r--r-- | drivers/target/target_core_configfs.c | 4 | ||||
| -rw-r--r-- | drivers/target/target_core_transport.c | 155 | ||||
| -rw-r--r-- | drivers/target/tcm_fc/tfc_conf.c | 6 | ||||
| -rw-r--r-- | drivers/usb/gadget/tcm_usb_gadget.c | 6 | ||||
| -rw-r--r-- | drivers/vhost/tcm_vhost.c | 7 | ||||
| -rw-r--r-- | include/target/target_core_fabric.h | 1 | 
13 files changed, 79 insertions, 163 deletions
diff --git a/Documentation/target/tcm_mod_builder.py b/Documentation/target/tcm_mod_builder.py index 13652381cb7..3fe0d812dce 100755 --- a/Documentation/target/tcm_mod_builder.py +++ b/Documentation/target/tcm_mod_builder.py @@ -402,7 +402,6 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):  	buf += "	.queue_data_in			= " + fabric_mod_name + "_queue_data_in,\n"  	buf += "	.queue_status			= " + fabric_mod_name + "_queue_status,\n"  	buf += "	.queue_tm_rsp			= " + fabric_mod_name + "_queue_tm_rsp,\n" -	buf += "	.set_fabric_sense_len		= " + fabric_mod_name + "_set_fabric_sense_len,\n"  	buf += "	.is_state_remove		= " + fabric_mod_name + "_is_state_remove,\n"  	buf += "	/*\n"  	buf += "	 * Setup function pointers for generic logic in target_core_fabric_configfs.c\n" @@ -905,13 +904,6 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name):  			buf += "}\n\n"  			bufi += "int " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *);\n" -		if re.search('set_fabric_sense_len\)\(', fo): -			buf += "u16 " + fabric_mod_name + "_set_fabric_sense_len(struct se_cmd *se_cmd, u32 sense_length)\n" -			buf += "{\n" -			buf += "	return 0;\n" -			buf += "}\n\n" -			bufi += "u16 " + fabric_mod_name + "_set_fabric_sense_len(struct se_cmd *, u32);\n" -  		if re.search('is_state_remove\)\(', fo):  			buf += "int " + fabric_mod_name + "_is_state_remove(struct se_cmd *se_cmd)\n"  			buf += "{\n" diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c index 9e949750be3..cf23c46185b 100644 --- a/drivers/infiniband/ulp/srpt/ib_srpt.c +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -3564,11 +3564,6 @@ static int srpt_get_tcm_cmd_state(struct se_cmd *se_cmd)  	return srpt_get_cmd_state(ioctx);  } -static u16 srpt_set_fabric_sense_len(struct se_cmd *cmd, u32 sense_length) -{ -	return 0; -} -  /**   * srpt_parse_i_port_id() - Parse an initiator port ID.   * @name: ASCII representation of a 128-bit initiator port ID. @@ -3948,7 +3943,6 @@ static struct target_core_fabric_ops srpt_template = {  	.queue_data_in			= srpt_queue_response,  	.queue_status			= srpt_queue_status,  	.queue_tm_rsp			= srpt_queue_response, -	.set_fabric_sense_len		= srpt_set_fabric_sense_len,  	/*  	 * Setup function pointers for generic logic in  	 * target_core_fabric_configfs.c diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c index 556afd5da9f..2358c16c4c8 100644 --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c @@ -735,12 +735,6 @@ static int tcm_qla2xxx_queue_tm_rsp(struct se_cmd *se_cmd)  	return 0;  } -static u16 tcm_qla2xxx_set_fabric_sense_len(struct se_cmd *se_cmd, -					u32 sense_length) -{ -	return 0; -} -  /* Local pointer to allocated TCM configfs fabric module */  struct target_fabric_configfs *tcm_qla2xxx_fabric_configfs;  struct target_fabric_configfs *tcm_qla2xxx_npiv_fabric_configfs; @@ -1686,7 +1680,6 @@ static struct target_core_fabric_ops tcm_qla2xxx_ops = {  	.queue_data_in			= tcm_qla2xxx_queue_data_in,  	.queue_status			= tcm_qla2xxx_queue_status,  	.queue_tm_rsp			= tcm_qla2xxx_queue_tm_rsp, -	.set_fabric_sense_len		= tcm_qla2xxx_set_fabric_sense_len,  	/*  	 * Setup function pointers for generic logic in  	 * target_core_fabric_configfs.c @@ -1734,7 +1727,6 @@ static struct target_core_fabric_ops tcm_qla2xxx_npiv_ops = {  	.queue_data_in			= tcm_qla2xxx_queue_data_in,  	.queue_status			= tcm_qla2xxx_queue_status,  	.queue_tm_rsp			= tcm_qla2xxx_queue_tm_rsp, -	.set_fabric_sense_len		= tcm_qla2xxx_set_fabric_sense_len,  	/*  	 * Setup function pointers for generic logic in  	 * target_core_fabric_configfs.c diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index 97c0f78c3c9..9cfdeedaadb 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c @@ -953,7 +953,7 @@ done:  	 */  	transport_init_se_cmd(&cmd->se_cmd, &lio_target_fabric_configfs->tf_ops,  			conn->sess->se_sess, hdr->data_length, cmd->data_direction, -			sam_task_attr, &cmd->sense_buffer[0]); +			sam_task_attr, cmd->sense_buffer + 2);  	pr_debug("Got SCSI Command, ITT: 0x%08x, CmdSN: 0x%08x,"  		" ExpXferLen: %u, Length: %u, CID: %hu\n", hdr->itt, @@ -1700,7 +1700,7 @@ static int iscsit_handle_task_mgt_cmd(  		transport_init_se_cmd(&cmd->se_cmd,  				      &lio_target_fabric_configfs->tf_ops,  				      conn->sess->se_sess, 0, DMA_NONE, -				      MSG_SIMPLE_TAG, &cmd->sense_buffer[0]); +				      MSG_SIMPLE_TAG, cmd->sense_buffer + 2);  		switch (function) {  		case ISCSI_TM_FUNC_ABORT_TASK: @@ -3092,15 +3092,18 @@ static int iscsit_send_status(  	if (cmd->se_cmd.sense_buffer &&  	   ((cmd->se_cmd.se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) ||  	    (cmd->se_cmd.se_cmd_flags & SCF_EMULATED_TASK_SENSE))) { +		put_unaligned_be16(cmd->se_cmd.scsi_sense_length, cmd->sense_buffer); +		cmd->se_cmd.scsi_sense_length += sizeof (__be16); +  		padding		= -(cmd->se_cmd.scsi_sense_length) & 3;  		hton24(hdr->dlength, cmd->se_cmd.scsi_sense_length); -		iov[iov_count].iov_base	= cmd->se_cmd.sense_buffer; +		iov[iov_count].iov_base	= cmd->sense_buffer;  		iov[iov_count++].iov_len =  				(cmd->se_cmd.scsi_sense_length + padding);  		tx_size += cmd->se_cmd.scsi_sense_length;  		if (padding) { -			memset(cmd->se_cmd.sense_buffer + +			memset(cmd->sense_buffer +  				cmd->se_cmd.scsi_sense_length, 0, padding);  			tx_size += padding;  			pr_debug("Adding %u bytes of padding to" @@ -3109,7 +3112,7 @@ static int iscsit_send_status(  		if (conn->conn_ops->DataDigest) {  			iscsit_do_crypto_hash_buf(&conn->conn_tx_hash, -				cmd->se_cmd.sense_buffer, +				cmd->sense_buffer,  				(cmd->se_cmd.scsi_sense_length + padding),  				0, NULL, (u8 *)&cmd->data_crc); diff --git a/drivers/target/iscsi/iscsi_target_configfs.c b/drivers/target/iscsi/iscsi_target_configfs.c index 518fd4e8640..f86833fcf33 100644 --- a/drivers/target/iscsi/iscsi_target_configfs.c +++ b/drivers/target/iscsi/iscsi_target_configfs.c @@ -1542,21 +1542,6 @@ static int lio_queue_status(struct se_cmd *se_cmd)  	return 0;  } -static u16 lio_set_fabric_sense_len(struct se_cmd *se_cmd, u32 sense_length) -{ -	unsigned char *buffer = se_cmd->sense_buffer; -	/* -	 * From RFC-3720 10.4.7.  Data Segment - Sense and Response Data Segment -	 * 16-bit SenseLength. -	 */ -	buffer[0] = ((sense_length >> 8) & 0xff); -	buffer[1] = (sense_length & 0xff); -	/* -	 * Return two byte offset into allocated sense_buffer. -	 */ -	return 2; -} -  static int lio_queue_tm_rsp(struct se_cmd *se_cmd)  {  	struct iscsi_cmd *cmd = container_of(se_cmd, struct iscsi_cmd, se_cmd); @@ -1740,7 +1725,6 @@ int iscsi_target_register_configfs(void)  	fabric->tf_ops.queue_data_in = &lio_queue_data_in;  	fabric->tf_ops.queue_status = &lio_queue_status;  	fabric->tf_ops.queue_tm_rsp = &lio_queue_tm_rsp; -	fabric->tf_ops.set_fabric_sense_len = &lio_set_fabric_sense_len;  	/*  	 * Setup function pointers for generic logic in target_core_fabric_configfs.c  	 */ diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c index 4ab1d0b43a8..7a0da1ae004 100644 --- a/drivers/target/loopback/tcm_loop.c +++ b/drivers/target/loopback/tcm_loop.c @@ -846,11 +846,6 @@ static int tcm_loop_queue_tm_rsp(struct se_cmd *se_cmd)  	return 0;  } -static u16 tcm_loop_set_fabric_sense_len(struct se_cmd *se_cmd, u32 sense_length) -{ -	return 0; -} -  static char *tcm_loop_dump_proto_id(struct tcm_loop_hba *tl_hba)  {  	switch (tl_hba->tl_proto_id) { @@ -1368,7 +1363,6 @@ static int tcm_loop_register_configfs(void)  	fabric->tf_ops.queue_data_in = &tcm_loop_queue_data_in;  	fabric->tf_ops.queue_status = &tcm_loop_queue_status;  	fabric->tf_ops.queue_tm_rsp = &tcm_loop_queue_tm_rsp; -	fabric->tf_ops.set_fabric_sense_len = &tcm_loop_set_fabric_sense_len;  	/*  	 * Setup function pointers for generic logic in target_core_fabric_configfs.c diff --git a/drivers/target/sbp/sbp_target.c b/drivers/target/sbp/sbp_target.c index cb40a40326c..4d979774463 100644 --- a/drivers/target/sbp/sbp_target.c +++ b/drivers/target/sbp/sbp_target.c @@ -1847,11 +1847,6 @@ static int sbp_queue_tm_rsp(struct se_cmd *se_cmd)  	return 0;  } -static u16 sbp_set_fabric_sense_len(struct se_cmd *se_cmd, u32 sense_length) -{ -	return 0; -} -  static int sbp_check_stop_free(struct se_cmd *se_cmd)  {  	struct sbp_target_request *req = container_of(se_cmd, @@ -2529,7 +2524,6 @@ static struct target_core_fabric_ops sbp_ops = {  	.queue_data_in			= sbp_queue_data_in,  	.queue_status			= sbp_queue_status,  	.queue_tm_rsp			= sbp_queue_tm_rsp, -	.set_fabric_sense_len		= sbp_set_fabric_sense_len,  	.check_stop_free		= sbp_check_stop_free,  	.fabric_make_wwn		= sbp_make_tport, diff --git a/drivers/target/target_core_configfs.c b/drivers/target/target_core_configfs.c index 946d8e952b6..81dbfed16b2 100644 --- a/drivers/target/target_core_configfs.c +++ b/drivers/target/target_core_configfs.c @@ -457,10 +457,6 @@ static int target_fabric_tf_ops_check(  		pr_err("Missing tfo->queue_tm_rsp()\n");  		return -EINVAL;  	} -	if (!tfo->set_fabric_sense_len) { -		pr_err("Missing tfo->set_fabric_sense_len()\n"); -		return -EINVAL; -	}  	/*  	 * We at least require tfo->fabric_make_wwn(), tfo->fabric_drop_wwn()  	 * tfo->fabric_make_tpg() and tfo->fabric_drop_tpg() in diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index fd0d0f03326..d6d48447f1a 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -567,9 +567,7 @@ static void target_complete_failure_work(struct work_struct *work)   */  static unsigned char *transport_get_sense_buffer(struct se_cmd *cmd)  { -	unsigned char *buffer = cmd->sense_buffer;  	struct se_device *dev = cmd->se_dev; -	u32 offset = 0;  	WARN_ON(!cmd->se_lun); @@ -579,14 +577,11 @@ static unsigned char *transport_get_sense_buffer(struct se_cmd *cmd)  	if (cmd->se_cmd_flags & SCF_SENT_CHECK_CONDITION)  		return NULL; -	offset = cmd->se_tfo->set_fabric_sense_len(cmd, TRANSPORT_SENSE_BUFFER); - -	/* Automatically padded */ -	cmd->scsi_sense_length = TRANSPORT_SENSE_BUFFER + offset; +	cmd->scsi_sense_length = TRANSPORT_SENSE_BUFFER;  	pr_debug("HBA_[%u]_PLUG[%s]: Requesting sense for SAM STATUS: 0x%02x\n",  		dev->se_hba->hba_id, dev->transport->name, cmd->scsi_status); -	return &buffer[offset]; +	return cmd->sense_buffer;  }  void target_complete_cmd(struct se_cmd *cmd, u8 scsi_status) @@ -2804,7 +2799,6 @@ int transport_send_check_condition_and_sense(  {  	unsigned char *buffer = cmd->sense_buffer;  	unsigned long flags; -	int offset;  	u8 asc = 0, ascq = 0;  	spin_lock_irqsave(&cmd->t_state_lock, flags); @@ -2820,14 +2814,7 @@ int transport_send_check_condition_and_sense(  	if (!from_transport)  		cmd->se_cmd_flags |= SCF_EMULATED_TASK_SENSE; -	/* -	 * Data Segment and SenseLength of the fabric response PDU. -	 * -	 * TRANSPORT_SENSE_BUFFER is now set to SCSI_SENSE_BUFFERSIZE -	 * from include/scsi/scsi_cmnd.h -	 */ -	offset = cmd->se_tfo->set_fabric_sense_len(cmd, -				TRANSPORT_SENSE_BUFFER); +  	/*  	 * Actual SENSE DATA, see SPC-3 7.23.2  SPC_SENSE_KEY_OFFSET uses  	 * SENSE KEY values from include/scsi/scsi.h @@ -2835,151 +2822,151 @@ int transport_send_check_condition_and_sense(  	switch (reason) {  	case TCM_NON_EXISTENT_LUN:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ILLEGAL REQUEST */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; +		buffer[SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;  		/* LOGICAL UNIT NOT SUPPORTED */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x25; +		buffer[SPC_ASC_KEY_OFFSET] = 0x25;  		break;  	case TCM_UNSUPPORTED_SCSI_OPCODE:  	case TCM_SECTOR_COUNT_TOO_MANY:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ILLEGAL REQUEST */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; +		buffer[SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;  		/* INVALID COMMAND OPERATION CODE */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x20; +		buffer[SPC_ASC_KEY_OFFSET] = 0x20;  		break;  	case TCM_UNKNOWN_MODE_PAGE:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ILLEGAL REQUEST */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; +		buffer[SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;  		/* INVALID FIELD IN CDB */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x24; +		buffer[SPC_ASC_KEY_OFFSET] = 0x24;  		break;  	case TCM_CHECK_CONDITION_ABORT_CMD:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ABORTED COMMAND */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND; +		buffer[SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;  		/* BUS DEVICE RESET FUNCTION OCCURRED */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x29; -		buffer[offset+SPC_ASCQ_KEY_OFFSET] = 0x03; +		buffer[SPC_ASC_KEY_OFFSET] = 0x29; +		buffer[SPC_ASCQ_KEY_OFFSET] = 0x03;  		break;  	case TCM_INCORRECT_AMOUNT_OF_DATA:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ABORTED COMMAND */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND; +		buffer[SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;  		/* WRITE ERROR */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x0c; +		buffer[SPC_ASC_KEY_OFFSET] = 0x0c;  		/* NOT ENOUGH UNSOLICITED DATA */ -		buffer[offset+SPC_ASCQ_KEY_OFFSET] = 0x0d; +		buffer[SPC_ASCQ_KEY_OFFSET] = 0x0d;  		break;  	case TCM_INVALID_CDB_FIELD:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ILLEGAL REQUEST */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; +		buffer[SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;  		/* INVALID FIELD IN CDB */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x24; +		buffer[SPC_ASC_KEY_OFFSET] = 0x24;  		break;  	case TCM_INVALID_PARAMETER_LIST:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ILLEGAL REQUEST */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; +		buffer[SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;  		/* INVALID FIELD IN PARAMETER LIST */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x26; +		buffer[SPC_ASC_KEY_OFFSET] = 0x26;  		break;  	case TCM_UNEXPECTED_UNSOLICITED_DATA:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ABORTED COMMAND */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND; +		buffer[SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;  		/* WRITE ERROR */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x0c; +		buffer[SPC_ASC_KEY_OFFSET] = 0x0c;  		/* UNEXPECTED_UNSOLICITED_DATA */ -		buffer[offset+SPC_ASCQ_KEY_OFFSET] = 0x0c; +		buffer[SPC_ASCQ_KEY_OFFSET] = 0x0c;  		break;  	case TCM_SERVICE_CRC_ERROR:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ABORTED COMMAND */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND; +		buffer[SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;  		/* PROTOCOL SERVICE CRC ERROR */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x47; +		buffer[SPC_ASC_KEY_OFFSET] = 0x47;  		/* N/A */ -		buffer[offset+SPC_ASCQ_KEY_OFFSET] = 0x05; +		buffer[SPC_ASCQ_KEY_OFFSET] = 0x05;  		break;  	case TCM_SNACK_REJECTED:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ABORTED COMMAND */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND; +		buffer[SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;  		/* READ ERROR */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x11; +		buffer[SPC_ASC_KEY_OFFSET] = 0x11;  		/* FAILED RETRANSMISSION REQUEST */ -		buffer[offset+SPC_ASCQ_KEY_OFFSET] = 0x13; +		buffer[SPC_ASCQ_KEY_OFFSET] = 0x13;  		break;  	case TCM_WRITE_PROTECTED:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* DATA PROTECT */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = DATA_PROTECT; +		buffer[SPC_SENSE_KEY_OFFSET] = DATA_PROTECT;  		/* WRITE PROTECTED */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x27; +		buffer[SPC_ASC_KEY_OFFSET] = 0x27;  		break;  	case TCM_ADDRESS_OUT_OF_RANGE:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ILLEGAL REQUEST */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; +		buffer[SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;  		/* LOGICAL BLOCK ADDRESS OUT OF RANGE */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x21; +		buffer[SPC_ASC_KEY_OFFSET] = 0x21;  		break;  	case TCM_CHECK_CONDITION_UNIT_ATTENTION:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* UNIT ATTENTION */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = UNIT_ATTENTION; +		buffer[SPC_SENSE_KEY_OFFSET] = UNIT_ATTENTION;  		core_scsi3_ua_for_check_condition(cmd, &asc, &ascq); -		buffer[offset+SPC_ASC_KEY_OFFSET] = asc; -		buffer[offset+SPC_ASCQ_KEY_OFFSET] = ascq; +		buffer[SPC_ASC_KEY_OFFSET] = asc; +		buffer[SPC_ASCQ_KEY_OFFSET] = ascq;  		break;  	case TCM_CHECK_CONDITION_NOT_READY:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* Not Ready */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = NOT_READY; +		buffer[SPC_SENSE_KEY_OFFSET] = NOT_READY;  		transport_get_sense_codes(cmd, &asc, &ascq); -		buffer[offset+SPC_ASC_KEY_OFFSET] = asc; -		buffer[offset+SPC_ASCQ_KEY_OFFSET] = ascq; +		buffer[SPC_ASC_KEY_OFFSET] = asc; +		buffer[SPC_ASCQ_KEY_OFFSET] = ascq;  		break;  	case TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE:  	default:  		/* CURRENT ERROR */ -		buffer[offset] = 0x70; -		buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; +		buffer[0] = 0x70; +		buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;  		/* ILLEGAL REQUEST */ -		buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; +		buffer[SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;  		/* LOGICAL UNIT COMMUNICATION FAILURE */ -		buffer[offset+SPC_ASC_KEY_OFFSET] = 0x80; +		buffer[SPC_ASC_KEY_OFFSET] = 0x80;  		break;  	}  	/* @@ -2990,7 +2977,7 @@ int transport_send_check_condition_and_sense(  	 * Automatically padded, this value is encoded in the fabric's  	 * data_length response PDU containing the SCSI defined sense data.  	 */ -	cmd->scsi_sense_length  = TRANSPORT_SENSE_BUFFER + offset; +	cmd->scsi_sense_length  = TRANSPORT_SENSE_BUFFER;  after_reason:  	return cmd->se_tfo->queue_status(cmd); diff --git a/drivers/target/tcm_fc/tfc_conf.c b/drivers/target/tcm_fc/tfc_conf.c index 4f97701350a..b74feb0d513 100644 --- a/drivers/target/tcm_fc/tfc_conf.c +++ b/drivers/target/tcm_fc/tfc_conf.c @@ -495,11 +495,6 @@ static void ft_set_default_node_attr(struct se_node_acl *se_nacl)  {  } -static u16 ft_set_fabric_sense_len(struct se_cmd *se_cmd, u32 sense_len) -{ -	return 0; -} -  static u32 ft_tpg_get_inst_index(struct se_portal_group *se_tpg)  {  	struct ft_tpg *tpg = se_tpg->se_tpg_fabric_ptr; @@ -537,7 +532,6 @@ static struct target_core_fabric_ops ft_fabric_ops = {  	.queue_data_in =		ft_queue_data_in,  	.queue_status =			ft_queue_status,  	.queue_tm_rsp =			ft_queue_tm_resp, -	.set_fabric_sense_len =		ft_set_fabric_sense_len,  	/*  	 * Setup function pointers for generic logic in  	 * target_core_fabric_configfs.c diff --git a/drivers/usb/gadget/tcm_usb_gadget.c b/drivers/usb/gadget/tcm_usb_gadget.c index b7ac43b0885..575c82437e4 100644 --- a/drivers/usb/gadget/tcm_usb_gadget.c +++ b/drivers/usb/gadget/tcm_usb_gadget.c @@ -1475,11 +1475,6 @@ static int usbg_queue_tm_rsp(struct se_cmd *se_cmd)  	return 0;  } -static u16 usbg_set_fabric_sense_len(struct se_cmd *se_cmd, u32 sense_length) -{ -	return 0; -} -  static const char *usbg_check_wwn(const char *name)  {  	const char *n; @@ -1905,7 +1900,6 @@ static struct target_core_fabric_ops usbg_ops = {  	.queue_data_in			= usbg_send_read_response,  	.queue_status			= usbg_send_status_response,  	.queue_tm_rsp			= usbg_queue_tm_rsp, -	.set_fabric_sense_len		= usbg_set_fabric_sense_len,  	.check_stop_free		= usbg_check_stop_free,  	.fabric_make_wwn		= usbg_make_tport, diff --git a/drivers/vhost/tcm_vhost.c b/drivers/vhost/tcm_vhost.c index 94e6e04aecf..89dc99baca8 100644 --- a/drivers/vhost/tcm_vhost.c +++ b/drivers/vhost/tcm_vhost.c @@ -330,12 +330,6 @@ static int tcm_vhost_queue_tm_rsp(struct se_cmd *se_cmd)  	return 0;  } -static u16 tcm_vhost_set_fabric_sense_len(struct se_cmd *se_cmd, -	u32 sense_length) -{ -	return 0; -} -  static void vhost_scsi_free_cmd(struct tcm_vhost_cmd *tv_cmd)  {  	struct se_cmd *se_cmd = &tv_cmd->tvc_se_cmd; @@ -1526,7 +1520,6 @@ static struct target_core_fabric_ops tcm_vhost_ops = {  	.queue_data_in			= tcm_vhost_queue_data_in,  	.queue_status			= tcm_vhost_queue_status,  	.queue_tm_rsp			= tcm_vhost_queue_tm_rsp, -	.set_fabric_sense_len		= tcm_vhost_set_fabric_sense_len,  	/*  	 * Setup callers for generic logic in target_core_fabric_configfs.c  	 */ diff --git a/include/target/target_core_fabric.h b/include/target/target_core_fabric.h index a218d02f829..85a5d7a9954 100644 --- a/include/target/target_core_fabric.h +++ b/include/target/target_core_fabric.h @@ -62,7 +62,6 @@ struct target_core_fabric_ops {  	int (*queue_data_in)(struct se_cmd *);  	int (*queue_status)(struct se_cmd *);  	int (*queue_tm_rsp)(struct se_cmd *); -	u16 (*set_fabric_sense_len)(struct se_cmd *, u32);  	/*  	 * fabric module calls for target_core_fabric_configfs.c  	 */  |