|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH 22/26] Rename Prepared to Queued
From: Owen Smith <owen.smith@xxxxxxxxxx>
Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
src/xenvbd/blockring.c | 39 +++++++++++++++++++++------------------
src/xenvbd/target.c | 2 --
2 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/src/xenvbd/blockring.c b/src/xenvbd/blockring.c
index 72e618a..a41a912 100644
--- a/src/xenvbd/blockring.c
+++ b/src/xenvbd/blockring.c
@@ -63,7 +63,7 @@ struct _XENVBD_BLOCKRING {
PXENBUS_DEBUG_CALLBACK DebugCallback;
- LIST_ENTRY Prepared;
+ LIST_ENTRY Queued;
LIST_ENTRY Submitted;
KSPIN_LOCK Lock;
@@ -76,6 +76,7 @@ struct _XENVBD_BLOCKRING {
PXENBUS_EVTCHN_CHANNEL Channel;
KDPC Dpc;
+ ULONG NrQueued;
ULONG NrSubmitted;
ULONG NrCompleted;
ULONG NrInterrupts;
@@ -365,25 +366,25 @@ BlockRingPoll(
BlockRing->Shared->rsp_event = rsp_cons + 1;
}
- // submit all prepared requests, prepare the next srb
+ // submit all queued requests
for (;;) {
PLIST_ENTRY ListEntry;
PXENVBD_REQUEST Request;
- ListEntry = RemoveHeadList(&BlockRing->Prepared);
- if (ListEntry == &BlockRing->Prepared)
+ ListEntry = RemoveHeadList(&BlockRing->Queued);
+ if (ListEntry == &BlockRing->Queued)
break;
Request = CONTAINING_RECORD(ListEntry, XENVBD_REQUEST, ListEntry);
if (BlockRingPostRequest(BlockRing, Request))
continue;
- InsertHeadList(&BlockRing->Prepared, ListEntry);
+ InsertHeadList(&BlockRing->Queued, ListEntry);
break;
}
done:
- if (IsListEmpty(&BlockRing->Prepared) &&
+ if (IsListEmpty(&BlockRing->Queued) &&
IsListEmpty(&BlockRing->Submitted))
TargetCompleteShutdown(BlockRing->Target);
@@ -487,7 +488,8 @@ BlockRingDebugCallback(
XENBUS_DEBUG(Printf,
&BlockRing->DebugInterface,
- "Submitted: %u, Completed: %u\n",
+ "Queued: %u, Submitted: %u, Completed: %u\n",
+ BlockRing->NrQueued,
BlockRing->NrSubmitted,
BlockRing->NrCompleted);
@@ -524,7 +526,7 @@ BlockRingCreate(
(*BlockRing)->Target = Target;
KeInitializeSpinLock(&(*BlockRing)->Lock);
KeInitializeDpc(&(*BlockRing)->Dpc, BlockRingDpc, *BlockRing);
- InitializeListHead(&(*BlockRing)->Prepared);
+ InitializeListHead(&(*BlockRing)->Queued);
InitializeListHead(&(*BlockRing)->Submitted);
return STATUS_SUCCESS;
@@ -541,7 +543,7 @@ BlockRingDestroy(
BlockRing->Target = NULL;
RtlZeroMemory(&BlockRing->Lock, sizeof(KSPIN_LOCK));
RtlZeroMemory(&BlockRing->Dpc, sizeof(KDPC));
- RtlZeroMemory(&BlockRing->Prepared, sizeof(LIST_ENTRY));
+ RtlZeroMemory(&BlockRing->Queued, sizeof(LIST_ENTRY));
RtlZeroMemory(&BlockRing->Submitted, sizeof(LIST_ENTRY));
ASSERT(IsZeroMemory(BlockRing, sizeof(XENVBD_BLOCKRING)));
@@ -845,6 +847,7 @@ BlockRingDisconnect(
XENBUS_STORE(Release, &BlockRing->StoreInterface);
RtlZeroMemory(&BlockRing->StoreInterface, sizeof(XENBUS_STORE_INTERFACE));
+ BlockRing->NrQueued = 0;
BlockRing->NrSubmitted = 0;
BlockRing->NrCompleted = 0;
BlockRing->NrInterrupts = 0;
@@ -860,16 +863,16 @@ BlockRingSubmit(
)
{
KIRQL Irql;
- PLIST_ENTRY ListItem;
+ PLIST_ENTRY ListEntry;
KeAcquireSpinLock(&BlockRing->Lock, &Irql);
- ListItem = RequestList->Flink;
-
- if (!IsListEmpty(RequestList)) {
- RemoveEntryList(RequestList);
- InitializeListHead(RequestList);
- AppendTailList(&BlockRing->Prepared, ListItem);
+ for (;;) {
+ ListEntry = RemoveHeadList(RequestList);
+ if (ListEntry == RequestList)
+ break;
+ InsertTailList(&BlockRing->Queued, ListEntry);
+ ++BlockRing->NrQueued;
}
KeReleaseSpinLock(&BlockRing->Lock, Irql);
@@ -899,8 +902,8 @@ BlockRingSuspendCallback(
PLIST_ENTRY ListEntry;
PXENVBD_REQUEST Request;
- ListEntry = RemoveHeadList(&BlockRing->Prepared);
- if (ListEntry == &BlockRing->Prepared)
+ ListEntry = RemoveHeadList(&BlockRing->Queued);
+ if (ListEntry == &BlockRing->Queued)
break;
Request = CONTAINING_RECORD(ListEntry, XENVBD_REQUEST, ListEntry);
diff --git a/src/xenvbd/target.c b/src/xenvbd/target.c
index a9d1183..d6c3872 100644
--- a/src/xenvbd/target.c
+++ b/src/xenvbd/target.c
@@ -662,8 +662,6 @@ TargetPrepareRW(
goto fail6;
InsertTailList(&Request->Indirects, &Indirect->ListEntry);
-
- // TODO: Fill Indirect->Page with Segment info?
}
}
}
--
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 |