Staging: hv: Cleanup blkvsc_remove()
authorK. Y. Srinivasan <kys@microsoft.com>
Tue, 10 May 2011 14:54:09 +0000 (07:54 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 11 May 2011 20:39:01 +0000 (13:39 -0700)
The function storvsc_dev_remove() already deals with draining of
the outstanding I/O. Cleanup blkvsc_remove() keeping this in mind.

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

index 2b27d00039f4085ce2a4a4fcfe46a2f2f7945a29..e6a59d753922e77d72dd1b873433da8093cfbf54 100644 (file)
@@ -538,11 +538,6 @@ static int blkvsc_remove(struct hv_device *dev)
        struct block_device_context *blkdev = dev_get_drvdata(&dev->device);
        unsigned long flags;
 
-       /*
-        * Call to the vsc driver to let it know that the device is being
-        * removed
-        */
-       storvsc_dev_remove(dev);
 
        /* Get to a known state */
        spin_lock_irqsave(&blkdev->lock, flags);
@@ -555,17 +550,16 @@ static int blkvsc_remove(struct hv_device *dev)
 
        spin_unlock_irqrestore(&blkdev->lock, flags);
 
-       while (blkdev->num_outstanding_reqs) {
-               DPRINT_INFO(STORVSC, "waiting for %d requests to complete...",
-                           blkdev->num_outstanding_reqs);
-               udelay(100);
-       }
-
-
        blkvsc_do_operation(blkdev, DO_FLUSH);
 
        blk_cleanup_queue(blkdev->gd->queue);
 
+       /*
+        * Call to the vsc driver to let it know that the device is being
+        * removed
+        */
+       storvsc_dev_remove(dev);
+
        del_gendisk(blkdev->gd);
 
        kmem_cache_destroy(blkdev->request_pool);