68 * A different fops may get used for the Symmetric-Active-Active.
69 */
70 struct scsi_failover_ops scsi_vhci_failover_ops = {
71 SFO_REV,
72 SFO_NAME_SYM "_hds",
73 hds_sym_dev_table,
74 hds_sym_init,
75 hds_sym_device_probe,
76 hds_sym_device_unprobe,
77 NULL,
78 NULL,
79 hds_sym_get_opinfo,
80 /* The rest of the implementation comes from SFO_NAME_SYM import */
81 };
82
83 static struct modlmisc modlmisc = {
84 &mod_miscops, "f_sym_hds"
85 };
86
87 static struct modlinkage modlinkage = {
88 MODREV_1, (void *)&modlmisc, NULL
89 };
90
91 #define HDS_MAX_INQ_BUF_SIZE 0xff
92 #define HDS_INQ_PAGE_E0 0xe0
93 #define HDS_SAA_TYPE "DF00"
94 #define ASYM_ACTIVE_ACTIVE 0
95 #define SYM_ACTIVE_ACTIVE 1
96
97 extern struct scsi_failover_ops *vhci_failover_ops_by_name(char *);
98
99 int
100 _init()
101 {
102 return (mod_install(&modlinkage));
103 }
104
105 int
106 _fini()
107 {
108 return (mod_remove(&modlinkage));
|
68 * A different fops may get used for the Symmetric-Active-Active.
69 */
70 struct scsi_failover_ops scsi_vhci_failover_ops = {
71 SFO_REV,
72 SFO_NAME_SYM "_hds",
73 hds_sym_dev_table,
74 hds_sym_init,
75 hds_sym_device_probe,
76 hds_sym_device_unprobe,
77 NULL,
78 NULL,
79 hds_sym_get_opinfo,
80 /* The rest of the implementation comes from SFO_NAME_SYM import */
81 };
82
83 static struct modlmisc modlmisc = {
84 &mod_miscops, "f_sym_hds"
85 };
86
87 static struct modlinkage modlinkage = {
88 MODREV_1, { (void *)&modlmisc, NULL }
89 };
90
91 #define HDS_MAX_INQ_BUF_SIZE 0xff
92 #define HDS_INQ_PAGE_E0 0xe0
93 #define HDS_SAA_TYPE "DF00"
94 #define ASYM_ACTIVE_ACTIVE 0
95 #define SYM_ACTIVE_ACTIVE 1
96
97 extern struct scsi_failover_ops *vhci_failover_ops_by_name(char *);
98
99 int
100 _init()
101 {
102 return (mod_install(&modlinkage));
103 }
104
105 int
106 _fini()
107 {
108 return (mod_remove(&modlinkage));
|