aboutsummaryrefslogtreecommitdiffstats
path: root/include/scsi
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2015-01-08 01:43:42 -0500
committerChristoph Hellwig <hch@lst.de>2015-01-09 09:44:28 -0500
commitded85c193a391a84076d5c6a7a5668fe164a490e (patch)
treea8f7796e5dcd0c1263155cb8fc62c4d68cc9ec49 /include/scsi
parentb0a93d96b2814c725161f91a4e35d0c29ec0f95b (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.h21
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...) \ 240extern 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 ? \ 246extern 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 { \