Staging: hv: Use the rinbuffer size info in struct storvsc_device_info
authorK. Y. Srinivasan <kys@microsoft.com>
Tue, 10 May 2011 14:56:01 +0000 (07:56 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 11 May 2011 20:49:24 +0000 (13:49 -0700)
Use the rinbuffer size info in struct storvsc_device_info.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Abhishek Kane <v-abkane@microsoft.com>
Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/hv/blkvsc_drv.c
drivers/staging/hv/storvsc.c
drivers/staging/hv/storvsc_drv.c

index 8721dbcf896487731bbae01337a0c2936fa83f5f..0038a9724418fab722a9498ca64f94e6155de4d0 100644 (file)
@@ -146,6 +146,8 @@ static int blkvsc_device_add(struct hv_device *device,
 
        device_info = (struct storvsc_device_info *)additional_info;
 
+       device_info->ring_buffer_size = blkvsc_ringbuffer_size;
+
        ret = storvsc_dev_add(device, additional_info);
        if (ret != 0)
                return ret;
@@ -818,14 +820,11 @@ static const struct block_device_operations block_ops = {
  */
 static int blkvsc_drv_init(void)
 {
-       struct storvsc_driver *storvsc_drv = &blkvsc_drv;
        struct hv_driver *drv = &blkvsc_drv.base;
        int ret;
 
        BUILD_BUG_ON(sizeof(sector_t) != 8);
 
-       storvsc_drv->ring_buffer_size = blkvsc_ringbuffer_size;
-
        memcpy(&drv->dev_type, &dev_type, sizeof(struct hv_guid));
        drv->name = drv_name;
        drv->driver.name = drv_name;
index 41361f516772c10af2d56ae4feebd322e94c5a16..8d7a49038178df9d58648453e4ac13db8163f8c2 100644 (file)
@@ -363,19 +363,17 @@ static void storvsc_on_channel_callback(void *context)
        return;
 }
 
-static int storvsc_connect_to_vsp(struct hv_device *device)
+static int storvsc_connect_to_vsp(struct hv_device *device, u32 ring_size)
 {
        struct vmstorage_channel_properties props;
-       struct storvsc_driver *stor_driver;
        int ret;
 
-       stor_driver = drv_to_stordrv(device->device.driver);
        memset(&props, 0, sizeof(struct vmstorage_channel_properties));
 
        /* Open the channel */
        ret = vmbus_open(device->channel,
-                        stor_driver->ring_buffer_size,
-                        stor_driver->ring_buffer_size,
+                        ring_size,
+                        ring_size,
                         (void *)&props,
                         sizeof(struct vmstorage_channel_properties),
                         storvsc_on_channel_callback, device);
@@ -413,7 +411,7 @@ int storvsc_dev_add(struct hv_device *device,
 
        stor_device->port_number = device_info->port_number;
        /* Send it back up */
-       ret = storvsc_connect_to_vsp(device);
+       ret = storvsc_connect_to_vsp(device, device_info->ring_buffer_size);
 
        device_info->path_id = stor_device->path_id;
        device_info->target_id = stor_device->target_id;
index 7d8b8f9be1893e22948e5b90206cd89efd2f0b2e..1fb0521e2a537598adb01786e24958be73338fbc 100644 (file)
@@ -733,6 +733,7 @@ static int storvsc_probe(struct hv_device *device)
        }
 
        device_info.port_number = host->host_no;
+       device_info.ring_buffer_size  = storvsc_ringbuffer_size;
        /* Call to the vsc driver to add the device */
        ret = storvsc_dev_add(device, (void *)&device_info);