diff --git a/drivers/staging/hv/storvsc_drv.c b/drivers/staging/hv/storvsc_drv.c index fff1e5b936fc..b996293640b2 100644 --- a/drivers/staging/hv/storvsc_drv.c +++ b/drivers/staging/hv/storvsc_drv.c @@ -1359,17 +1359,20 @@ static struct scsi_host_template scsi_driver = { .dma_boundary = PAGE_SIZE-1, }; -/* - * The storvsc_probe function assumes that the IDE guid - * is the second entry. - */ +enum { + SCSI_GUID, + IDE_GUID, +}; + static const struct hv_vmbus_device_id id_table[] = { /* SCSI guid */ { VMBUS_DEVICE(0xd9, 0x63, 0x61, 0xba, 0xa1, 0x04, 0x29, 0x4d, - 0xb6, 0x05, 0x72, 0xe2, 0xff, 0xb1, 0xdc, 0x7f) }, + 0xb6, 0x05, 0x72, 0xe2, 0xff, 0xb1, 0xdc, 0x7f) + .driver_data = SCSI_GUID }, /* IDE guid */ { VMBUS_DEVICE(0x32, 0x26, 0x41, 0x32, 0xcb, 0x86, 0xa2, 0x44, - 0x9b, 0x5c, 0x50, 0xd1, 0x41, 0x73, 0x54, 0xf5) }, + 0x9b, 0x5c, 0x50, 0xd1, 0x41, 0x73, 0x54, 0xf5) + .driver_data = IDE_GUID }, { }, }; @@ -1387,15 +1390,10 @@ static int storvsc_probe(struct hv_device *device, struct Scsi_Host *host; struct hv_host_device *host_dev; struct storvsc_device_info device_info; - bool dev_is_ide; + bool dev_is_ide = ((dev_id->driver_data == IDE_GUID) ? true : false); int path = 0; int target = 0; - if (!memcmp(&device->dev_type.b, id_table[1].guid, sizeof(uuid_le))) - dev_is_ide = true; - else - dev_is_ide = false; - host = scsi_host_alloc(&scsi_driver, sizeof(struct hv_host_device)); if (!host)