diff options
author | Hannes Reinecke <hare@suse.de> | 2015-01-08 01:43:42 -0500 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2015-01-09 09:44:28 -0500 |
commit | ded85c193a391a84076d5c6a7a5668fe164a490e (patch) | |
tree | a8f7796e5dcd0c1263155cb8fc62c4d68cc9ec49 /include/scsi | |
parent | b0a93d96b2814c725161f91a4e35d0c29ec0f95b (diff) |
scsi: Implement per-cpu logging buffer
Implement a per-cpu buffer for formatting messages to avoid line breaks
up under high load. This patch implements scmd_printk() and
sdev_prefix_printk() using the per-cpu buffer and makes sdev_printk() a
wrapper for sdev_prefix_printk().
Tested-by: Robert Elliott <elliott@hp.com>
Reviewed-by: Robert Elliott <elliott@hp.com>
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/scsi_device.h | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index 3a4edd1f7dbb..d1aad4d04334 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h | |||
@@ -230,9 +230,6 @@ struct scsi_dh_data { | |||
230 | #define transport_class_to_sdev(class_dev) \ | 230 | #define transport_class_to_sdev(class_dev) \ |
231 | to_scsi_device(class_dev->parent) | 231 | to_scsi_device(class_dev->parent) |
232 | 232 | ||
233 | #define sdev_printk(prefix, sdev, fmt, a...) \ | ||
234 | dev_printk(prefix, &(sdev)->sdev_gendev, fmt, ##a) | ||
235 | |||
236 | #define sdev_dbg(sdev, fmt, a...) \ | 233 | #define sdev_dbg(sdev, fmt, a...) \ |
237 | dev_dbg(&(sdev)->sdev_gendev, fmt, ##a) | 234 | dev_dbg(&(sdev)->sdev_gendev, fmt, ##a) |
238 | 235 | ||
@@ -240,16 +237,14 @@ struct scsi_dh_data { | |||
240 | * like scmd_printk, but the device name is passed in | 237 | * like scmd_printk, but the device name is passed in |
241 | * as a string pointer | 238 | * as a string pointer |
242 | */ | 239 | */ |
243 | #define sdev_prefix_printk(l, sdev, p, fmt, a...) \ | 240 | extern int sdev_prefix_printk(const char *, const struct scsi_device *, |
244 | (p) ? \ | 241 | const char *, const char *, ...); |
245 | sdev_printk(l, sdev, "[%s] " fmt, p, ##a) : \ | 242 | |
246 | sdev_printk(l, sdev, fmt, ##a) | 243 | #define sdev_printk(l, sdev, fmt, a...) \ |
247 | 244 | sdev_prefix_printk(l, sdev, NULL, fmt, ##a) | |
248 | #define scmd_printk(prefix, scmd, fmt, a...) \ | 245 | |
249 | (scmd)->request->rq_disk ? \ | 246 | extern int scmd_printk(const char *, const struct scsi_cmnd *, |
250 | sdev_printk(prefix, (scmd)->device, "[%s] " fmt, \ | 247 | const char *, ...); |
251 | (scmd)->request->rq_disk->disk_name, ##a) : \ | ||
252 | sdev_printk(prefix, (scmd)->device, fmt, ##a) | ||
253 | 248 | ||
254 | #define scmd_dbg(scmd, fmt, a...) \ | 249 | #define scmd_dbg(scmd, fmt, a...) \ |
255 | do { \ | 250 | do { \ |