scsi_host_templateRegular
4.4: ✅struct scsi_host_template {
struct module *module;
const char *name;
int (*detect)(struct scsi_host_template *);
int (*release)(struct Scsi_Host *);
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, int, void *);
int (*compat_ioctl)(struct scsi_device *, int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
long unsigned int dma_boundary;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int use_clustering;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int no_async_abort;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
struct list_head legacy_hosts;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
bool disable_blk_mq;
};
4.8: ✅struct scsi_host_template {
struct module *module;
const char *name;
int (*detect)(struct scsi_host_template *);
int (*release)(struct Scsi_Host *);
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, int, void *);
int (*compat_ioctl)(struct scsi_device *, int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
long unsigned int dma_boundary;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int use_clustering;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int no_async_abort;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
struct list_head legacy_hosts;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
4.10: ✅struct scsi_host_template {
struct module *module;
const char *name;
int (*detect)(struct scsi_host_template *);
int (*release)(struct Scsi_Host *);
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, int, void *);
int (*compat_ioctl)(struct scsi_device *, int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
long unsigned int dma_boundary;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int use_clustering;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int no_async_abort;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
struct list_head legacy_hosts;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
4.13: ✅struct scsi_host_template {
struct module *module;
const char *name;
int (*detect)(struct scsi_host_template *);
int (*release)(struct Scsi_Host *);
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, int, void *);
int (*compat_ioctl)(struct scsi_device *, int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
long unsigned int dma_boundary;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int use_clustering;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
struct list_head legacy_hosts;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
4.15: ✅struct scsi_host_template {
struct module *module;
const char *name;
int (*detect)(struct scsi_host_template *);
int (*release)(struct Scsi_Host *);
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, int, void *);
int (*compat_ioctl)(struct scsi_device *, int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
long unsigned int dma_boundary;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int use_clustering;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
struct list_head legacy_hosts;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
4.18: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, int, void *);
int (*compat_ioctl)(struct scsi_device *, int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
long unsigned int dma_boundary;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int use_clustering;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
5.0: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, int, void *);
int (*compat_ioctl)(struct scsi_device *, int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
5.3: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
5.4: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
5.8: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
bool (*dma_need_drain)(struct request *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
int rpm_autosuspend_delay;
};
5.11: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
bool (*dma_need_drain)(struct request *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int host_tagset;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
int rpm_autosuspend_delay;
};
5.13: ✅struct scsi_host_template {
unsigned int cmd_size;
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*mq_poll)(struct Scsi_Host *, unsigned int);
bool (*dma_need_drain)(struct request *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
bool (*eh_should_retry_cmd)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int host_tagset;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
struct scsi_host_cmd_pool *cmd_pool;
int rpm_autosuspend_delay;
};
5.15: ✅struct scsi_host_template {
unsigned int cmd_size;
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*mq_poll)(struct Scsi_Host *, unsigned int);
bool (*dma_need_drain)(struct request *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
bool (*eh_should_retry_cmd)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int host_tagset;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
struct scsi_host_cmd_pool *cmd_pool;
int rpm_autosuspend_delay;
};
5.19: ✅struct scsi_host_template {
unsigned int cmd_size;
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*mq_poll)(struct Scsi_Host *, unsigned int);
bool (*dma_need_drain)(struct request *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
bool (*eh_should_retry_cmd)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int host_tagset;
unsigned int max_host_blocked;
const struct attribute_group **shost_groups;
const struct attribute_group **sdev_groups;
u64 vendor_id;
int rpm_autosuspend_delay;
};
6.2: ✅struct scsi_host_template {
unsigned int cmd_size;
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
void (*map_queues)(struct Scsi_Host *);
int (*mq_poll)(struct Scsi_Host *, unsigned int);
bool (*dma_need_drain)(struct request *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum scsi_timeout_action (*eh_timed_out)(struct scsi_cmnd *);
bool (*eh_should_retry_cmd)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int host_tagset;
unsigned int max_host_blocked;
const struct attribute_group **shost_groups;
const struct attribute_group **sdev_groups;
u64 vendor_id;
int rpm_autosuspend_delay;
};
6.5: ✅struct scsi_host_template {
unsigned int cmd_size;
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
void (*map_queues)(struct Scsi_Host *);
int (*mq_poll)(struct Scsi_Host *, unsigned int);
bool (*dma_need_drain)(struct request *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum scsi_timeout_action (*eh_timed_out)(struct scsi_cmnd *);
bool (*eh_should_retry_cmd)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int host_tagset;
unsigned int queuecommand_may_block;
unsigned int max_host_blocked;
const struct attribute_group **shost_groups;
const struct attribute_group **sdev_groups;
u64 vendor_id;
int rpm_autosuspend_delay;
};
6.8: ✅struct scsi_host_template {
unsigned int cmd_size;
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
void (*map_queues)(struct Scsi_Host *);
int (*mq_poll)(struct Scsi_Host *, unsigned int);
bool (*dma_need_drain)(struct request *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum scsi_timeout_action (*eh_timed_out)(struct scsi_cmnd *);
bool (*eh_should_retry_cmd)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int host_tagset;
unsigned int queuecommand_may_block;
unsigned int max_host_blocked;
const struct attribute_group **shost_groups;
const struct attribute_group **sdev_groups;
u64 vendor_id;
int rpm_autosuspend_delay;
};
arm64: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
armhf: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
ppc64el: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
riscv64: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
aws: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
azure: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
gcp: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
lowlatency: ✅struct scsi_host_template {
struct module *module;
const char *name;
const char * (*info)(struct Scsi_Host *);
int (*ioctl)(struct scsi_device *, unsigned int, void *);
int (*compat_ioctl)(struct scsi_device *, unsigned int, void *);
int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
void (*commit_rqs)(struct Scsi_Host *, u16);
int (*eh_abort_handler)(struct scsi_cmnd *);
int (*eh_device_reset_handler)(struct scsi_cmnd *);
int (*eh_target_reset_handler)(struct scsi_cmnd *);
int (*eh_bus_reset_handler)(struct scsi_cmnd *);
int (*eh_host_reset_handler)(struct scsi_cmnd *);
int (*slave_alloc)(struct scsi_device *);
int (*slave_configure)(struct scsi_device *);
void (*slave_destroy)(struct scsi_device *);
int (*target_alloc)(struct scsi_target *);
void (*target_destroy)(struct scsi_target *);
int (*scan_finished)(struct Scsi_Host *, long unsigned int);
void (*scan_start)(struct Scsi_Host *);
int (*change_queue_depth)(struct scsi_device *, int);
int (*map_queues)(struct Scsi_Host *);
int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
void (*unlock_native_capacity)(struct scsi_device *);
int (*show_info)(struct seq_file *, struct Scsi_Host *);
int (*write_info)(struct Scsi_Host *, char *, int);
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
int (*host_reset)(struct Scsi_Host *, int);
const char *proc_name;
struct proc_dir_entry *proc_dir;
int can_queue;
int this_id;
short unsigned int sg_tablesize;
short unsigned int sg_prot_tablesize;
unsigned int max_sectors;
unsigned int max_segment_size;
long unsigned int dma_boundary;
long unsigned int virt_boundary_mask;
short int cmd_per_lun;
unsigned char present;
int tag_alloc_policy;
unsigned int track_queue_depth;
unsigned int supported_mode;
unsigned int unchecked_isa_dma;
unsigned int emulated;
unsigned int skip_settle_delay;
unsigned int no_write_same;
unsigned int force_blk_mq;
unsigned int max_host_blocked;
struct device_attribute **shost_attrs;
struct device_attribute **sdev_attrs;
const struct attribute_group **sdev_groups;
u64 vendor_id;
unsigned int cmd_size;
struct scsi_host_cmd_pool *cmd_pool;
};
Regular
4.4 and 4.8 ⚠️bool disable_blk_mq
4.8 and 4.10 ⚠️int (*map_queues)(struct Scsi_Host *)
4.10 and 4.13 ⚠️unsigned int no_async_abort
struct scsi_host_cmd_pool *cmd_pool ➡️ struct scsi_host_cmd_pool *cmd_pool
4.13 and 4.15 ✅
4.15 and 4.18 ⚠️unsigned int force_blk_mq
const struct attribute_group **sdev_groups
int (*detect)(struct scsi_host_template *)
int (*release)(struct Scsi_Host *)
struct list_head legacy_hosts
4.18 and 5.0 ⚠️unsigned int max_segment_size
unsigned int use_clustering
5.0 and 5.3 ⚠️long unsigned int virt_boundary_mask
int (*ioctl)(struct scsi_device *, int, void *) ➡️ int (*ioctl)(struct scsi_device *, unsigned int, void *)
int (*compat_ioctl)(struct scsi_device *, int, void *) ➡️ int (*compat_ioctl)(struct scsi_device *, unsigned int, void *)
5.3 and 5.4 ⚠️void (*commit_rqs)(struct Scsi_Host *, u16)
5.4 and 5.8 ⚠️int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *)
int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *)
bool (*dma_need_drain)(struct request *)
int rpm_autosuspend_delay
unsigned int force_blk_mq
5.8 and 5.11 ⚠️unsigned int host_tagset
5.11 and 5.13 ⚠️int (*mq_poll)(struct Scsi_Host *, unsigned int)
bool (*eh_should_retry_cmd)(struct scsi_cmnd *)
unsigned int unchecked_isa_dma
5.13 and 5.15 ✅
5.15 and 5.19 ⚠️const struct attribute_group **shost_groups
struct device_attribute **shost_attrs
struct device_attribute **sdev_attrs
struct scsi_host_cmd_pool *cmd_pool
5.19 and 6.2 ⚠️struct proc_dir_entry *proc_dir
unsigned char present
int (*map_queues)(struct Scsi_Host *) ➡️ void (*map_queues)(struct Scsi_Host *)
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *) ➡️ enum scsi_timeout_action (*eh_timed_out)(struct scsi_cmnd *)
6.2 and 6.5 ⚠️unsigned int queuecommand_may_block
6.5 and 6.8 ✅
amd64 and arm64 ✅
amd64 and armhf ⚠️int (*compat_ioctl)(struct scsi_device *, unsigned int, void *)
amd64 and ppc64el ✅
amd64 and riscv64 ⚠️int (*compat_ioctl)(struct scsi_device *, unsigned int, void *)
generic and aws ✅
generic and azure ✅
generic and gcp ✅
generic and lowlatency ✅