[PATCH 27/40] Staging: hv: storvsc: Handle IDE devices correctly in storvsc_remove()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Properly deal with cleaning up of resources on storvsc_remove().
Keep in mind that while on the scsi side, we don't get called for each
scsi disk configured for the guest, on the IDE side, we will get called
for each IDE device that was probed. Perform all the cleanup in the 
context of the HBA owner.

Signed-off-by: K. Y. Srinivasan <kys@xxxxxxxxxxxxx>
Signed-off-by: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>
Signed-off-by: Abhishek Kane <v-abkane@xxxxxxxxxxxxx>
Signed-off-by: Hank Janssen <hjanssen@xxxxxxxxxxxxx>
---
 drivers/staging/hv/storvsc_drv.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/staging/hv/storvsc_drv.c b/drivers/staging/hv/storvsc_drv.c
index c0d6e16..a6da132 100644
--- a/drivers/staging/hv/storvsc_drv.c
+++ b/drivers/staging/hv/storvsc_drv.c
@@ -350,6 +350,7 @@ static int storvsc_remove(struct hv_device *dev)
 	struct hv_host_device *host_dev =
 			(struct hv_host_device *)host->hostdata;
 	struct storvsc_device *stor_dev = dev->ext;
+	int i;
 
 	if (!stor_dev->hba_owner)
 		return 0;
@@ -359,6 +360,14 @@ static int storvsc_remove(struct hv_device *dev)
 	scsi_host_put(host);
 
 	storvsc_dev_remove(dev);
+
+	for (i = 0; i < 4; i++) {
+		struct hv_device *d = ide_devices[i];
+
+		if (d)
+			storvsc_dev_remove(d);
+	}
+
 	if (host_dev->request_pool) {
 		kmem_cache_destroy(host_dev->request_pool);
 		host_dev->request_pool = NULL;
-- 
1.7.4.1

_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/virtualization


[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux