[x86] storvsc: Account for in-transit packets in the RESET path

svn path=/dists/sid/linux/; revision=19440
This commit is contained in:
Ben Hutchings 2012-10-21 02:43:35 +00:00
parent 24b6ca0b3a
commit 6984ee2510
3 changed files with 37 additions and 0 deletions

1
debian/changelog vendored
View File

@ -93,6 +93,7 @@ linux (3.2.32-1) UNRELEASED; urgency=low
- rt: rwsem/rwlock: lockdep annotations
- sched: Better debug output for might sleep
- stomp_machine: Use mutex_trylock when called from inactive cpu
* [x86] storvsc: Account for in-transit packets in the RESET path
-- Ben Hutchings <ben@decadent.org.uk> Sat, 29 Sep 2012 14:19:46 +0200

View File

@ -0,0 +1,35 @@
From: "K. Y. Srinivasan" <kys@microsoft.com>
Date: Tue, 2 Oct 2012 11:03:31 -0700
Subject: [SCSI] storvsc: Account for in-transit packets in the RESET path
commit 5c1b10ab7f93d24f29b5630286e323d1c5802d5c upstream.
Properly account for I/O in transit before returning from the RESET call.
In the absense of this patch, we could have a situation where the host may
respond to a command that was issued prior to the issuance of the RESET
command at some arbitrary time after responding to the RESET command.
Currently, the host does not do anything with the RESET command.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
---
drivers/scsi/storvsc_drv.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 528d52b..0144078 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -1221,7 +1221,12 @@ static int storvsc_host_reset_handler(struct scsi_cmnd *scmnd)
/*
* At this point, all outstanding requests in the adapter
* should have been flushed out and return to us
+ * There is a potential race here where the host may be in
+ * the process of responding when we return from here.
+ * Just wait for all in-transit packets to be accounted for
+ * before we return from here.
*/
+ storvsc_wait_to_drain(stor_device);
return SUCCESS;
}

View File

@ -401,3 +401,4 @@ bugfix/all/SUNRPC-Set-alloc_slot-for-backchannel-tcp-ops.patch
debian/iwlwifi-do-not-request-unreleased-firmware.patch
debian/hid-avoid-ABI-change-in-3.2.31.patch
debian/xfrm-avoid-ABI-change-in-3.2.31.patch
bugfix/x86/SCSI-storvsc-Account-for-in-transit-packets-in-the-R.patch