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.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
index 9ad41168d26d..b333389f248f 100644
--- a/drivers/scsi/scsi_sysfs.c
+++ b/drivers/scsi/scsi_sysfs.c
@@ -1030,11 +1030,20 @@ int scsi_sysfs_add_sdev(struct scsi_device *sdev)
1030 "failed to add device: %d\n", error); 1030 "failed to add device: %d\n", error);
1031 return error; 1031 return error;
1032 } 1032 }
1033
1034 error = scsi_dh_add_device(sdev);
1035 if (error) {
1036 sdev_printk(KERN_INFO, sdev,
1037 "failed to add device handler: %d\n", error);
1038 return error;
1039 }
1040
1033 device_enable_async_suspend(&sdev->sdev_dev); 1041 device_enable_async_suspend(&sdev->sdev_dev);
1034 error = device_add(&sdev->sdev_dev); 1042 error = device_add(&sdev->sdev_dev);
1035 if (error) { 1043 if (error) {
1036 sdev_printk(KERN_INFO, sdev, 1044 sdev_printk(KERN_INFO, sdev,
1037 "failed to add class device: %d\n", error); 1045 "failed to add class device: %d\n", error);
1046 scsi_dh_remove_device(sdev);
1038 device_del(&sdev->sdev_gendev); 1047 device_del(&sdev->sdev_gendev);
1039 return error; 1048 return error;
1040 } 1049 }
@@ -1074,6 +1083,7 @@ void __scsi_remove_device(struct scsi_device *sdev)
1074 bsg_unregister_queue(sdev->request_queue); 1083 bsg_unregister_queue(sdev->request_queue);
1075 device_unregister(&sdev->sdev_dev); 1084 device_unregister(&sdev->sdev_dev);
1076 transport_remove_device(dev); 1085 transport_remove_device(dev);
1086 scsi_dh_remove_device(sdev);
1077 device_del(dev); 1087 device_del(dev);
1078 } else 1088 } else
1079 put_device(&sdev->sdev_dev); 1089 put_device(&sdev->sdev_dev);