summaryrefslogtreecommitdiff
path: root/storage/msdsm/src/intrface.c
diff options
context:
space:
mode:
Diffstat (limited to 'storage/msdsm/src/intrface.c')
-rw-r--r--storage/msdsm/src/intrface.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/storage/msdsm/src/intrface.c b/storage/msdsm/src/intrface.c
index ab05199a..e7c1eb29 100644
--- a/storage/msdsm/src/intrface.c
+++ b/storage/msdsm/src/intrface.c
@@ -24,8 +24,6 @@ Environment:
--*/
-#define DEBUG_MAIN_SOURCE 1
-
#include "precomp.h"
#ifdef DEBUG_USE_WPP
@@ -36,7 +34,7 @@ Environment:
//
-// Flag to indicate whether to NT_ASSERT or ignore a paritcular condition.
+// Flag to indicate whether to NT_ASSERT or ignore a particular condition.
//
BOOLEAN DoAssert = TRUE;
@@ -452,6 +450,8 @@ Return Value:
NT_ASSERT(NT_SUCCESS(ioStatus.Status));
+
+
return;
}
@@ -2722,6 +2722,22 @@ Return Value:
if (DsmpIsDeviceInitialized(deviceInfo)) {
+ if (deviceInfo->Unresponsive) {
+ //
+ // Since the device is marked unresponsive, there
+ // is no point in sending RTPG or TUR down
+ // as that will fail by port driver.
+ // but that doesn't necessarily mean that the path doesn't exist.
+ // Return SUCCESS here so that MPIO doesn't remove
+ // disk in case of failover etc.
+ // If really this path is gone, this should get deleted
+ // as part of pnp removal and then if no other paths are left
+ // disk will be removed
+ //
+ status = STATUS_SUCCESS;
+ return status;
+ }
+
irql = ExAcquireSpinLockExclusive(&(dsmCtxt->DsmContextLock));
//
@@ -3844,7 +3860,7 @@ Return Value:
DsmIds));
//
- // Determine whether this is a special-case request - PR or QOS.
+ // Determine whether this is a special-case request.
//
if (DsmpReservationCommand(Irp, Srb)) {