You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (55 commits) [SCSI] tcm_loop: Add multi-fabric Linux/SCSI LLD fabric module [SCSI] qla4xxx: Use polling mode for disable interrupt mailbox completion [SCSI] Revert "[SCSI] Retrieve the Caching mode page" [SCSI] bnx2fc: IO completion not processed due to missed wakeup [SCSI] qla4xxx: Update driver version to 5.02.00-k6 [SCSI] qla4xxx: masking required bits of add_fw_options during initialization [SCSI] qla4xxx: added new function qla4xxx_relogin_all_devices [SCSI] qla4xxx: add support for ql4xsess_recovery_tmo cmd line param [SCSI] qla4xxx: Add support for ql4xmaxqdepth command line parameter [SCSI] qla4xxx: cleanup function qla4xxx_process_ddb_changed [SCSI] qla4xxx: Prevent other port reinitialization during remove_adapter [SCSI] qla4xxx: remove unused ddb flag DF_NO_RELOGIN [SCSI] qla4xxx: cleanup DDB relogin logic during initialization [SCSI] qla4xxx: Do not retry ISP82XX initialization if H/W state is failed [SCSI] qla4xxx: Do not send mbox command if FW is in failed state [SCSI] qla4xxx: cleanup qla4xxx_initialize_ddb_list() [SCSI] ses: add subenclosure support [SCSI] bnx2fc: Bump version to 1.0.1 [SCSI] bnx2fc: Remove unnecessary module state checks [SCSI] bnx2fc: Fix MTU issue by using static MTU ...
This commit is contained in:
@@ -47,6 +47,7 @@ struct iscsi_segment {
|
||||
struct scatterlist *sg;
|
||||
void *sg_mapped;
|
||||
unsigned int sg_offset;
|
||||
bool atomic_mapped;
|
||||
|
||||
iscsi_segment_done_fn_t *done;
|
||||
};
|
||||
|
||||
@@ -462,7 +462,7 @@ static inline int scsi_device_qas(struct scsi_device *sdev)
|
||||
}
|
||||
static inline int scsi_device_enclosure(struct scsi_device *sdev)
|
||||
{
|
||||
return sdev->inquiry[6] & (1<<6);
|
||||
return sdev->inquiry ? (sdev->inquiry[6] & (1<<6)) : 1;
|
||||
}
|
||||
|
||||
static inline int scsi_device_protection(struct scsi_device *sdev)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <net/sock.h>
|
||||
#include <net/tcp.h>
|
||||
|
||||
#define TARGET_CORE_MOD_VERSION "v4.0.0-rc6"
|
||||
#define TARGET_CORE_MOD_VERSION "v4.0.0-rc7-ml"
|
||||
#define SHUTDOWN_SIGS (sigmask(SIGKILL)|sigmask(SIGINT)|sigmask(SIGABRT))
|
||||
|
||||
/* Used by transport_generic_allocate_iovecs() */
|
||||
@@ -239,7 +239,7 @@ struct t10_alua_lu_gp {
|
||||
} ____cacheline_aligned;
|
||||
|
||||
struct t10_alua_lu_gp_member {
|
||||
int lu_gp_assoc:1;
|
||||
bool lu_gp_assoc;
|
||||
atomic_t lu_gp_mem_ref_cnt;
|
||||
spinlock_t lu_gp_mem_lock;
|
||||
struct t10_alua_lu_gp *lu_gp;
|
||||
@@ -271,7 +271,7 @@ struct t10_alua_tg_pt_gp {
|
||||
} ____cacheline_aligned;
|
||||
|
||||
struct t10_alua_tg_pt_gp_member {
|
||||
int tg_pt_gp_assoc:1;
|
||||
bool tg_pt_gp_assoc;
|
||||
atomic_t tg_pt_gp_mem_ref_cnt;
|
||||
spinlock_t tg_pt_gp_mem_lock;
|
||||
struct t10_alua_tg_pt_gp *tg_pt_gp;
|
||||
@@ -336,7 +336,7 @@ struct t10_pr_registration {
|
||||
int pr_res_type;
|
||||
int pr_res_scope;
|
||||
/* Used for fabric initiator WWPNs using a ISID */
|
||||
int isid_present_at_reg:1;
|
||||
bool isid_present_at_reg;
|
||||
u32 pr_res_mapped_lun;
|
||||
u32 pr_aptpl_target_lun;
|
||||
u32 pr_res_generation;
|
||||
@@ -418,7 +418,7 @@ struct se_transport_task {
|
||||
unsigned long long t_task_lba;
|
||||
int t_tasks_failed;
|
||||
int t_tasks_fua;
|
||||
int t_tasks_bidi:1;
|
||||
bool t_tasks_bidi;
|
||||
u32 t_task_cdbs;
|
||||
u32 t_tasks_check;
|
||||
u32 t_tasks_no;
|
||||
@@ -470,7 +470,7 @@ struct se_task {
|
||||
u8 task_flags;
|
||||
int task_error_status;
|
||||
int task_state_flags;
|
||||
int task_padded_sg:1;
|
||||
bool task_padded_sg;
|
||||
unsigned long long task_lba;
|
||||
u32 task_no;
|
||||
u32 task_sectors;
|
||||
@@ -494,8 +494,8 @@ struct se_task {
|
||||
struct list_head t_state_list;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
#define TASK_CMD(task) ((struct se_cmd *)task->task_se_cmd)
|
||||
#define TASK_DEV(task) ((struct se_device *)task->se_dev)
|
||||
#define TASK_CMD(task) ((task)->task_se_cmd)
|
||||
#define TASK_DEV(task) ((task)->se_dev)
|
||||
|
||||
struct se_cmd {
|
||||
/* SAM response code being sent to initiator */
|
||||
@@ -551,8 +551,8 @@ struct se_cmd {
|
||||
void (*transport_complete_callback)(struct se_cmd *);
|
||||
} ____cacheline_aligned;
|
||||
|
||||
#define T_TASK(cmd) ((struct se_transport_task *)(cmd->t_task))
|
||||
#define CMD_TFO(cmd) ((struct target_core_fabric_ops *)cmd->se_tfo)
|
||||
#define T_TASK(cmd) ((cmd)->t_task)
|
||||
#define CMD_TFO(cmd) ((cmd)->se_tfo)
|
||||
|
||||
struct se_tmr_req {
|
||||
/* Task Management function to be preformed */
|
||||
@@ -583,7 +583,7 @@ struct se_ua {
|
||||
struct se_node_acl {
|
||||
char initiatorname[TRANSPORT_IQN_LEN];
|
||||
/* Used to signal demo mode created ACL, disabled by default */
|
||||
int dynamic_node_acl:1;
|
||||
bool dynamic_node_acl;
|
||||
u32 queue_depth;
|
||||
u32 acl_index;
|
||||
u64 num_cmds;
|
||||
@@ -601,7 +601,8 @@ struct se_node_acl {
|
||||
struct config_group acl_attrib_group;
|
||||
struct config_group acl_auth_group;
|
||||
struct config_group acl_param_group;
|
||||
struct config_group *acl_default_groups[4];
|
||||
struct config_group acl_fabric_stat_group;
|
||||
struct config_group *acl_default_groups[5];
|
||||
struct list_head acl_list;
|
||||
struct list_head acl_sess_list;
|
||||
} ____cacheline_aligned;
|
||||
@@ -615,13 +616,19 @@ struct se_session {
|
||||
struct list_head sess_acl_list;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
#define SE_SESS(cmd) ((struct se_session *)(cmd)->se_sess)
|
||||
#define SE_NODE_ACL(sess) ((struct se_node_acl *)(sess)->se_node_acl)
|
||||
#define SE_SESS(cmd) ((cmd)->se_sess)
|
||||
#define SE_NODE_ACL(sess) ((sess)->se_node_acl)
|
||||
|
||||
struct se_device;
|
||||
struct se_transform_info;
|
||||
struct scatterlist;
|
||||
|
||||
struct se_ml_stat_grps {
|
||||
struct config_group stat_group;
|
||||
struct config_group scsi_auth_intr_group;
|
||||
struct config_group scsi_att_intr_port_group;
|
||||
};
|
||||
|
||||
struct se_lun_acl {
|
||||
char initiatorname[TRANSPORT_IQN_LEN];
|
||||
u32 mapped_lun;
|
||||
@@ -629,10 +636,13 @@ struct se_lun_acl {
|
||||
struct se_lun *se_lun;
|
||||
struct list_head lacl_list;
|
||||
struct config_group se_lun_group;
|
||||
struct se_ml_stat_grps ml_stat_grps;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
#define ML_STAT_GRPS(lacl) (&(lacl)->ml_stat_grps)
|
||||
|
||||
struct se_dev_entry {
|
||||
int def_pr_registered:1;
|
||||
bool def_pr_registered;
|
||||
/* See transport_lunflags_table */
|
||||
u32 lun_flags;
|
||||
u32 deve_cmds;
|
||||
@@ -693,6 +703,13 @@ struct se_dev_attrib {
|
||||
struct config_group da_group;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
struct se_dev_stat_grps {
|
||||
struct config_group stat_group;
|
||||
struct config_group scsi_dev_group;
|
||||
struct config_group scsi_tgt_dev_group;
|
||||
struct config_group scsi_lu_group;
|
||||
};
|
||||
|
||||
struct se_subsystem_dev {
|
||||
/* Used for struct se_subsystem_dev-->se_dev_alias, must be less than PAGE_SIZE */
|
||||
#define SE_DEV_ALIAS_LEN 512
|
||||
@@ -716,11 +733,14 @@ struct se_subsystem_dev {
|
||||
struct config_group se_dev_group;
|
||||
/* For T10 Reservations */
|
||||
struct config_group se_dev_pr_group;
|
||||
/* For target_core_stat.c groups */
|
||||
struct se_dev_stat_grps dev_stat_grps;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
#define T10_ALUA(su_dev) (&(su_dev)->t10_alua)
|
||||
#define T10_RES(su_dev) (&(su_dev)->t10_reservation)
|
||||
#define T10_PR_OPS(su_dev) (&(su_dev)->t10_reservation.pr_ops)
|
||||
#define DEV_STAT_GRP(dev) (&(dev)->dev_stat_grps)
|
||||
|
||||
struct se_device {
|
||||
/* Set to 1 if thread is NOT sleeping on thread_sem */
|
||||
@@ -803,8 +823,8 @@ struct se_device {
|
||||
struct list_head g_se_dev_list;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
#define SE_DEV(cmd) ((struct se_device *)(cmd)->se_lun->lun_se_dev)
|
||||
#define SU_DEV(dev) ((struct se_subsystem_dev *)(dev)->se_sub_dev)
|
||||
#define SE_DEV(cmd) ((cmd)->se_lun->lun_se_dev)
|
||||
#define SU_DEV(dev) ((dev)->se_sub_dev)
|
||||
#define DEV_ATTRIB(dev) (&(dev)->se_sub_dev->se_dev_attrib)
|
||||
#define DEV_T10_WWN(dev) (&(dev)->se_sub_dev->t10_wwn)
|
||||
|
||||
@@ -832,7 +852,14 @@ struct se_hba {
|
||||
struct se_subsystem_api *transport;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
#define SE_HBA(d) ((struct se_hba *)(d)->se_hba)
|
||||
#define SE_HBA(dev) ((dev)->se_hba)
|
||||
|
||||
struct se_port_stat_grps {
|
||||
struct config_group stat_group;
|
||||
struct config_group scsi_port_group;
|
||||
struct config_group scsi_tgt_port_group;
|
||||
struct config_group scsi_transport_group;
|
||||
};
|
||||
|
||||
struct se_lun {
|
||||
/* See transport_lun_status_table */
|
||||
@@ -848,11 +875,13 @@ struct se_lun {
|
||||
struct list_head lun_cmd_list;
|
||||
struct list_head lun_acl_list;
|
||||
struct se_device *lun_se_dev;
|
||||
struct se_port *lun_sep;
|
||||
struct config_group lun_group;
|
||||
struct se_port *lun_sep;
|
||||
struct se_port_stat_grps port_stat_grps;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
#define SE_LUN(c) ((struct se_lun *)(c)->se_lun)
|
||||
#define SE_LUN(cmd) ((cmd)->se_lun)
|
||||
#define PORT_STAT_GRP(lun) (&(lun)->port_stat_grps)
|
||||
|
||||
struct scsi_port_stats {
|
||||
u64 cmd_pdus;
|
||||
@@ -919,11 +948,13 @@ struct se_portal_group {
|
||||
struct config_group tpg_param_group;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
#define TPG_TFO(se_tpg) ((struct target_core_fabric_ops *)(se_tpg)->se_tpg_tfo)
|
||||
#define TPG_TFO(se_tpg) ((se_tpg)->se_tpg_tfo)
|
||||
|
||||
struct se_wwn {
|
||||
struct target_fabric_configfs *wwn_tf;
|
||||
struct config_group wwn_group;
|
||||
struct config_group *wwn_default_groups[2];
|
||||
struct config_group fabric_stat_group;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
struct se_global {
|
||||
|
||||
@@ -14,10 +14,12 @@ extern void target_fabric_configfs_deregister(struct target_fabric_configfs *);
|
||||
struct target_fabric_configfs_template {
|
||||
struct config_item_type tfc_discovery_cit;
|
||||
struct config_item_type tfc_wwn_cit;
|
||||
struct config_item_type tfc_wwn_fabric_stats_cit;
|
||||
struct config_item_type tfc_tpg_cit;
|
||||
struct config_item_type tfc_tpg_base_cit;
|
||||
struct config_item_type tfc_tpg_lun_cit;
|
||||
struct config_item_type tfc_tpg_port_cit;
|
||||
struct config_item_type tfc_tpg_port_stat_cit;
|
||||
struct config_item_type tfc_tpg_np_cit;
|
||||
struct config_item_type tfc_tpg_np_base_cit;
|
||||
struct config_item_type tfc_tpg_attrib_cit;
|
||||
@@ -27,7 +29,9 @@ struct target_fabric_configfs_template {
|
||||
struct config_item_type tfc_tpg_nacl_attrib_cit;
|
||||
struct config_item_type tfc_tpg_nacl_auth_cit;
|
||||
struct config_item_type tfc_tpg_nacl_param_cit;
|
||||
struct config_item_type tfc_tpg_nacl_stat_cit;
|
||||
struct config_item_type tfc_tpg_mappedlun_cit;
|
||||
struct config_item_type tfc_tpg_mappedlun_stat_cit;
|
||||
};
|
||||
|
||||
struct target_fabric_configfs {
|
||||
|
||||
@@ -8,7 +8,7 @@ struct target_core_fabric_ops {
|
||||
* for scatterlist chaining using transport_do_task_sg_link(),
|
||||
* disabled by default
|
||||
*/
|
||||
int task_sg_chaining:1;
|
||||
bool task_sg_chaining;
|
||||
char *(*get_fabric_name)(void);
|
||||
u8 (*get_fabric_proto_ident)(struct se_portal_group *);
|
||||
char *(*tpg_get_wwn)(struct se_portal_group *);
|
||||
|
||||
@@ -1,37 +1,29 @@
|
||||
#ifndef TARGET_CORE_TMR_H
|
||||
#define TARGET_CORE_TMR_H
|
||||
|
||||
/* task management function values */
|
||||
#ifdef ABORT_TASK
|
||||
#undef ABORT_TASK
|
||||
#endif /* ABORT_TASK */
|
||||
#define ABORT_TASK 1
|
||||
#ifdef ABORT_TASK_SET
|
||||
#undef ABORT_TASK_SET
|
||||
#endif /* ABORT_TASK_SET */
|
||||
#define ABORT_TASK_SET 2
|
||||
#ifdef CLEAR_ACA
|
||||
#undef CLEAR_ACA
|
||||
#endif /* CLEAR_ACA */
|
||||
#define CLEAR_ACA 3
|
||||
#ifdef CLEAR_TASK_SET
|
||||
#undef CLEAR_TASK_SET
|
||||
#endif /* CLEAR_TASK_SET */
|
||||
#define CLEAR_TASK_SET 4
|
||||
#define LUN_RESET 5
|
||||
#define TARGET_WARM_RESET 6
|
||||
#define TARGET_COLD_RESET 7
|
||||
#define TASK_REASSIGN 8
|
||||
/* fabric independent task management function values */
|
||||
enum tcm_tmreq_table {
|
||||
TMR_ABORT_TASK = 1,
|
||||
TMR_ABORT_TASK_SET = 2,
|
||||
TMR_CLEAR_ACA = 3,
|
||||
TMR_CLEAR_TASK_SET = 4,
|
||||
TMR_LUN_RESET = 5,
|
||||
TMR_TARGET_WARM_RESET = 6,
|
||||
TMR_TARGET_COLD_RESET = 7,
|
||||
TMR_FABRIC_TMR = 255,
|
||||
};
|
||||
|
||||
/* task management response values */
|
||||
#define TMR_FUNCTION_COMPLETE 0
|
||||
#define TMR_TASK_DOES_NOT_EXIST 1
|
||||
#define TMR_LUN_DOES_NOT_EXIST 2
|
||||
#define TMR_TASK_STILL_ALLEGIANT 3
|
||||
#define TMR_TASK_FAILOVER_NOT_SUPPORTED 4
|
||||
#define TMR_TASK_MGMT_FUNCTION_NOT_SUPPORTED 5
|
||||
#define TMR_FUNCTION_AUTHORIZATION_FAILED 6
|
||||
#define TMR_FUNCTION_REJECTED 255
|
||||
/* fabric independent task management response values */
|
||||
enum tcm_tmrsp_table {
|
||||
TMR_FUNCTION_COMPLETE = 0,
|
||||
TMR_TASK_DOES_NOT_EXIST = 1,
|
||||
TMR_LUN_DOES_NOT_EXIST = 2,
|
||||
TMR_TASK_STILL_ALLEGIANT = 3,
|
||||
TMR_TASK_FAILOVER_NOT_SUPPORTED = 4,
|
||||
TMR_TASK_MGMT_FUNCTION_NOT_SUPPORTED = 5,
|
||||
TMR_FUNCTION_AUTHORIZATION_FAILED = 6,
|
||||
TMR_FUNCTION_REJECTED = 255,
|
||||
};
|
||||
|
||||
extern struct kmem_cache *se_tmr_req_cache;
|
||||
|
||||
|
||||
@@ -109,6 +109,8 @@
|
||||
struct se_mem;
|
||||
struct se_subsystem_api;
|
||||
|
||||
extern struct kmem_cache *se_mem_cache;
|
||||
|
||||
extern int init_se_global(void);
|
||||
extern void release_se_global(void);
|
||||
extern void init_scsi_index_table(void);
|
||||
@@ -190,6 +192,8 @@ extern void transport_generic_process_write(struct se_cmd *);
|
||||
extern int transport_generic_do_tmr(struct se_cmd *);
|
||||
/* From target_core_alua.c */
|
||||
extern int core_alua_check_nonop_delay(struct se_cmd *);
|
||||
/* From target_core_cdb.c */
|
||||
extern int transport_emulate_control_cdb(struct se_task *);
|
||||
|
||||
/*
|
||||
* Each se_transport_task_t can have N number of possible struct se_task's
|
||||
|
||||
Reference in New Issue
Block a user