Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI updates from James Bottomley: "Only a couple of driver updates this time (lpfc and mpt3sas) plus the usual assorted minor fixes and updates. The major core update is a set of patches moving retries out of the drivers and into the core" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (84 commits) scsi: core: Constify the struct device_type usage scsi: libfc: replace deprecated strncpy() with memcpy() scsi: lpfc: Replace deprecated strncpy() with strscpy() scsi: bfa: Fix function pointer type mismatch for state machines scsi: bfa: Fix function pointer type mismatch for hcb_qe->cbfn scsi: bfa: Remove additional unnecessary struct declarations scsi: csiostor: Avoid function pointer casts scsi: qla1280: Remove redundant assignment to variable 'mr' scsi: core: Make scsi_bus_type const scsi: core: Really include kunit tests with SCSI_LIB_KUNIT_TEST scsi: target: tcm_loop: Make tcm_loop_lld_bus const scsi: scsi_debug: Make pseudo_lld_bus const scsi: iscsi: Make iscsi_flashnode_bus const scsi: fcoe: Make fcoe_bus_type const scsi: lpfc: Copyright updates for 14.4.0.0 patches scsi: lpfc: Update lpfc version to 14.4.0.0 scsi: lpfc: Change lpfc_vport load_flag member into a bitmask scsi: lpfc: Change lpfc_vport fc_flag member into a bitmask scsi: lpfc: Protect vport fc_nodes list with an explicit spin lock scsi: lpfc: Change nlp state statistic counters into atomic_t ...
This commit is contained in:
@@ -486,6 +486,52 @@ extern int scsi_is_sdev_device(const struct device *);
|
||||
extern int scsi_is_target_device(const struct device *);
|
||||
extern void scsi_sanitize_inquiry_string(unsigned char *s, int len);
|
||||
|
||||
/*
|
||||
* scsi_execute_cmd users can set scsi_failure.result to have
|
||||
* scsi_check_passthrough fail/retry a command. scsi_failure.result can be a
|
||||
* specific host byte or message code, or SCMD_FAILURE_RESULT_ANY can be used
|
||||
* to match any host or message code.
|
||||
*/
|
||||
#define SCMD_FAILURE_RESULT_ANY 0x7fffffff
|
||||
/*
|
||||
* Set scsi_failure.result to SCMD_FAILURE_STAT_ANY to fail/retry any failure
|
||||
* scsi_status_is_good returns false for.
|
||||
*/
|
||||
#define SCMD_FAILURE_STAT_ANY 0xff
|
||||
/*
|
||||
* The following can be set to the scsi_failure sense, asc and ascq fields to
|
||||
* match on any sense, ASC, or ASCQ value.
|
||||
*/
|
||||
#define SCMD_FAILURE_SENSE_ANY 0xff
|
||||
#define SCMD_FAILURE_ASC_ANY 0xff
|
||||
#define SCMD_FAILURE_ASCQ_ANY 0xff
|
||||
/* Always retry a matching failure. */
|
||||
#define SCMD_FAILURE_NO_LIMIT -1
|
||||
|
||||
struct scsi_failure {
|
||||
int result;
|
||||
u8 sense;
|
||||
u8 asc;
|
||||
u8 ascq;
|
||||
/*
|
||||
* Number of times scsi_execute_cmd will retry the failure. It does
|
||||
* not count for the total_allowed.
|
||||
*/
|
||||
s8 allowed;
|
||||
/* Number of times the failure has been retried. */
|
||||
s8 retries;
|
||||
};
|
||||
|
||||
struct scsi_failures {
|
||||
/*
|
||||
* If a scsi_failure does not have a retry limit setup this limit will
|
||||
* be used.
|
||||
*/
|
||||
int total_allowed;
|
||||
int total_retries;
|
||||
struct scsi_failure *failure_definitions;
|
||||
};
|
||||
|
||||
/* Optional arguments to scsi_execute_cmd */
|
||||
struct scsi_exec_args {
|
||||
unsigned char *sense; /* sense buffer */
|
||||
@@ -494,12 +540,14 @@ struct scsi_exec_args {
|
||||
blk_mq_req_flags_t req_flags; /* BLK_MQ_REQ flags */
|
||||
int scmd_flags; /* SCMD flags */
|
||||
int *resid; /* residual length */
|
||||
struct scsi_failures *failures; /* failures to retry */
|
||||
};
|
||||
|
||||
int scsi_execute_cmd(struct scsi_device *sdev, const unsigned char *cmd,
|
||||
blk_opf_t opf, void *buffer, unsigned int bufflen,
|
||||
int timeout, int retries,
|
||||
const struct scsi_exec_args *args);
|
||||
void scsi_failures_reset_retries(struct scsi_failures *failures);
|
||||
|
||||
extern void sdev_disable_disk_events(struct scsi_device *sdev);
|
||||
extern void sdev_enable_disk_events(struct scsi_device *sdev);
|
||||
|
||||
@@ -497,9 +497,6 @@ struct scsi_host_template {
|
||||
* scsi_netlink.h
|
||||
*/
|
||||
u64 vendor_id;
|
||||
|
||||
/* Delay for runtime autosuspend */
|
||||
int rpm_autosuspend_delay;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -713,6 +710,9 @@ struct Scsi_Host {
|
||||
*/
|
||||
struct device *dma_dev;
|
||||
|
||||
/* Delay for runtime autosuspend */
|
||||
int rpm_autosuspend_delay;
|
||||
|
||||
/*
|
||||
* We should ensure that this is aligned, both for better performance
|
||||
* and also because some compilers (m68k) don't automatically force
|
||||
|
||||
Reference in New Issue
Block a user