aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/device_handler
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/device_handler')
-rw-r--r--drivers/scsi/device_handler/scsi_dh_emc.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/scsi/device_handler/scsi_dh_emc.c b/drivers/scsi/device_handler/scsi_dh_emc.c
index 591186cf1896..e1c8be06de9d 100644
--- a/drivers/scsi/device_handler/scsi_dh_emc.c
+++ b/drivers/scsi/device_handler/scsi_dh_emc.c
@@ -629,6 +629,24 @@ static const struct scsi_dh_devlist clariion_dev_list[] = {
629 {NULL, NULL}, 629 {NULL, NULL},
630}; 630};
631 631
632static bool clariion_match(struct scsi_device *sdev)
633{
634 int i;
635
636 if (scsi_device_tpgs(sdev))
637 return false;
638
639 for (i = 0; clariion_dev_list[i].vendor; i++) {
640 if (!strncmp(sdev->vendor, clariion_dev_list[i].vendor,
641 strlen(clariion_dev_list[i].vendor)) &&
642 !strncmp(sdev->model, clariion_dev_list[i].model,
643 strlen(clariion_dev_list[i].model))) {
644 return true;
645 }
646 }
647 return false;
648}
649
632static int clariion_bus_attach(struct scsi_device *sdev); 650static int clariion_bus_attach(struct scsi_device *sdev);
633static void clariion_bus_detach(struct scsi_device *sdev); 651static void clariion_bus_detach(struct scsi_device *sdev);
634 652
@@ -642,6 +660,7 @@ static struct scsi_device_handler clariion_dh = {
642 .activate = clariion_activate, 660 .activate = clariion_activate,
643 .prep_fn = clariion_prep_fn, 661 .prep_fn = clariion_prep_fn,
644 .set_params = clariion_set_params, 662 .set_params = clariion_set_params,
663 .match = clariion_match,
645}; 664};
646 665
647static int clariion_bus_attach(struct scsi_device *sdev) 666static int clariion_bus_attach(struct scsi_device *sdev)