aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_sysfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/scsi_sysfs.c')
-rw-r--r--drivers/scsi/scsi_sysfs.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
index 96db51c40ef3..5326f5cbeae9 100644
--- a/drivers/scsi/scsi_sysfs.c
+++ b/drivers/scsi/scsi_sysfs.c
@@ -276,6 +276,19 @@ static int scsi_bus_match(struct device *dev, struct device_driver *gendrv)
276 return (sdp->inq_periph_qual == SCSI_INQ_PQ_CON)? 1: 0; 276 return (sdp->inq_periph_qual == SCSI_INQ_PQ_CON)? 1: 0;
277} 277}
278 278
279static int scsi_bus_uevent(struct device *dev, char **envp, int num_envp,
280 char *buffer, int buffer_size)
281{
282 struct scsi_device *sdev = to_scsi_device(dev);
283 int i = 0;
284 int length = 0;
285
286 add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length,
287 "MODALIAS=" SCSI_DEVICE_MODALIAS_FMT, sdev->type);
288 envp[i] = NULL;
289 return 0;
290}
291
279static int scsi_bus_suspend(struct device * dev, pm_message_t state) 292static int scsi_bus_suspend(struct device * dev, pm_message_t state)
280{ 293{
281 struct device_driver *drv = dev->driver; 294 struct device_driver *drv = dev->driver;
@@ -331,6 +344,7 @@ static int scsi_bus_resume(struct device * dev)
331struct bus_type scsi_bus_type = { 344struct bus_type scsi_bus_type = {
332 .name = "scsi", 345 .name = "scsi",
333 .match = scsi_bus_match, 346 .match = scsi_bus_match,
347 .uevent = scsi_bus_uevent,
334 .suspend = scsi_bus_suspend, 348 .suspend = scsi_bus_suspend,
335 .resume = scsi_bus_resume, 349 .resume = scsi_bus_resume,
336}; 350};
@@ -558,6 +572,14 @@ show_sdev_iostat(iorequest_cnt);
558show_sdev_iostat(iodone_cnt); 572show_sdev_iostat(iodone_cnt);
559show_sdev_iostat(ioerr_cnt); 573show_sdev_iostat(ioerr_cnt);
560 574
575static ssize_t
576sdev_show_modalias(struct device *dev, struct device_attribute *attr, char *buf)
577{
578 struct scsi_device *sdev;
579 sdev = to_scsi_device(dev);
580 return snprintf (buf, 20, SCSI_DEVICE_MODALIAS_FMT "\n", sdev->type);
581}
582static DEVICE_ATTR(modalias, S_IRUGO, sdev_show_modalias, NULL);
561 583
562/* Default template for device attributes. May NOT be modified */ 584/* Default template for device attributes. May NOT be modified */
563static struct device_attribute *scsi_sysfs_sdev_attrs[] = { 585static struct device_attribute *scsi_sysfs_sdev_attrs[] = {
@@ -577,6 +599,7 @@ static struct device_attribute *scsi_sysfs_sdev_attrs[] = {
577 &dev_attr_iorequest_cnt, 599 &dev_attr_iorequest_cnt,
578 &dev_attr_iodone_cnt, 600 &dev_attr_iodone_cnt,
579 &dev_attr_ioerr_cnt, 601 &dev_attr_ioerr_cnt,
602 &dev_attr_modalias,
580 NULL 603 NULL
581}; 604};
582 605