This patch introduces the match function for rdac device handler. Without this, sometimes handler attach fails during the device_add. Included check for TPGS bit before proceeding further. The match function was introduced by this patch http://www.spinics.net/lists/linux-scsi/msg54284.html Signed-off-by: Babu Moger <babu.moger@xxxxxxxxxx> Acked-by: Hannes Reinecke <hare@xxxxxxx> --- --- linux-3.2-rc2/drivers/scsi/device_handler/scsi_dh_rdac.c.orig 2011-11-15 11:02:59.000000000 -0600 +++ linux-3.2-rc2/drivers/scsi/device_handler/scsi_dh_rdac.c 2011-11-19 10:47:03.000000000 -0600 @@ -820,6 +820,24 @@ static const struct scsi_dh_devlist rdac {NULL, NULL}, }; +static bool rdac_match(struct scsi_device *sdev) +{ + int i; + + if (scsi_device_tpgs(sdev)) + return false; + + for (i = 0; rdac_dev_list[i].vendor; i++) { + if (!strncmp(sdev->vendor, rdac_dev_list[i].vendor, + strlen(rdac_dev_list[i].vendor)) && + !strncmp(sdev->model, rdac_dev_list[i].model, + strlen(rdac_dev_list[i].model))) { + return true; + } + } + return false; +} + static int rdac_bus_attach(struct scsi_device *sdev); static void rdac_bus_detach(struct scsi_device *sdev); @@ -832,6 +850,7 @@ static struct scsi_device_handler rdac_d .attach = rdac_bus_attach, .detach = rdac_bus_detach, .activate = rdac_activate, + .match = rdac_match, }; static int rdac_bus_attach(struct scsi_device *sdev) -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel