|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH 02/10] Move StorPort*() calls to adapter.c
From: Owen Smith <owen.smith@xxxxxxxxxx>
Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
src/xenvbd/adapter.c | 38 ++++++++++++++++++++++++++++++++------
src/xenvbd/adapter.h | 11 +++++++++++
src/xenvbd/target.c | 19 ++++++-------------
3 files changed, 49 insertions(+), 19 deletions(-)
diff --git a/src/xenvbd/adapter.c b/src/xenvbd/adapter.c
index 2e85f9f..ec6711a 100644
--- a/src/xenvbd/adapter.c
+++ b/src/xenvbd/adapter.c
@@ -58,7 +58,8 @@
#include "debug.h"
#include "assert.h"
-#define MAXNAMELEN 128
+#define XENVBD_MAX_QUEUE_DEPTH 254
+#define MAXNAMELEN 128
#define ADAPTER_POOL_TAG 'adAX'
struct _XENVBD_ADAPTER {
@@ -498,9 +499,7 @@ __AdapterEnumerate(
}
if (NeedInvalidate)
- StorPortNotification(BusChangeDetected,
- Adapter,
- NULL);
+ AdapterTargetListChanged(Adapter);
if (NeedReboot)
DriverRequestReboot();
}
@@ -1408,6 +1407,31 @@ AdapterCompleteSrb(
StorPortNotification(RequestComplete, Adapter, Srb);
}
+VOID
+AdapterTargetListChanged(
+ IN PXENVBD_ADAPTER Adapter
+ )
+{
+ StorPortNotification(BusChangeDetected,
+ Adapter,
+ NULL);
+}
+
+VOID
+AdapterSetDeviceQueueDepth(
+ IN PXENVBD_ADAPTER Adapter,
+ IN ULONG TargetId
+ )
+{
+ if (!StorPortSetDeviceQueueDepth(Adapter,
+ 0,
+ (UCHAR)TargetId,
+ 0,
+ XENVBD_MAX_QUEUE_DEPTH))
+ Verbose("Target[%d] : Failed to set queue depth\n",
+ TargetId);
+}
+
static VOID
AdapterUnplugRequest(
IN PXENVBD_ADAPTER Adapter,
@@ -1713,15 +1737,16 @@ AdapterHwBuildIo(
Srb->SrbStatus = SRB_STATUS_ABORT_FAILED;
break;
case SRB_FUNCTION_RESET_BUS:
- Srb->SrbStatus = SRB_STATUS_SUCCESS;
AdapterHwResetBus(Adapter, Srb->PathId);
+ Srb->SrbStatus = SRB_STATUS_SUCCESS;
break;
default:
+ Srb->SrbStatus = SRB_STATUS_INVALID_REQUEST;
break;
}
- StorPortNotification(RequestComplete, Adapter, Srb);
+ AdapterCompleteSrb(Adapter, Srb);
return FALSE;
}
@@ -1747,6 +1772,7 @@ AdapterHwStartIo(
return TRUE;
fail1:
+ Srb->SrbStatus = SRB_STATUS_INVALID_TARGET_ID;
AdapterCompleteSrb(Adapter, Srb);
return TRUE;
}
diff --git a/src/xenvbd/adapter.h b/src/xenvbd/adapter.h
index 5dd2e62..b8706fd 100644
--- a/src/xenvbd/adapter.h
+++ b/src/xenvbd/adapter.h
@@ -70,6 +70,17 @@ AdapterCompleteSrb(
IN PSCSI_REQUEST_BLOCK Srb
);
+extern VOID
+AdapterTargetListChanged(
+ IN PXENVBD_ADAPTER Adapter
+ );
+
+extern VOID
+AdapterSetDeviceQueueDepth(
+ IN PXENVBD_ADAPTER Adapter,
+ IN ULONG TargetId
+ );
+
extern NTSTATUS
AdapterDispatchPnp(
IN PXENVBD_ADAPTER Adapter,
diff --git a/src/xenvbd/target.c b/src/xenvbd/target.c
index c5dffa9..5bab440 100644
--- a/src/xenvbd/target.c
+++ b/src/xenvbd/target.c
@@ -49,8 +49,6 @@
#include <suspend_interface.h>
#include <stdlib.h>
-#define XENVBD_MAX_QUEUE_DEPTH (254)
-
typedef struct _XENVBD_SG_LIST {
// SGList from SRB
PSTOR_SCATTER_GATHER_LIST SGList;
@@ -2021,13 +2019,8 @@ __TargetExecuteScsi(
break;
case SCSIOP_INQUIRY:
- if (!StorPortSetDeviceQueueDepth(TargetGetAdapter(Target),
- 0,
- (UCHAR)TargetGetTargetId(Target),
- 0,
- XENVBD_MAX_QUEUE_DEPTH))
- Verbose("Target[%d] : Failed to set queue depth\n",
- TargetGetTargetId(Target));
+ AdapterSetDeviceQueueDepth(TargetGetAdapter(Target),
+ TargetGetTargetId(Target));
PdoInquiry(TargetGetTargetId(Target),
FrontendGetInquiry(Target->Frontend), Srb);
break;
case SCSIOP_MODE_SENSE:
@@ -2305,13 +2298,13 @@ __TargetRemoveDevice(
case SurpriseRemovePending:
TargetSetMissing(Target, "Surprise Remove");
TargetSetDevicePnpState(Target, Deleted);
- StorPortNotification(BusChangeDetected, TargetGetAdapter(Target), 0);
+ AdapterTargetListChanged(TargetGetAdapter(Target));
break;
default:
TargetSetMissing(Target, "Removed");
TargetSetDevicePnpState(Target, Deleted);
- StorPortNotification(BusChangeDetected, TargetGetAdapter(Target), 0);
+ AdapterTargetListChanged(TargetGetAdapter(Target));
break;
}
}
@@ -2323,7 +2316,7 @@ __TargetEject(
{
TargetSetMissing(Target, "Ejected");
TargetSetDevicePnpState(Target, Deleted);
- StorPortNotification(BusChangeDetected, TargetGetAdapter(Target), 0);
+ AdapterTargetListChanged(TargetGetAdapter(Target));
}
__checkReturn
@@ -2417,7 +2410,7 @@ TargetIssueDeviceEject(
IoRequestDeviceEject(Target->DeviceObject);
} else {
Verbose("Target[%d] : Triggering BusChangeDetected to detect
device\n", TargetGetTargetId(Target));
- StorPortNotification(BusChangeDetected, TargetGetAdapter(Target), 0);
+ AdapterTargetListChanged(TargetGetAdapter(Target));
}
}
--
2.8.3
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |