From: K. Y. Srinivasan Date: Thu, 12 Jan 2012 20:38:00 +0000 (-0800) Subject: Staging: hv: storvsc: Add a comment to explain life-cycle management X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=a8c18c573bf896f81dbcd68fdb81d81d4200dcad;p=openwrt%2Fstaging%2Fblogic.git Staging: hv: storvsc: Add a comment to explain life-cycle management Add a comment to explain life-cycle management and fix format issue. Signed-off-by: K. Y. Srinivasan Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/hv/storvsc_drv.c b/drivers/staging/hv/storvsc_drv.c index e0e471cedcae..204b3ca5a196 100644 --- a/drivers/staging/hv/storvsc_drv.c +++ b/drivers/staging/hv/storvsc_drv.c @@ -375,6 +375,21 @@ done: kfree(wrk); } +/* + * We can get incoming messages from the host that are not in response to + * messages that we have sent out. An example of this would be messages + * received by the guest to notify dynamic addition/removal of LUNs. To + * deal with potential race conditions where the driver may be in the + * midst of being unloaded when we might receive an unsolicited message + * from the host, we have implemented a mechanism to gurantee sequential + * consistency: + * + * 1) Once the device is marked as being destroyed, we will fail all + * outgoing messages. + * 2) We permit incoming messages when the device is being destroyed, + * only to properly account for messages already sent out. + */ + static inline struct storvsc_device *get_out_stor_device( struct hv_device *device) { @@ -569,7 +584,7 @@ static void storvsc_on_io_completion(struct hv_device *device, */ if ((stor_pkt->vm_srb.cdb[0] == INQUIRY) || - (stor_pkt->vm_srb.cdb[0] == MODE_SENSE)) { + (stor_pkt->vm_srb.cdb[0] == MODE_SENSE)) { vstor_packet->vm_srb.scsi_status = 0; vstor_packet->vm_srb.srb_status = SRB_STATUS_SUCCESS; }