mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-26 06:33:19 -04:00
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
Pull SCSI target updates from Nicholas Bellinger:
"The highlights this round include:
- Add support for T10 PI pass-through between vhost-scsi +
virtio-scsi (MST + Paolo + MKP + nab)
- Add support for T10 PI in qla2xxx target mode (Quinn + MKP + hch +
nab, merged through scsi.git)
- Add support for percpu-ida pre-allocation in qla2xxx target code
(Quinn + nab)
- A number of iser-target fixes related to hardening the network
portal shutdown path (Sagi + Slava)
- Fix response length residual handling for a number of control CDBs
(Roland + Christophe V.)
- Various iscsi RFC conformance fixes in the CHAP authentication path
(Tejas and Calsoft folks + nab)
- Return TASK_SET_FULL status for tcm_fc(FCoE) DataIn + Response
failures (Vasu + Jun + nab)
- Fix long-standing ABORT_TASK + session reset hang (nab)
- Convert iser-initiator + iser-target to include T10 bytes into EDTL
(Sagi + Or + MKP + Mike Christie)
- Fix NULL pointer dereference regression related to XCOPY introduced
in v3.15 + CC'ed to v3.12.y (nab)"
* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (34 commits)
target: Fix NULL pointer dereference for XCOPY in target_put_sess_cmd
vhost-scsi: Include prot_bytes into expected data transfer length
TARGET/sbc,loopback: Adjust command data length in case pi exists on the wire
libiscsi, iser: Adjust data_length to include protection information
scsi_cmnd: Introduce scsi_transfer_length helper
target: Report correct response length for some commands
target/sbc: Check that the LBA and number of blocks are correct in VERIFY
target/sbc: Remove sbc_check_valid_sectors()
Target/iscsi: Fix sendtargets response pdu for iser transport
Target/iser: Fix a wrong dereference in case discovery session is over iser
iscsi-target: Fix ABORT_TASK + connection reset iscsi_queue_req memory leak
target: Use complete_all for se_cmd->t_transport_stop_comp
target: Set CMD_T_ACTIVE bit for Task Management Requests
target: cleanup some boolean tests
target/spc: Simplify INQUIRY EVPD=0x80
tcm_fc: Generate TASK_SET_FULL status for response failures
tcm_fc: Generate TASK_SET_FULL status for DataIN failures
iscsi-target: Reject mutual authentication with reflected CHAP_C
iscsi-target: Remove no-op from iscsit_tpg_del_portal_group
iscsi-target: Fix CHAP_A parameter list handling
...
This commit is contained in:
commit
ed9ea4ed3a
30 changed files with 728 additions and 364 deletions
|
|
@ -35,11 +35,23 @@ struct virtio_scsi_cmd_req {
|
|||
u8 lun[8]; /* Logical Unit Number */
|
||||
u64 tag; /* Command identifier */
|
||||
u8 task_attr; /* Task attribute */
|
||||
u8 prio;
|
||||
u8 prio; /* SAM command priority field */
|
||||
u8 crn;
|
||||
u8 cdb[VIRTIO_SCSI_CDB_SIZE];
|
||||
} __packed;
|
||||
|
||||
/* SCSI command request, followed by protection information */
|
||||
struct virtio_scsi_cmd_req_pi {
|
||||
u8 lun[8]; /* Logical Unit Number */
|
||||
u64 tag; /* Command identifier */
|
||||
u8 task_attr; /* Task attribute */
|
||||
u8 prio; /* SAM command priority field */
|
||||
u8 crn;
|
||||
u32 pi_bytesout; /* DataOUT PI Number of bytes */
|
||||
u32 pi_bytesin; /* DataIN PI Number of bytes */
|
||||
u8 cdb[VIRTIO_SCSI_CDB_SIZE];
|
||||
} __packed;
|
||||
|
||||
/* Response, followed by sense data and data-in */
|
||||
struct virtio_scsi_cmd_resp {
|
||||
u32 sense_len; /* Sense data length */
|
||||
|
|
@ -97,6 +109,7 @@ struct virtio_scsi_config {
|
|||
#define VIRTIO_SCSI_F_INOUT 0
|
||||
#define VIRTIO_SCSI_F_HOTPLUG 1
|
||||
#define VIRTIO_SCSI_F_CHANGE 2
|
||||
#define VIRTIO_SCSI_F_T10_PI 3
|
||||
|
||||
/* Response codes */
|
||||
#define VIRTIO_SCSI_S_OK 0
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/scatterlist.h>
|
||||
#include <scsi/scsi_device.h>
|
||||
|
||||
struct Scsi_Host;
|
||||
struct scsi_device;
|
||||
|
|
@ -315,4 +316,20 @@ static inline void set_driver_byte(struct scsi_cmnd *cmd, char status)
|
|||
cmd->result = (cmd->result & 0x00ffffff) | (status << 24);
|
||||
}
|
||||
|
||||
static inline unsigned scsi_transfer_length(struct scsi_cmnd *scmd)
|
||||
{
|
||||
unsigned int xfer_len = blk_rq_bytes(scmd->request);
|
||||
unsigned int prot_op = scsi_get_prot_op(scmd);
|
||||
unsigned int sector_size = scmd->device->sector_size;
|
||||
|
||||
switch (prot_op) {
|
||||
case SCSI_PROT_NORMAL:
|
||||
case SCSI_PROT_WRITE_STRIP:
|
||||
case SCSI_PROT_READ_INSERT:
|
||||
return xfer_len;
|
||||
}
|
||||
|
||||
return xfer_len + (xfer_len >> ilog2(sector_size)) * 8;
|
||||
}
|
||||
|
||||
#endif /* _SCSI_SCSI_CMND_H */
|
||||
|
|
|
|||
|
|
@ -70,7 +70,8 @@ extern void iscsit_build_nopin_rsp(struct iscsi_cmd *, struct iscsi_conn *,
|
|||
extern void iscsit_build_task_mgt_rsp(struct iscsi_cmd *, struct iscsi_conn *,
|
||||
struct iscsi_tm_rsp *);
|
||||
extern int iscsit_build_text_rsp(struct iscsi_cmd *, struct iscsi_conn *,
|
||||
struct iscsi_text_rsp *);
|
||||
struct iscsi_text_rsp *,
|
||||
enum iscsit_transport_type);
|
||||
extern void iscsit_build_reject(struct iscsi_cmd *, struct iscsi_conn *,
|
||||
struct iscsi_reject *);
|
||||
extern int iscsit_build_logout_rsp(struct iscsi_cmd *, struct iscsi_conn *,
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ int transport_subsystem_register(struct se_subsystem_api *);
|
|||
void transport_subsystem_release(struct se_subsystem_api *);
|
||||
|
||||
void target_complete_cmd(struct se_cmd *, u8);
|
||||
void target_complete_cmd_with_length(struct se_cmd *, u8, int);
|
||||
|
||||
sense_reason_t spc_parse_cdb(struct se_cmd *cmd, unsigned int *size);
|
||||
sense_reason_t spc_emulate_report_luns(struct se_cmd *cmd);
|
||||
|
|
|
|||
Loading…
Reference in a new issue