[PATCH 6/6] scsi_dh : release the refcounts in scsi_dh_rdac handler when activate is complete

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

 



This patch releases the refcounts when activate is complete in scsi_dh_rdac handler.

Signed-off-by: Babu Moger <babu.moger@xxxxxxx>
---
--- linux-2.6.35-rc5/drivers/scsi/device_handler/scsi_dh_rdac.c.orig	2010-07-23 05:51:24.000000000 -0500
+++ linux-2.6.35-rc5/drivers/scsi/device_handler/scsi_dh_rdac.c	2010-07-23 05:54:05.000000000 -0500
@@ -209,6 +209,7 @@ static const char *lun_state[] =
 struct rdac_queue_data {
 	struct list_head	entry;
 	struct rdac_dh_data	*h;
+	struct scsi_device	*sdev;
 	activate_complete	callback_fn;
 	void			*callback_data;
 };
@@ -614,6 +615,9 @@ done:
 			qdata->h->state = RDAC_STATE_ACTIVE;
 		if (qdata->callback_fn)
 			qdata->callback_fn(qdata->callback_data, err);
+		kref_put(&qdata->sdev->scsi_dh_data->kref,
+			 scsi_dh_handler_cleanup);
+		put_device(&qdata->sdev->sdev_gendev);
 		kfree(qdata);
 	}
 	return;
@@ -630,6 +634,7 @@ static int queue_mode_select(struct scsi
 		return SCSI_DH_RETRY;
 
 	qdata->h = get_rdac_data(sdev);
+	qdata->sdev = sdev;
 	qdata->callback_fn = fn;
 	qdata->callback_data = data;
 
@@ -663,6 +668,8 @@ static int rdac_activate(struct scsi_dev
 done:
 	if (fn)
 		fn(data, err);
+	kref_put(&sdev->scsi_dh_data->kref, scsi_dh_handler_cleanup);
+	put_device(&sdev->sdev_gendev);
 	return 0;
 }
 


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux