diff options
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/iscsi_proto.h | 6 | ||||
-rw-r--r-- | include/scsi/libsas.h | 4 | ||||
-rw-r--r-- | include/scsi/sas_ata.h | 4 | ||||
-rw-r--r-- | include/scsi/scsi_cmnd.h | 17 | ||||
-rw-r--r-- | include/scsi/scsi_device.h | 13 | ||||
-rw-r--r-- | include/scsi/scsi_eh.h | 5 | ||||
-rw-r--r-- | include/scsi/scsi_host.h | 8 | ||||
-rw-r--r-- | include/scsi/scsi_transport.h | 2 | ||||
-rw-r--r-- | include/scsi/scsi_transport_fc.h | 14 | ||||
-rw-r--r-- | include/scsi/scsi_transport_iscsi.h | 2 | ||||
-rw-r--r-- | include/scsi/scsi_transport_sas.h | 12 | ||||
-rw-r--r-- | include/scsi/sd.h | 4 |
12 files changed, 59 insertions, 32 deletions
diff --git a/include/scsi/iscsi_proto.h b/include/scsi/iscsi_proto.h index 5ffec8ad6964..e0593bfae622 100644 --- a/include/scsi/iscsi_proto.h +++ b/include/scsi/iscsi_proto.h | |||
@@ -112,6 +112,7 @@ struct iscsi_ahs_hdr { | |||
112 | 112 | ||
113 | #define ISCSI_AHSTYPE_CDB 1 | 113 | #define ISCSI_AHSTYPE_CDB 1 |
114 | #define ISCSI_AHSTYPE_RLENGTH 2 | 114 | #define ISCSI_AHSTYPE_RLENGTH 2 |
115 | #define ISCSI_CDB_SIZE 16 | ||
115 | 116 | ||
116 | /* iSCSI PDU Header */ | 117 | /* iSCSI PDU Header */ |
117 | struct iscsi_cmd { | 118 | struct iscsi_cmd { |
@@ -125,7 +126,7 @@ struct iscsi_cmd { | |||
125 | __be32 data_length; | 126 | __be32 data_length; |
126 | __be32 cmdsn; | 127 | __be32 cmdsn; |
127 | __be32 exp_statsn; | 128 | __be32 exp_statsn; |
128 | uint8_t cdb[16]; /* SCSI Command Block */ | 129 | uint8_t cdb[ISCSI_CDB_SIZE]; /* SCSI Command Block */ |
129 | /* Additional Data (Command Dependent) */ | 130 | /* Additional Data (Command Dependent) */ |
130 | }; | 131 | }; |
131 | 132 | ||
@@ -154,7 +155,8 @@ struct iscsi_ecdb_ahdr { | |||
154 | __be16 ahslength; /* CDB length - 15, including reserved byte */ | 155 | __be16 ahslength; /* CDB length - 15, including reserved byte */ |
155 | uint8_t ahstype; | 156 | uint8_t ahstype; |
156 | uint8_t reserved; | 157 | uint8_t reserved; |
157 | uint8_t ecdb[260 - 16]; /* 4-byte aligned extended CDB spillover */ | 158 | /* 4-byte aligned extended CDB spillover */ |
159 | uint8_t ecdb[260 - ISCSI_CDB_SIZE]; | ||
158 | }; | 160 | }; |
159 | 161 | ||
160 | /* SCSI Response Header */ | 162 | /* SCSI Response Header */ |
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h index 3ffd6b582a97..e78d3b62d8ec 100644 --- a/include/scsi/libsas.h +++ b/include/scsi/libsas.h | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <scsi/sas.h> | 32 | #include <scsi/sas.h> |
33 | #include <linux/libata.h> | 33 | #include <linux/libata.h> |
34 | #include <linux/list.h> | 34 | #include <linux/list.h> |
35 | #include <asm/semaphore.h> | ||
36 | #include <scsi/scsi_device.h> | 35 | #include <scsi/scsi_device.h> |
37 | #include <scsi/scsi_cmnd.h> | 36 | #include <scsi/scsi_cmnd.h> |
38 | #include <scsi/scsi_transport_sas.h> | 37 | #include <scsi/scsi_transport_sas.h> |
@@ -675,5 +674,8 @@ extern int sas_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
675 | 674 | ||
676 | extern void sas_ssp_task_response(struct device *dev, struct sas_task *task, | 675 | extern void sas_ssp_task_response(struct device *dev, struct sas_task *task, |
677 | struct ssp_response_iu *iu); | 676 | struct ssp_response_iu *iu); |
677 | struct sas_phy *sas_find_local_phy(struct domain_device *dev); | ||
678 | |||
679 | int sas_request_addr(struct Scsi_Host *shost, u8 *addr); | ||
678 | 680 | ||
679 | #endif /* _SASLIB_H_ */ | 681 | #endif /* _SASLIB_H_ */ |
diff --git a/include/scsi/sas_ata.h b/include/scsi/sas_ata.h index dd5edc915417..c583193ae929 100644 --- a/include/scsi/sas_ata.h +++ b/include/scsi/sas_ata.h | |||
@@ -47,12 +47,12 @@ static inline int dev_is_sata(struct domain_device *dev) | |||
47 | { | 47 | { |
48 | return 0; | 48 | return 0; |
49 | } | 49 | } |
50 | int sas_ata_init_host_and_port(struct domain_device *found_dev, | 50 | static inline int sas_ata_init_host_and_port(struct domain_device *found_dev, |
51 | struct scsi_target *starget) | 51 | struct scsi_target *starget) |
52 | { | 52 | { |
53 | return 0; | 53 | return 0; |
54 | } | 54 | } |
55 | void sas_ata_task_abort(struct sas_task *task) | 55 | static inline void sas_ata_task_abort(struct sas_task *task) |
56 | { | 56 | { |
57 | } | 57 | } |
58 | #endif | 58 | #endif |
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h index de28aab820b0..8d20e60a94b7 100644 --- a/include/scsi/scsi_cmnd.h +++ b/include/scsi/scsi_cmnd.h | |||
@@ -130,6 +130,9 @@ extern void scsi_release_buffers(struct scsi_cmnd *cmd); | |||
130 | extern int scsi_dma_map(struct scsi_cmnd *cmd); | 130 | extern int scsi_dma_map(struct scsi_cmnd *cmd); |
131 | extern void scsi_dma_unmap(struct scsi_cmnd *cmd); | 131 | extern void scsi_dma_unmap(struct scsi_cmnd *cmd); |
132 | 132 | ||
133 | struct scsi_cmnd *scsi_allocate_command(gfp_t gfp_mask); | ||
134 | void scsi_free_command(gfp_t gfp_mask, struct scsi_cmnd *cmd); | ||
135 | |||
133 | static inline unsigned scsi_sg_count(struct scsi_cmnd *cmd) | 136 | static inline unsigned scsi_sg_count(struct scsi_cmnd *cmd) |
134 | { | 137 | { |
135 | return cmd->sdb.table.nents; | 138 | return cmd->sdb.table.nents; |
@@ -175,4 +178,18 @@ static inline struct scsi_data_buffer *scsi_out(struct scsi_cmnd *cmd) | |||
175 | return &cmd->sdb; | 178 | return &cmd->sdb; |
176 | } | 179 | } |
177 | 180 | ||
181 | static inline int scsi_sg_copy_from_buffer(struct scsi_cmnd *cmd, | ||
182 | void *buf, int buflen) | ||
183 | { | ||
184 | return sg_copy_from_buffer(scsi_sglist(cmd), scsi_sg_count(cmd), | ||
185 | buf, buflen); | ||
186 | } | ||
187 | |||
188 | static inline int scsi_sg_copy_to_buffer(struct scsi_cmnd *cmd, | ||
189 | void *buf, int buflen) | ||
190 | { | ||
191 | return sg_copy_to_buffer(scsi_sglist(cmd), scsi_sg_count(cmd), | ||
192 | buf, buflen); | ||
193 | } | ||
194 | |||
178 | #endif /* _SCSI_SCSI_CMND_H */ | 195 | #endif /* _SCSI_SCSI_CMND_H */ |
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index ab7acbe80960..f6a9fe0ef09c 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h | |||
@@ -156,8 +156,8 @@ struct scsi_device { | |||
156 | 156 | ||
157 | int timeout; | 157 | int timeout; |
158 | 158 | ||
159 | struct device sdev_gendev; | 159 | struct device sdev_gendev, |
160 | struct class_device sdev_classdev; | 160 | sdev_dev; |
161 | 161 | ||
162 | struct execute_work ew; /* used to get process context on put */ | 162 | struct execute_work ew; /* used to get process context on put */ |
163 | 163 | ||
@@ -167,9 +167,9 @@ struct scsi_device { | |||
167 | #define to_scsi_device(d) \ | 167 | #define to_scsi_device(d) \ |
168 | container_of(d, struct scsi_device, sdev_gendev) | 168 | container_of(d, struct scsi_device, sdev_gendev) |
169 | #define class_to_sdev(d) \ | 169 | #define class_to_sdev(d) \ |
170 | container_of(d, struct scsi_device, sdev_classdev) | 170 | container_of(d, struct scsi_device, sdev_dev) |
171 | #define transport_class_to_sdev(class_dev) \ | 171 | #define transport_class_to_sdev(class_dev) \ |
172 | to_scsi_device(class_dev->dev) | 172 | to_scsi_device(class_dev->parent) |
173 | 173 | ||
174 | #define sdev_printk(prefix, sdev, fmt, a...) \ | 174 | #define sdev_printk(prefix, sdev, fmt, a...) \ |
175 | dev_printk(prefix, &(sdev)->sdev_gendev, fmt, ##a) | 175 | dev_printk(prefix, &(sdev)->sdev_gendev, fmt, ##a) |
@@ -181,7 +181,8 @@ struct scsi_device { | |||
181 | sdev_printk(prefix, (scmd)->device, fmt, ##a) | 181 | sdev_printk(prefix, (scmd)->device, fmt, ##a) |
182 | 182 | ||
183 | enum scsi_target_state { | 183 | enum scsi_target_state { |
184 | STARGET_RUNNING = 1, | 184 | STARGET_CREATED = 1, |
185 | STARGET_RUNNING, | ||
185 | STARGET_DEL, | 186 | STARGET_DEL, |
186 | }; | 187 | }; |
187 | 188 | ||
@@ -220,7 +221,7 @@ static inline struct scsi_target *scsi_target(struct scsi_device *sdev) | |||
220 | return to_scsi_target(sdev->sdev_gendev.parent); | 221 | return to_scsi_target(sdev->sdev_gendev.parent); |
221 | } | 222 | } |
222 | #define transport_class_to_starget(class_dev) \ | 223 | #define transport_class_to_starget(class_dev) \ |
223 | to_scsi_target(class_dev->dev) | 224 | to_scsi_target(class_dev->parent) |
224 | 225 | ||
225 | #define starget_printk(prefix, starget, fmt, a...) \ | 226 | #define starget_printk(prefix, starget, fmt, a...) \ |
226 | dev_printk(prefix, &(starget)->dev, fmt, ##a) | 227 | dev_printk(prefix, &(starget)->dev, fmt, ##a) |
diff --git a/include/scsi/scsi_eh.h b/include/scsi/scsi_eh.h index 25071d5d9bf8..d3a133b4a072 100644 --- a/include/scsi/scsi_eh.h +++ b/include/scsi/scsi_eh.h | |||
@@ -57,13 +57,16 @@ extern const u8 * scsi_sense_desc_find(const u8 * sense_buffer, int sb_len, | |||
57 | 57 | ||
58 | extern int scsi_get_sense_info_fld(const u8 * sense_buffer, int sb_len, | 58 | extern int scsi_get_sense_info_fld(const u8 * sense_buffer, int sb_len, |
59 | u64 * info_out); | 59 | u64 * info_out); |
60 | 60 | ||
61 | extern void scsi_build_sense_buffer(int desc, u8 *buf, u8 key, u8 asc, u8 ascq); | ||
62 | |||
61 | /* | 63 | /* |
62 | * Reset request from external source | 64 | * Reset request from external source |
63 | */ | 65 | */ |
64 | #define SCSI_TRY_RESET_DEVICE 1 | 66 | #define SCSI_TRY_RESET_DEVICE 1 |
65 | #define SCSI_TRY_RESET_BUS 2 | 67 | #define SCSI_TRY_RESET_BUS 2 |
66 | #define SCSI_TRY_RESET_HOST 3 | 68 | #define SCSI_TRY_RESET_HOST 3 |
69 | #define SCSI_TRY_RESET_TARGET 4 | ||
67 | 70 | ||
68 | extern int scsi_reset_provider(struct scsi_device *, int); | 71 | extern int scsi_reset_provider(struct scsi_device *, int); |
69 | 72 | ||
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index 530ff4c553f8..d967d6dc7a28 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h | |||
@@ -172,6 +172,7 @@ struct scsi_host_template { | |||
172 | */ | 172 | */ |
173 | int (* eh_abort_handler)(struct scsi_cmnd *); | 173 | int (* eh_abort_handler)(struct scsi_cmnd *); |
174 | int (* eh_device_reset_handler)(struct scsi_cmnd *); | 174 | int (* eh_device_reset_handler)(struct scsi_cmnd *); |
175 | int (* eh_target_reset_handler)(struct scsi_cmnd *); | ||
175 | int (* eh_bus_reset_handler)(struct scsi_cmnd *); | 176 | int (* eh_bus_reset_handler)(struct scsi_cmnd *); |
176 | int (* eh_host_reset_handler)(struct scsi_cmnd *); | 177 | int (* eh_host_reset_handler)(struct scsi_cmnd *); |
177 | 178 | ||
@@ -469,7 +470,7 @@ struct scsi_host_template { | |||
469 | /* | 470 | /* |
470 | * Pointer to the sysfs class properties for this host, NULL terminated. | 471 | * Pointer to the sysfs class properties for this host, NULL terminated. |
471 | */ | 472 | */ |
472 | struct class_device_attribute **shost_attrs; | 473 | struct device_attribute **shost_attrs; |
473 | 474 | ||
474 | /* | 475 | /* |
475 | * Pointer to the SCSI device properties for this host, NULL terminated. | 476 | * Pointer to the SCSI device properties for this host, NULL terminated. |
@@ -654,8 +655,7 @@ struct Scsi_Host { | |||
654 | enum scsi_host_state shost_state; | 655 | enum scsi_host_state shost_state; |
655 | 656 | ||
656 | /* ldm bits */ | 657 | /* ldm bits */ |
657 | struct device shost_gendev; | 658 | struct device shost_gendev, shost_dev; |
658 | struct class_device shost_classdev; | ||
659 | 659 | ||
660 | /* | 660 | /* |
661 | * List of hosts per template. | 661 | * List of hosts per template. |
@@ -682,7 +682,7 @@ struct Scsi_Host { | |||
682 | }; | 682 | }; |
683 | 683 | ||
684 | #define class_to_shost(d) \ | 684 | #define class_to_shost(d) \ |
685 | container_of(d, struct Scsi_Host, shost_classdev) | 685 | container_of(d, struct Scsi_Host, shost_dev) |
686 | 686 | ||
687 | #define shost_printk(prefix, shost, fmt, a...) \ | 687 | #define shost_printk(prefix, shost, fmt, a...) \ |
688 | dev_printk(prefix, &(shost)->shost_gendev, fmt, ##a) | 688 | dev_printk(prefix, &(shost)->shost_gendev, fmt, ##a) |
diff --git a/include/scsi/scsi_transport.h b/include/scsi/scsi_transport.h index 0dfef752f0e2..490bd13a634c 100644 --- a/include/scsi/scsi_transport.h +++ b/include/scsi/scsi_transport.h | |||
@@ -80,7 +80,7 @@ struct scsi_transport_template { | |||
80 | }; | 80 | }; |
81 | 81 | ||
82 | #define transport_class_to_shost(tc) \ | 82 | #define transport_class_to_shost(tc) \ |
83 | dev_to_shost((tc)->dev) | 83 | dev_to_shost((tc)->parent) |
84 | 84 | ||
85 | 85 | ||
86 | /* Private area maintenance. The driver requested allocations come | 86 | /* Private area maintenance. The driver requested allocations come |
diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h index 4769efd4db24..06f72bab9df0 100644 --- a/include/scsi/scsi_transport_fc.h +++ b/include/scsi/scsi_transport_fc.h | |||
@@ -163,8 +163,8 @@ enum fc_tgtid_binding_type { | |||
163 | 163 | ||
164 | 164 | ||
165 | /* Macro for use in defining Virtual Port attributes */ | 165 | /* Macro for use in defining Virtual Port attributes */ |
166 | #define FC_VPORT_ATTR(_name,_mode,_show,_store) \ | 166 | #define FC_VPORT_ATTR(_name,_mode,_show,_store) \ |
167 | struct class_device_attribute class_device_attr_vport_##_name = \ | 167 | struct device_attribute dev_attr_vport_##_name = \ |
168 | __ATTR(_name,_mode,_show,_store) | 168 | __ATTR(_name,_mode,_show,_store) |
169 | 169 | ||
170 | 170 | ||
@@ -234,8 +234,8 @@ struct fc_vport { | |||
234 | 234 | ||
235 | #define dev_to_vport(d) \ | 235 | #define dev_to_vport(d) \ |
236 | container_of(d, struct fc_vport, dev) | 236 | container_of(d, struct fc_vport, dev) |
237 | #define transport_class_to_vport(classdev) \ | 237 | #define transport_class_to_vport(dev) \ |
238 | dev_to_vport(classdev->dev) | 238 | dev_to_vport(dev->parent) |
239 | #define vport_to_shost(v) \ | 239 | #define vport_to_shost(v) \ |
240 | (v->shost) | 240 | (v->shost) |
241 | #define vport_to_shost_channel(v) \ | 241 | #define vport_to_shost_channel(v) \ |
@@ -271,7 +271,7 @@ struct fc_rport_identifiers { | |||
271 | 271 | ||
272 | /* Macro for use in defining Remote Port attributes */ | 272 | /* Macro for use in defining Remote Port attributes */ |
273 | #define FC_RPORT_ATTR(_name,_mode,_show,_store) \ | 273 | #define FC_RPORT_ATTR(_name,_mode,_show,_store) \ |
274 | struct class_device_attribute class_device_attr_rport_##_name = \ | 274 | struct device_attribute dev_attr_rport_##_name = \ |
275 | __ATTR(_name,_mode,_show,_store) | 275 | __ATTR(_name,_mode,_show,_store) |
276 | 276 | ||
277 | 277 | ||
@@ -341,8 +341,8 @@ struct fc_rport { /* aka fc_starget_attrs */ | |||
341 | 341 | ||
342 | #define dev_to_rport(d) \ | 342 | #define dev_to_rport(d) \ |
343 | container_of(d, struct fc_rport, dev) | 343 | container_of(d, struct fc_rport, dev) |
344 | #define transport_class_to_rport(classdev) \ | 344 | #define transport_class_to_rport(dev) \ |
345 | dev_to_rport(classdev->dev) | 345 | dev_to_rport(dev->parent) |
346 | #define rport_to_shost(r) \ | 346 | #define rport_to_shost(r) \ |
347 | dev_to_shost(r->dev.parent) | 347 | dev_to_shost(r->dev.parent) |
348 | 348 | ||
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h index dbc96ef4cc72..aab1eae2ec4c 100644 --- a/include/scsi/scsi_transport_iscsi.h +++ b/include/scsi/scsi_transport_iscsi.h | |||
@@ -177,6 +177,8 @@ struct iscsi_cls_session { | |||
177 | struct list_head host_list; | 177 | struct list_head host_list; |
178 | struct iscsi_transport *transport; | 178 | struct iscsi_transport *transport; |
179 | spinlock_t lock; | 179 | spinlock_t lock; |
180 | struct work_struct block_work; | ||
181 | struct work_struct unblock_work; | ||
180 | struct work_struct scan_work; | 182 | struct work_struct scan_work; |
181 | struct work_struct unbind_work; | 183 | struct work_struct unbind_work; |
182 | 184 | ||
diff --git a/include/scsi/scsi_transport_sas.h b/include/scsi/scsi_transport_sas.h index 09125fa95b93..61ad3594aad6 100644 --- a/include/scsi/scsi_transport_sas.h +++ b/include/scsi/scsi_transport_sas.h | |||
@@ -80,8 +80,8 @@ struct sas_phy { | |||
80 | 80 | ||
81 | #define dev_to_phy(d) \ | 81 | #define dev_to_phy(d) \ |
82 | container_of((d), struct sas_phy, dev) | 82 | container_of((d), struct sas_phy, dev) |
83 | #define transport_class_to_phy(cdev) \ | 83 | #define transport_class_to_phy(dev) \ |
84 | dev_to_phy((cdev)->dev) | 84 | dev_to_phy((dev)->parent) |
85 | #define phy_to_shost(phy) \ | 85 | #define phy_to_shost(phy) \ |
86 | dev_to_shost((phy)->dev.parent) | 86 | dev_to_shost((phy)->dev.parent) |
87 | 87 | ||
@@ -96,8 +96,8 @@ struct sas_rphy { | |||
96 | 96 | ||
97 | #define dev_to_rphy(d) \ | 97 | #define dev_to_rphy(d) \ |
98 | container_of((d), struct sas_rphy, dev) | 98 | container_of((d), struct sas_rphy, dev) |
99 | #define transport_class_to_rphy(cdev) \ | 99 | #define transport_class_to_rphy(dev) \ |
100 | dev_to_rphy((cdev)->dev) | 100 | dev_to_rphy((dev)->parent) |
101 | #define rphy_to_shost(rphy) \ | 101 | #define rphy_to_shost(rphy) \ |
102 | dev_to_shost((rphy)->dev.parent) | 102 | dev_to_shost((rphy)->dev.parent) |
103 | #define target_to_rphy(targ) \ | 103 | #define target_to_rphy(targ) \ |
@@ -152,8 +152,8 @@ struct sas_port { | |||
152 | 152 | ||
153 | #define dev_to_sas_port(d) \ | 153 | #define dev_to_sas_port(d) \ |
154 | container_of((d), struct sas_port, dev) | 154 | container_of((d), struct sas_port, dev) |
155 | #define transport_class_to_sas_port(cdev) \ | 155 | #define transport_class_to_sas_port(dev) \ |
156 | dev_to_sas_port((cdev)->dev) | 156 | dev_to_sas_port((dev)->parent) |
157 | 157 | ||
158 | struct sas_phy_linkrates { | 158 | struct sas_phy_linkrates { |
159 | enum sas_linkrate maximum_linkrate; | 159 | enum sas_linkrate maximum_linkrate; |
diff --git a/include/scsi/sd.h b/include/scsi/sd.h index 8ea9f7358ac1..4f032d48cb6e 100644 --- a/include/scsi/sd.h +++ b/include/scsi/sd.h | |||
@@ -34,7 +34,7 @@ | |||
34 | struct scsi_disk { | 34 | struct scsi_disk { |
35 | struct scsi_driver *driver; /* always &sd_template */ | 35 | struct scsi_driver *driver; /* always &sd_template */ |
36 | struct scsi_device *device; | 36 | struct scsi_device *device; |
37 | struct class_device cdev; | 37 | struct device dev; |
38 | struct gendisk *disk; | 38 | struct gendisk *disk; |
39 | unsigned int openers; /* protected by BKL for now, yuck */ | 39 | unsigned int openers; /* protected by BKL for now, yuck */ |
40 | sector_t capacity; /* size in 512-byte sectors */ | 40 | sector_t capacity; /* size in 512-byte sectors */ |
@@ -46,7 +46,7 @@ struct scsi_disk { | |||
46 | unsigned RCD : 1; /* state of disk RCD bit, unused */ | 46 | unsigned RCD : 1; /* state of disk RCD bit, unused */ |
47 | unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ | 47 | unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ |
48 | }; | 48 | }; |
49 | #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,cdev) | 49 | #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,dev) |
50 | 50 | ||
51 | #define sd_printk(prefix, sdsk, fmt, a...) \ | 51 | #define sd_printk(prefix, sdsk, fmt, a...) \ |
52 | (sdsk)->disk ? \ | 52 | (sdsk)->disk ? \ |