Commit e46ee8ef authored by K. Y. Srinivasan's avatar K. Y. Srinivasan Committed by Greg Kroah-Hartman

Staging: hv: Get rid of IDE details from blkvsc_drv.c

Now get rid of IDE details from blkvsc_drv.c.
Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: default avatarHank Janssen <hjanssen@microsoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 1f91bca8
...@@ -953,11 +953,8 @@ static int blkvsc_probe(struct device *device) ...@@ -953,11 +953,8 @@ static int blkvsc_probe(struct device *device)
struct block_device_context *blkdev = NULL; struct block_device_context *blkdev = NULL;
struct storvsc_device_info device_info; struct storvsc_device_info device_info;
int major = 0; struct storvsc_major_info major_info;
int devnum = 0;
int ret = 0; int ret = 0;
static int ide0_registered;
static int ide1_registered;
blkdev = kzalloc(sizeof(struct block_device_context), GFP_KERNEL); blkdev = kzalloc(sizeof(struct block_device_context), GFP_KERNEL);
...@@ -994,43 +991,23 @@ static int blkvsc_probe(struct device *device) ...@@ -994,43 +991,23 @@ static int blkvsc_probe(struct device *device)
dev_set_drvdata(device, blkdev); dev_set_drvdata(device, blkdev);
/* Calculate the major and device num */ ret = stor_vsc_get_major_info(&device_info, &major_info);
if (blkdev->path == 0) {
major = IDE0_MAJOR;
devnum = blkdev->path + blkdev->target; /* 0 or 1 */
if (!ide0_registered) { if (ret)
ret = register_blkdev(major, "ide"); goto cleanup;
if (ret != 0) {
DPRINT_ERR(BLKVSC_DRV,
"register_blkdev() failed! ret %d",
ret);
goto remove;
}
ide0_registered = 1; if (major_info.do_register) {
} ret = register_blkdev(major_info.major, major_info.devname);
} else if (blkdev->path == 1) {
major = IDE1_MAJOR;
devnum = blkdev->path + blkdev->target + 1; /* 2 or 3 */
if (!ide1_registered) {
ret = register_blkdev(major, "ide");
if (ret != 0) { if (ret != 0) {
DPRINT_ERR(BLKVSC_DRV, DPRINT_ERR(BLKVSC_DRV,
"register_blkdev() failed! ret %d", "register_blkdev() failed! ret %d", ret);
ret);
goto remove; goto remove;
} }
ide1_registered = 1;
}
} else {
ret = -1;
goto cleanup;
} }
DPRINT_INFO(BLKVSC_DRV, "blkvsc registered for major %d!!", major); DPRINT_INFO(BLKVSC_DRV, "blkvsc registered for major %d!!",
major_info.major);
blkdev->gd = alloc_disk(BLKVSC_MINORS); blkdev->gd = alloc_disk(BLKVSC_MINORS);
if (!blkdev->gd) { if (!blkdev->gd) {
...@@ -1046,8 +1023,8 @@ static int blkvsc_probe(struct device *device) ...@@ -1046,8 +1023,8 @@ static int blkvsc_probe(struct device *device)
blk_queue_bounce_limit(blkdev->gd->queue, BLK_BOUNCE_ANY); blk_queue_bounce_limit(blkdev->gd->queue, BLK_BOUNCE_ANY);
blk_queue_dma_alignment(blkdev->gd->queue, 511); blk_queue_dma_alignment(blkdev->gd->queue, 511);
blkdev->gd->major = major; blkdev->gd->major = major_info.major;
if (devnum == 1 || devnum == 3) if (major_info.index == 1 || major_info.index == 3)
blkdev->gd->first_minor = BLKVSC_MINORS; blkdev->gd->first_minor = BLKVSC_MINORS;
else else
blkdev->gd->first_minor = 0; blkdev->gd->first_minor = 0;
...@@ -1055,7 +1032,7 @@ static int blkvsc_probe(struct device *device) ...@@ -1055,7 +1032,7 @@ static int blkvsc_probe(struct device *device)
blkdev->gd->events = DISK_EVENT_MEDIA_CHANGE; blkdev->gd->events = DISK_EVENT_MEDIA_CHANGE;
blkdev->gd->private_data = blkdev; blkdev->gd->private_data = blkdev;
blkdev->gd->driverfs_dev = &(blkdev->device_ctx->device); blkdev->gd->driverfs_dev = &(blkdev->device_ctx->device);
sprintf(blkdev->gd->disk_name, "hd%c", 'a' + devnum); sprintf(blkdev->gd->disk_name, "hd%c", 'a' + major_info.index);
blkvsc_do_operation(blkdev, DO_INQUIRY); blkvsc_do_operation(blkdev, DO_INQUIRY);
blkvsc_do_operation(blkdev, DO_CAPACITY); blkvsc_do_operation(blkdev, DO_CAPACITY);
......
...@@ -629,12 +629,12 @@ int stor_vsc_get_major_info(struct storvsc_device_info *device_info, ...@@ -629,12 +629,12 @@ int stor_vsc_get_major_info(struct storvsc_device_info *device_info,
if (device_info->path_id) { if (device_info->path_id) {
major_info->major = 22; major_info->major = 22;
if (!ide1_registered) if (!ide1_registered) {
major_info->do_register = true; major_info->do_register = true;
else {
major_info->do_register = false;
ide1_registered = true; ide1_registered = true;
} } else
major_info->do_register = false;
if (device_info->target_id) if (device_info->target_id)
major_info->index = 3; major_info->index = 3;
else else
...@@ -643,12 +643,12 @@ int stor_vsc_get_major_info(struct storvsc_device_info *device_info, ...@@ -643,12 +643,12 @@ int stor_vsc_get_major_info(struct storvsc_device_info *device_info,
return 0; return 0;
} else { } else {
major_info->major = 3; major_info->major = 3;
if (!ide0_registered) if (!ide0_registered) {
major_info->do_register = true; major_info->do_register = true;
else {
major_info->do_register = false;
ide0_registered = true; ide0_registered = true;
} } else
major_info->do_register = false;
if (device_info->target_id) if (device_info->target_id)
major_info->index = 1; major_info->index = 1;
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment