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:
- enable dual mode (initiator + target) qla2xxx operation. (Quinn +
Himanshu)
- add a framework for qla2xxx async fabric discovery. (Quinn +
Himanshu)
- enable iscsi PDU DDP completion offload in cxgbit/T6 NICs. (Varun)
- fix target-core handling of aborted failed commands. (Bart)
- fix a long standing target-core issue NULL pointer dereference with
active I/O LUN shutdown. (Rob Millner + Bryant + nab)"
* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (44 commits)
target: Add counters for ABORT_TASK success + failure
iscsi-target: Fix early login failure statistics misses
target: Fix NULL dereference during LUN lookup + active I/O shutdown
target: Delete tmr from list before processing
target: Fix handling of aborted failed commands
uapi: fix linux/target_core_user.h userspace compilation errors
target: export protocol identifier
qla2xxx: Fix a warning reported by the "smatch" static checker
target/iscsi: Fix unsolicited data seq_end_offset calculation
target/cxgbit: add T6 iSCSI DDP completion feature
target/cxgbit: Enable DDP for T6 only if data sequence and pdu are in order
target/cxgbit: Use T6 specific macros to get ETH/IP hdr len
target/cxgbit: use cxgb4_tp_smt_idx() to get smt idx
target/iscsi: split iscsit_check_dataout_hdr()
target: Remove command flag CMD_T_DEV_ACTIVE
target: Remove command flag CMD_T_BUSY
target: Move session check from target_put_sess_cmd() into target_release_cmd_kref()
target: Inline transport_cmd_check_stop()
target: Remove an overly chatty debug message
target: Stop execution if CMD_T_STOP has been set
...
This commit is contained in:
@@ -55,8 +55,12 @@ extern int iscsit_setup_scsi_cmd(struct iscsi_conn *, struct iscsi_cmd *,
|
||||
extern void iscsit_set_unsoliticed_dataout(struct iscsi_cmd *);
|
||||
extern int iscsit_process_scsi_cmd(struct iscsi_conn *, struct iscsi_cmd *,
|
||||
struct iscsi_scsi_req *);
|
||||
extern int iscsit_check_dataout_hdr(struct iscsi_conn *, unsigned char *,
|
||||
struct iscsi_cmd **);
|
||||
extern int
|
||||
__iscsit_check_dataout_hdr(struct iscsi_conn *, void *,
|
||||
struct iscsi_cmd *, u32, bool *);
|
||||
extern int
|
||||
iscsit_check_dataout_hdr(struct iscsi_conn *conn, void *buf,
|
||||
struct iscsi_cmd **out_cmd);
|
||||
extern int iscsit_check_dataout_payload(struct iscsi_cmd *, struct iscsi_data *,
|
||||
bool);
|
||||
extern int iscsit_setup_nop_out(struct iscsi_conn *, struct iscsi_cmd *,
|
||||
@@ -125,6 +129,9 @@ extern void iscsit_release_cmd(struct iscsi_cmd *);
|
||||
extern void iscsit_free_cmd(struct iscsi_cmd *, bool);
|
||||
extern void iscsit_add_cmd_to_immediate_queue(struct iscsi_cmd *,
|
||||
struct iscsi_conn *, u8);
|
||||
extern struct iscsi_cmd *
|
||||
iscsit_find_cmd_from_itt_or_dump(struct iscsi_conn *conn,
|
||||
itt_t init_task_tag, u32 length);
|
||||
|
||||
/*
|
||||
* From iscsi_target_nego.c
|
||||
|
||||
@@ -197,6 +197,7 @@ enum tcm_tmreq_table {
|
||||
TMR_LUN_RESET = 5,
|
||||
TMR_TARGET_WARM_RESET = 6,
|
||||
TMR_TARGET_COLD_RESET = 7,
|
||||
TMR_UNKNOWN = 0xff,
|
||||
};
|
||||
|
||||
/* fabric independent task management response values */
|
||||
@@ -397,7 +398,6 @@ struct se_tmr_req {
|
||||
void *fabric_tmr_ptr;
|
||||
struct se_cmd *task_cmd;
|
||||
struct se_device *tmr_dev;
|
||||
struct se_lun *tmr_lun;
|
||||
struct list_head tmr_list;
|
||||
};
|
||||
|
||||
@@ -488,8 +488,6 @@ struct se_cmd {
|
||||
#define CMD_T_COMPLETE (1 << 2)
|
||||
#define CMD_T_SENT (1 << 4)
|
||||
#define CMD_T_STOP (1 << 5)
|
||||
#define CMD_T_DEV_ACTIVE (1 << 7)
|
||||
#define CMD_T_BUSY (1 << 9)
|
||||
#define CMD_T_TAS (1 << 10)
|
||||
#define CMD_T_FABRIC_STOP (1 << 11)
|
||||
spinlock_t t_state_lock;
|
||||
@@ -732,6 +730,7 @@ struct se_lun {
|
||||
struct config_group lun_group;
|
||||
struct se_port_stat_grps port_stat_grps;
|
||||
struct completion lun_ref_comp;
|
||||
struct completion lun_shutdown_comp;
|
||||
struct percpu_ref lun_ref;
|
||||
struct list_head lun_dev_link;
|
||||
struct hlist_node link;
|
||||
@@ -767,6 +766,8 @@ struct se_device {
|
||||
u32 dev_index;
|
||||
u64 creation_time;
|
||||
atomic_long_t num_resets;
|
||||
atomic_long_t aborts_complete;
|
||||
atomic_long_t aborts_no_task;
|
||||
atomic_long_t num_cmds;
|
||||
atomic_long_t read_bytes;
|
||||
atomic_long_t write_bytes;
|
||||
|
||||
@@ -47,7 +47,7 @@ struct target_core_fabric_ops {
|
||||
u32 (*tpg_get_inst_index)(struct se_portal_group *);
|
||||
/*
|
||||
* Optional to release struct se_cmd and fabric dependent allocated
|
||||
* I/O descriptor in transport_cmd_check_stop().
|
||||
* I/O descriptor after command execution has finished.
|
||||
*
|
||||
* Returning 1 will signal a descriptor has been released.
|
||||
* Returning 0 will signal a descriptor has not been released.
|
||||
|
||||
Reference in New Issue
Block a user