|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [RFC PATCH 2/6] Rename XENVBD_RING -> XENVBD_PROTOCOL
Signed-off-by: owensm <owen.smith@xxxxxxxxxx>
---
src/xenvbd/frontend.c | 30 +-
src/xenvbd/frontend.h | 4 +-
src/xenvbd/{ring.c => protocol.c} | 988 +++++++++++++++++++-------------------
src/xenvbd/{ring.h => protocol.h} | 54 +--
src/xenvbd/target.c | 24 +-
vs2015/xenvbd/xenvbd.vcxproj | 2 +-
vs2017/xenvbd/xenvbd.vcxproj | 2 +-
7 files changed, 556 insertions(+), 548 deletions(-)
rename src/xenvbd/{ring.c => protocol.c} (64%)
rename src/xenvbd/{ring.h => protocol.h} (67%)
diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c
index b7e61c2..f8e903e 100644
--- a/src/xenvbd/frontend.c
+++ b/src/xenvbd/frontend.c
@@ -43,7 +43,7 @@
#include "adapter.h"
#include "srbext.h"
#include "names.h"
-#include "ring.h"
+#include "protocol.h"
#include "granter.h"
#include "thread.h"
#include "base64.h"
@@ -84,7 +84,7 @@ struct _XENVBD_FRONTEND {
PXENBUS_SUSPEND_CALLBACK SuspendCallback;
// Ring
- PXENVBD_RING Ring;
+ PXENVBD_PROTOCOL Protocol;
PXENVBD_GRANTER Granter;
// Backend State Watch
@@ -1095,7 +1095,7 @@ FrontendConnect(
if (!NT_SUCCESS(Status))
goto fail1;
- Status = RingConnect(Frontend->Ring);
+ Status = ProtocolConnect(Frontend->Protocol);
if (!NT_SUCCESS(Status))
goto fail2;
@@ -1109,7 +1109,7 @@ FrontendConnect(
if (!NT_SUCCESS(Status))
break;
- Status = RingStoreWrite(Frontend->Ring, Transaction);
+ Status = ProtocolStoreWrite(Frontend->Protocol, Transaction);
if (!NT_SUCCESS(Status))
goto abort;
@@ -1211,7 +1211,7 @@ fail4:
Error("Fail4\n");
fail3:
Error("Fail3\n");
- RingDisconnect(Frontend->Ring);
+ ProtocolDisconnect(Frontend->Protocol);
fail2:
Error("Fail2\n");
GranterDisconnect(Frontend->Granter);
@@ -1225,7 +1225,7 @@ FrontendDisconnect(
__in PXENVBD_FRONTEND Frontend
)
{
- RingDisconnect(Frontend->Ring);
+ ProtocolDisconnect(Frontend->Protocol);
GranterDisconnect(Frontend->Granter);
Base64Free(Frontend->Page80.Data);
@@ -1246,7 +1246,7 @@ FrontendEnable(
KeMemoryBarrier();
GranterEnable(Frontend->Granter);
- RingEnable(Frontend->Ring);
+ ProtocolEnable(Frontend->Protocol);
}
__drv_requiresIRQL(DISPATCH_LEVEL)
static FORCEINLINE VOID
@@ -1256,7 +1256,7 @@ FrontendDisable(
{
Frontend->Caps.Connected = FALSE;
- RingDisable(Frontend->Ring);
+ ProtocolDisable(Frontend->Protocol);
GranterDisable(Frontend->Granter);
}
@@ -1451,7 +1451,7 @@ FrontendSuspendCallback(
ASSERT(FALSE);
}
- RingTrigger(Frontend->Ring);
+ ProtocolTrigger(Frontend->Protocol);
Verbose("Target[%d] : <=== restored %s\n", Frontend->TargetId,
__XenvbdStateName(Frontend->State));
}
@@ -1767,7 +1767,7 @@ FrontendCreate(
if (!NT_SUCCESS(status))
goto fail3;
- status = RingCreate(Frontend, &Frontend->Ring);
+ status = ProtocolCreate(Frontend, &Frontend->Protocol);
if (!NT_SUCCESS(status))
goto fail4;
@@ -1792,8 +1792,8 @@ fail6:
Frontend->Granter = NULL;
fail5:
Error("fail5\n");
- RingDestroy(Frontend->Ring);
- Frontend->Ring = NULL;
+ ProtocolDestroy(Frontend->Protocol);
+ Frontend->Protocol = NULL;
fail4:
Error("fail4\n");
fail3:
@@ -1831,8 +1831,8 @@ FrontendDestroy(
GranterDestroy(Frontend->Granter);
Frontend->Granter = NULL;
- RingDestroy(Frontend->Ring);
- Frontend->Ring = NULL;
+ ProtocolDestroy(Frontend->Protocol);
+ Frontend->Protocol = NULL;
ASSERT3P(Frontend->BackendPath, ==, NULL);
ASSERT3P(Frontend->BackendWatch, ==, NULL);
@@ -1858,7 +1858,7 @@ FrontendGet ## _name ## ( \
}
FRONTEND_GET_PROPERTY(Target, PXENVBD_TARGET)
-FRONTEND_GET_PROPERTY(Ring, PXENVBD_RING)
+FRONTEND_GET_PROPERTY(Protocol, PXENVBD_PROTOCOL)
FRONTEND_GET_PROPERTY(Granter, PXENVBD_GRANTER)
FRONTEND_GET_PROPERTY(TargetId, ULONG)
FRONTEND_GET_PROPERTY(DeviceId, ULONG)
diff --git a/src/xenvbd/frontend.h b/src/xenvbd/frontend.h
index 1488476..dfd72b4 100644
--- a/src/xenvbd/frontend.h
+++ b/src/xenvbd/frontend.h
@@ -150,8 +150,8 @@ FrontendGet ## _name ## ( \
);
FRONTEND_GET_PROPERTY(Target, PXENVBD_TARGET)
-#include "ring.h"
-FRONTEND_GET_PROPERTY(Ring, PXENVBD_RING)
+#include "protocol.h"
+FRONTEND_GET_PROPERTY(Protocol, PXENVBD_PROTOCOL)
#include "granter.h"
FRONTEND_GET_PROPERTY(Granter, PXENVBD_GRANTER)
FRONTEND_GET_PROPERTY(TargetId, ULONG)
diff --git a/src/xenvbd/ring.c b/src/xenvbd/protocol.c
similarity index 64%
rename from src/xenvbd/ring.c
rename to src/xenvbd/protocol.c
index 33b346d..39767eb 100644
--- a/src/xenvbd/ring.c
+++ b/src/xenvbd/protocol.c
@@ -40,7 +40,7 @@
#include <evtchn_interface.h>
#include <debug_interface.h>
-#include "ring.h"
+#include "protocol.h"
#include "frontend.h"
#include "target.h"
#include "adapter.h"
@@ -53,10 +53,10 @@
#include "debug.h"
#include "assert.h"
-#define XENVBD_MAX_RING_PAGE_ORDER (4)
-#define XENVBD_MAX_RING_PAGES (1 << XENVBD_MAX_RING_PAGE_ORDER)
+#define XENVBD_MAX_PROTOCOL_PAGE_ORDER (4)
+#define XENVBD_MAX_PROTOCOL_PAGES (1 << XENVBD_MAX_PROTOCOL_PAGE_ORDER)
-struct _XENVBD_RING {
+struct _XENVBD_PROTOCOL {
PXENVBD_FRONTEND Frontend;
BOOLEAN Connected;
BOOLEAN Enabled;
@@ -73,7 +73,7 @@ struct _XENVBD_RING {
blkif_sring_t* Shared;
blkif_front_ring_t Front;
ULONG Order;
- PVOID Grants[XENVBD_MAX_RING_PAGES];
+ PVOID Grants[XENVBD_MAX_PROTOCOL_PAGES];
PXENBUS_EVTCHN_CHANNEL Channel;
KDPC Dpc;
@@ -100,27 +100,27 @@ struct _XENVBD_RING {
};
#define MAX_NAME_LEN 64
-#define RING_POOL_TAG 'gnRX'
+#define PROTOCOL_POOL_TAG 'gnRX'
#define XEN_IO_PROTO_ABI "x86_64-abi"
static FORCEINLINE PVOID
-__RingAllocate(
+__ProtocolAllocate(
IN ULONG Length
)
{
return __AllocatePoolWithTag(NonPagedPool,
Length,
- RING_POOL_TAG);
+ PROTOCOL_POOL_TAG);
}
static FORCEINLINE VOID
-__RingFree(
+__ProtocolFree(
IN PVOID Buffer
)
{
if (Buffer)
__FreePoolWithTag(Buffer,
- RING_POOL_TAG);
+ PROTOCOL_POOL_TAG);
}
static FORCEINLINE VOID
@@ -138,13 +138,13 @@ xen_wmb()
}
static FORCEINLINE VOID
-__RingInsert(
- IN PXENVBD_RING Ring,
+__ProtocolInsert(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_REQUEST Request,
IN blkif_request_t* req
)
{
- PXENVBD_GRANTER Granter = FrontendGetGranter(Ring->Frontend);
+ PXENVBD_GRANTER Granter = FrontendGetGranter(Protocol->Frontend);
switch (Request->Operation) {
case BLKIF_OP_READ:
@@ -163,7 +163,7 @@ __RingInsert(
req_indirect->nr_segments = Request->NrSegments;
req_indirect->id = (ULONG64)(ULONG_PTR)Request;
req_indirect->sector_number = Request->FirstSector;
- req_indirect->handle =
(USHORT)FrontendGetDeviceId(Ring->Frontend);
+ req_indirect->handle =
(USHORT)FrontendGetDeviceId(Protocol->Frontend);
for (PageIdx = 0,
PageEntry = Request->Indirects.Flink,
@@ -194,7 +194,7 @@ __RingInsert(
req->operation = Request->Operation;
req->nr_segments = (UCHAR)Request->NrSegments;
- req->handle =
(USHORT)FrontendGetDeviceId(Ring->Frontend);
+ req->handle =
(USHORT)FrontendGetDeviceId(Protocol->Frontend);
req->id = (ULONG64)(ULONG_PTR)Request;
req->sector_number = Request->FirstSector;
@@ -214,7 +214,7 @@ __RingInsert(
case BLKIF_OP_FLUSH_DISKCACHE:
req->operation = Request->Operation;
req->nr_segments = 0;
- req->handle =
(USHORT)FrontendGetDeviceId(Ring->Frontend);
+ req->handle =
(USHORT)FrontendGetDeviceId(Protocol->Frontend);
req->id = (ULONG64)(ULONG_PTR)Request;
req->sector_number = Request->FirstSector;
break;
@@ -224,7 +224,7 @@ __RingInsert(
req_discard = (blkif_request_discard_t*)req;
req_discard->operation = BLKIF_OP_DISCARD;
req_discard->flag = Request->Flags;
- req_discard->handle =
(USHORT)FrontendGetDeviceId(Ring->Frontend);
+ req_discard->handle =
(USHORT)FrontendGetDeviceId(Protocol->Frontend);
req_discard->id = (ULONG64)(ULONG_PTR)Request;
req_discard->sector_number = Request->FirstSector;
req_discard->nr_sectors = Request->NrSectors;
@@ -234,21 +234,21 @@ __RingInsert(
ASSERT(FALSE);
break;
}
- ++Ring->Submitted;
+ ++Protocol->Submitted;
}
static PXENVBD_INDIRECT
-RingGetIndirect(
- IN PXENVBD_RING Ring
+ProtocolGetIndirect(
+ IN PXENVBD_PROTOCOL Protocol
)
{
PXENVBD_INDIRECT Indirect;
NTSTATUS status;
- PXENVBD_GRANTER Granter = FrontendGetGranter(Ring->Frontend);
+ PXENVBD_GRANTER Granter = FrontendGetGranter(Protocol->Frontend);
Indirect = XENBUS_CACHE(Get,
- &Ring->CacheInterface,
- Ring->IndirectCache,
+ &Protocol->CacheInterface,
+ Protocol->IndirectCache,
FALSE);
if (Indirect == NULL)
goto fail1;
@@ -266,8 +266,8 @@ RingGetIndirect(
fail2:
XENBUS_CACHE(Put,
- &Ring->CacheInterface,
- Ring->IndirectCache,
+ &Protocol->CacheInterface,
+ Protocol->IndirectCache,
Indirect,
FALSE);
fail1:
@@ -275,12 +275,12 @@ fail1:
}
static VOID
-RingPutIndirect(
- IN PXENVBD_RING Ring,
+ProtocolPutIndirect(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_INDIRECT Indirect
)
{
- PXENVBD_GRANTER Granter = FrontendGetGranter(Ring->Frontend);
+ PXENVBD_GRANTER Granter = FrontendGetGranter(Protocol->Frontend);
if (Indirect->Grant)
GranterPut(Granter, Indirect->Grant);
@@ -289,30 +289,30 @@ RingPutIndirect(
RtlZeroMemory(&Indirect->ListEntry, sizeof(LIST_ENTRY));
XENBUS_CACHE(Put,
- &Ring->CacheInterface,
- Ring->IndirectCache,
+ &Protocol->CacheInterface,
+ Protocol->IndirectCache,
Indirect,
FALSE);
}
static PXENVBD_SEGMENT
-RingGetSegment(
- IN PXENVBD_RING Ring
+ProtocolGetSegment(
+ IN PXENVBD_PROTOCOL Protocol
)
{
return XENBUS_CACHE(Get,
- &Ring->CacheInterface,
- Ring->SegmentCache,
+ &Protocol->CacheInterface,
+ Protocol->SegmentCache,
FALSE);
}
static VOID
-RingPutSegment(
- IN PXENVBD_RING Ring,
+ProtocolPutSegment(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_SEGMENT Segment
)
{
- PXENVBD_GRANTER Granter = FrontendGetGranter(Ring->Frontend);
+ PXENVBD_GRANTER Granter = FrontendGetGranter(Protocol->Frontend);
PXENVBD_BOUNCE Bounce = Segment->Bounce;
if (Segment->Grant)
@@ -329,7 +329,7 @@ RingPutSegment(
Bounce->SourcePfn[0] = 0;
Bounce->SourcePfn[1] = 0;
- AdapterPutBounce(TargetGetAdapter(FrontendGetTarget(Ring->Frontend)),
+
AdapterPutBounce(TargetGetAdapter(FrontendGetTarget(Protocol->Frontend)),
Bounce);
}
Segment->Bounce = NULL;
@@ -339,26 +339,26 @@ RingPutSegment(
RtlZeroMemory(&Segment->ListEntry, sizeof(LIST_ENTRY));
XENBUS_CACHE(Put,
- &Ring->CacheInterface,
- Ring->SegmentCache,
+ &Protocol->CacheInterface,
+ Protocol->SegmentCache,
Segment,
FALSE);
}
static PXENVBD_REQUEST
-RingGetRequest(
- IN PXENVBD_RING Ring
+ProtocolGetRequest(
+ IN PXENVBD_PROTOCOL Protocol
)
{
return XENBUS_CACHE(Get,
- &Ring->CacheInterface,
- Ring->RequestCache,
+ &Protocol->CacheInterface,
+ Protocol->RequestCache,
FALSE);
}
static VOID
-RingPutRequest(
- IN PXENVBD_RING Ring,
+ProtocolPutRequest(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_REQUEST Request
)
{
@@ -371,7 +371,7 @@ RingPutRequest(
if (ListEntry == &Request->Segments)
break;
Segment = CONTAINING_RECORD(ListEntry, XENVBD_SEGMENT, ListEntry);
- RingPutSegment(Ring, Segment);
+ ProtocolPutSegment(Protocol, Segment);
}
for (;;) {
@@ -381,7 +381,7 @@ RingPutRequest(
if (ListEntry == &Request->Indirects)
break;
Indirect = CONTAINING_RECORD(ListEntry, XENVBD_INDIRECT, ListEntry);
- RingPutIndirect(Ring, Indirect);
+ ProtocolPutIndirect(Protocol, Indirect);
}
Request->SrbExt = NULL;
@@ -393,22 +393,22 @@ RingPutRequest(
RtlZeroMemory(&Request->ListEntry, sizeof(LIST_ENTRY));
XENBUS_CACHE(Put,
- &Ring->CacheInterface,
- Ring->RequestCache,
+ &Protocol->CacheInterface,
+ Protocol->RequestCache,
Request,
FALSE);
}
static FORCEINLINE PXENVBD_REQUEST
-RingFindRequest(
- IN PXENVBD_RING Ring,
+ProtocolFindRequest(
+ IN PXENVBD_PROTOCOL Protocol,
IN ULONG64 Id
)
{
KIRQL Irql;
PLIST_ENTRY ListEntry;
PXENVBD_REQUEST Request;
- PXENVBD_QUEUE Queue = &Ring->SubmittedReqs;
+ PXENVBD_QUEUE Queue = &Protocol->SubmittedReqs;
KeAcquireSpinLock(&Queue->Lock, &Irql);
@@ -426,39 +426,39 @@ RingFindRequest(
KeReleaseSpinLock(&Queue->Lock, Irql);
Warning("Target[%d] : Tag %llx not found in submitted list (%u items)\n",
- FrontendGetTargetId(Ring->Frontend),
+ FrontendGetTargetId(Protocol->Frontend),
Id,
QueueCount(Queue));
return NULL;
}
static FORCEINLINE VOID
-__RingIncBlkifOpCount(
- IN PXENVBD_RING Ring,
+__ProtocolIncBlkifOpCount(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_REQUEST Request
)
{
switch (Request->Operation) {
case BLKIF_OP_READ:
if (Request->NrSegments > BLKIF_MAX_SEGMENTS_PER_REQUEST)
- ++Ring->BlkOpIndirectRead;
+ ++Protocol->BlkOpIndirectRead;
else
- ++Ring->BlkOpRead;
+ ++Protocol->BlkOpRead;
break;
case BLKIF_OP_WRITE:
if (Request->NrSegments > BLKIF_MAX_SEGMENTS_PER_REQUEST)
- ++Ring->BlkOpIndirectWrite;
+ ++Protocol->BlkOpIndirectWrite;
else
- ++Ring->BlkOpWrite;
+ ++Protocol->BlkOpWrite;
break;
case BLKIF_OP_WRITE_BARRIER:
- ++Ring->BlkOpBarrier;
+ ++Protocol->BlkOpBarrier;
break;
case BLKIF_OP_DISCARD:
- ++Ring->BlkOpDiscard;
+ ++Protocol->BlkOpDiscard;
break;
case BLKIF_OP_FLUSH_DISKCACHE:
- ++Ring->BlkOpFlush;
+ ++Protocol->BlkOpFlush;
break;
default:
ASSERT(FALSE);
@@ -467,7 +467,7 @@ __RingIncBlkifOpCount(
}
static FORCEINLINE ULONG
-__RingSectorsPerPage(
+__ProtocolSectorsPerPage(
IN ULONG SectorSize
)
{
@@ -476,19 +476,19 @@ __RingSectorsPerPage(
}
static FORCEINLINE VOID
-__RingOperation(
+__ProtocolOperation(
IN UCHAR CdbOp,
- OUT PUCHAR RingOp,
+ OUT PUCHAR ProtocolOp,
OUT PBOOLEAN ReadOnly
)
{
switch (CdbOp) {
case SCSIOP_READ:
- *RingOp = BLKIF_OP_READ;
+ *ProtocolOp = BLKIF_OP_READ;
*ReadOnly = FALSE;
break;
case SCSIOP_WRITE:
- *RingOp = BLKIF_OP_WRITE;
+ *ProtocolOp = BLKIF_OP_WRITE;
*ReadOnly = TRUE;
break;
default:
@@ -497,11 +497,11 @@ __RingOperation(
}
static FORCEINLINE MM_PAGE_PRIORITY
-__RingPriority(
- IN PXENVBD_RING Ring
+__ProtocolPriority(
+ IN PXENVBD_PROTOCOL Protocol
)
{
- PXENVBD_CAPS Caps = FrontendGetCaps(Ring->Frontend);
+ PXENVBD_CAPS Caps = FrontendGetCaps(Protocol->Frontend);
if (!(Caps->Paging ||
Caps->Hibernation ||
Caps->DumpFile))
@@ -511,7 +511,7 @@ __RingPriority(
}
static FORCEINLINE VOID
-RingRequestCopyOutput(
+ProtocolRequestCopyOutput(
IN PXENVBD_REQUEST Request
)
{
@@ -535,8 +535,8 @@ RingRequestCopyOutput(
}
static BOOLEAN
-RingPrepareSegment(
- IN PXENVBD_RING Ring,
+ProtocolPrepareSegment(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_SEGMENT Segment,
IN PXENVBD_SRBEXT SrbExt,
IN BOOLEAN ReadOnly,
@@ -548,10 +548,10 @@ RingPrepareSegment(
ULONG Offset;
ULONG Length;
NTSTATUS Status;
- PXENVBD_GRANTER Granter = FrontendGetGranter(Ring->Frontend);
- const ULONG SectorSize =
FrontendGetDiskInfo(Ring->Frontend)->SectorSize;
- const ULONG SectorsPerPage = __RingSectorsPerPage(SectorSize);
- PXENVBD_TARGET Target = FrontendGetTarget(Ring->Frontend);
+ PXENVBD_GRANTER Granter = FrontendGetGranter(Protocol->Frontend);
+ const ULONG SectorSize =
FrontendGetDiskInfo(Protocol->Frontend)->SectorSize;
+ const ULONG SectorsPerPage = __ProtocolSectorsPerPage(SectorSize);
+ PXENVBD_TARGET Target = FrontendGetTarget(Protocol->Frontend);
PXENVBD_ADAPTER Adapter = TargetGetAdapter(Target);
Pfn = AdapterGetNextSGEntry(Adapter,
@@ -561,7 +561,7 @@ RingPrepareSegment(
&Length);
if ((Offset & (SectorSize - 1)) == 0 &&
(Length & (SectorSize - 1)) == 0) {
- ++Ring->SegsGranted;
+ ++Protocol->SegsGranted;
// get first sector, last sector and count
Segment->FirstSector = (UCHAR)((Offset + SectorSize - 1) /
SectorSize);
*SectorsNow = __min(SectorsLeft, SectorsPerPage -
Segment->FirstSector);
@@ -572,7 +572,7 @@ RingPrepareSegment(
PXENVBD_BOUNCE Bounce;
PMDL Mdl;
- ++Ring->SegsBounced;
+ ++Protocol->SegsBounced;
// get first sector, last sector and count
Segment->FirstSector = 0;
*SectorsNow = __min(SectorsLeft, SectorsPerPage);
@@ -617,7 +617,7 @@ RingPrepareSegment(
MmCached,
NULL,
FALSE,
- __RingPriority(Ring));
+
__ProtocolPriority(Protocol));
if (Bounce->SourcePtr == NULL)
goto fail2;
@@ -648,8 +648,8 @@ fail1:
}
static BOOLEAN
-RingPrepareBlkifReadWrite(
- IN PXENVBD_RING Ring,
+ProtocolPrepareBlkifReadWrite(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_REQUEST Request,
IN PXENVBD_SRBEXT SrbExt,
IN ULONG MaxSegments,
@@ -662,7 +662,7 @@ RingPrepareBlkifReadWrite(
UCHAR Operation;
BOOLEAN ReadOnly;
ULONG Index;
- __RingOperation(Cdb_OperationEx(Srb), &Operation, &ReadOnly);
+ __ProtocolOperation(Cdb_OperationEx(Srb), &Operation, &ReadOnly);
Request->Operation = Operation;
Request->NrSegments = 0;
@@ -675,14 +675,14 @@ RingPrepareBlkifReadWrite(
PXENVBD_SEGMENT Segment;
ULONG SectorsNow;
- Segment = RingGetSegment(Ring);
+ Segment = ProtocolGetSegment(Protocol);
if (Segment == NULL)
goto fail1;
InsertTailList(&Request->Segments, &Segment->ListEntry);
++Request->NrSegments;
- if (!RingPrepareSegment(Ring,
+ if (!ProtocolPrepareSegment(Protocol,
Segment,
SrbExt,
ReadOnly,
@@ -704,8 +704,8 @@ fail1:
}
static BOOLEAN
-RingPrepareBlkifIndirect(
- IN PXENVBD_RING Ring,
+ProtocolPrepareBlkifIndirect(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_REQUEST Request
)
{
@@ -718,7 +718,7 @@ RingPrepareBlkifIndirect(
++Index) {
PXENVBD_INDIRECT Indirect;
- Indirect = RingGetIndirect(Ring);
+ Indirect = ProtocolGetIndirect(Protocol);
if (Indirect == NULL)
goto fail1;
InsertTailList(&Request->Indirects, &Indirect->ListEntry);
@@ -733,13 +733,13 @@ fail1:
}
static FORCEINLINE ULONG
-RingUseIndirect(
- IN PXENVBD_RING Ring,
+ProtocolUseIndirect(
+ IN PXENVBD_PROTOCOL Protocol,
IN ULONG SectorsLeft
)
{
- const ULONG SectorsPerPage =
__RingSectorsPerPage(FrontendGetDiskInfo(Ring->Frontend)->SectorSize);
- const ULONG MaxIndirectSegs =
FrontendGetFeatures(Ring->Frontend)->Indirect;
+ const ULONG SectorsPerPage =
__ProtocolSectorsPerPage(FrontendGetDiskInfo(Protocol->Frontend)->SectorSize);
+ const ULONG MaxIndirectSegs =
FrontendGetFeatures(Protocol->Frontend)->Indirect;
if (MaxIndirectSegs <= BLKIF_MAX_SEGMENTS_PER_REQUEST)
return BLKIF_MAX_SEGMENTS_PER_REQUEST; // not supported
@@ -751,9 +751,9 @@ RingUseIndirect(
}
static FORCEINLINE VOID
-RingQueueRequestList(
- IN PXENVBD_RING Ring,
- IN PLIST_ENTRY List
+ProtocolQueueRequestList(
+ IN PXENVBD_PROTOCOL Protocol,
+ IN PLIST_ENTRY List
)
{
for (;;) {
@@ -765,14 +765,14 @@ RingQueueRequestList(
break;
Request = CONTAINING_RECORD(ListEntry, XENVBD_REQUEST, ListEntry);
- __RingIncBlkifOpCount(Ring, Request);
- QueueAppend(&Ring->PreparedReqs, &Request->ListEntry);
+ __ProtocolIncBlkifOpCount(Protocol, Request);
+ QueueAppend(&Protocol->PreparedReqs, &Request->ListEntry);
}
}
static FORCEINLINE VOID
-RingCancelRequestList(
- IN PXENVBD_RING Ring,
+ProtocolCancelRequestList(
+ IN PXENVBD_PROTOCOL Protocol,
IN PLIST_ENTRY List
)
{
@@ -785,13 +785,13 @@ RingCancelRequestList(
break;
Request = CONTAINING_RECORD(ListEntry, XENVBD_REQUEST, ListEntry);
- RingPutRequest(Ring, Request);
+ ProtocolPutRequest(Protocol, Request);
}
}
static BOOLEAN
-RingPrepareReadWrite(
- IN PXENVBD_RING Ring,
+ProtocolPrepareReadWrite(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_SRBEXT SrbExt
)
{
@@ -810,16 +810,16 @@ RingPrepareReadWrite(
ULONG SectorsDone = 0;
PXENVBD_REQUEST Request;
- Request = RingGetRequest(Ring);
+ Request = ProtocolGetRequest(Protocol);
if (Request == NULL)
goto fail1;
InsertTailList(&List, &Request->ListEntry);
InterlockedIncrement(&SrbExt->RequestCount);
Request->SrbExt = SrbExt;
- MaxSegments = RingUseIndirect(Ring, SectorsLeft);
+ MaxSegments = ProtocolUseIndirect(Protocol, SectorsLeft);
- if (!RingPrepareBlkifReadWrite(Ring,
+ if (!ProtocolPrepareBlkifReadWrite(Protocol,
Request,
SrbExt,
MaxSegments,
@@ -829,7 +829,7 @@ RingPrepareReadWrite(
goto fail2;
if (MaxSegments > BLKIF_MAX_SEGMENTS_PER_REQUEST) {
- if (!RingPrepareBlkifIndirect(Ring, Request))
+ if (!ProtocolPrepareBlkifIndirect(Protocol, Request))
goto fail3;
}
@@ -837,21 +837,21 @@ RingPrepareReadWrite(
SectorStart += SectorsDone;
}
- RingQueueRequestList(Ring, &List);
+ ProtocolQueueRequestList(Protocol, &List);
return TRUE;
fail3:
fail2:
fail1:
- RingCancelRequestList(Ring, &List);
+ ProtocolCancelRequestList(Protocol, &List);
SrbExt->RequestCount = 0;
Srb->SrbStatus = SRB_STATUS_ERROR;
return FALSE;
}
static BOOLEAN
-RingPrepareSyncCache(
- IN PXENVBD_RING Ring,
+ProtocolPrepareSyncCache(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_SRBEXT SrbExt
)
{
@@ -862,7 +862,7 @@ RingPrepareSyncCache(
Srb->SrbStatus = SRB_STATUS_PENDING;
- if (FrontendGetDiskInfo(Ring->Frontend)->FlushCache)
+ if (FrontendGetDiskInfo(Protocol->Frontend)->FlushCache)
Operation = BLKIF_OP_FLUSH_DISKCACHE;
else
Operation = BLKIF_OP_WRITE_BARRIER;
@@ -870,7 +870,7 @@ RingPrepareSyncCache(
InitializeListHead(&List);
SrbExt->RequestCount = 0;
- Request = RingGetRequest(Ring);
+ Request = ProtocolGetRequest(Protocol);
if (Request == NULL)
goto fail1;
InsertTailList(&List, &Request->ListEntry);
@@ -880,19 +880,19 @@ RingPrepareSyncCache(
Request->Operation = Operation;
Request->FirstSector = Cdb_LogicalBlock(Srb);
- RingQueueRequestList(Ring, &List);
+ ProtocolQueueRequestList(Protocol, &List);
return TRUE;
fail1:
- RingCancelRequestList(Ring, &List);
+ ProtocolCancelRequestList(Protocol, &List);
SrbExt->RequestCount = 0;
Srb->SrbStatus = SRB_STATUS_ERROR;
return FALSE;
}
static BOOLEAN
-RingPrepareUnmap(
- IN PXENVBD_RING Ring,
+ProtocolPrepareUnmap(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_SRBEXT SrbExt
)
{
@@ -911,7 +911,7 @@ RingPrepareUnmap(
PUNMAP_BLOCK_DESCRIPTOR Descr = &Unmap->Descriptors[Index];
PXENVBD_REQUEST Request;
- Request = RingGetRequest(Ring);
+ Request = ProtocolGetRequest(Protocol);
if (Request == NULL)
goto fail1;
InsertTailList(&List, &Request->ListEntry);
@@ -924,32 +924,32 @@ RingPrepareUnmap(
Request->Flags = 0;
}
- RingQueueRequestList(Ring, &List);
+ ProtocolQueueRequestList(Protocol, &List);
return TRUE;
fail1:
- RingCancelRequestList(Ring, &List);
+ ProtocolCancelRequestList(Protocol, &List);
SrbExt->RequestCount = 0;
Srb->SrbStatus = SRB_STATUS_ERROR;
return FALSE;
}
static FORCEINLINE BOOLEAN
-RingPrepareRequest(
- IN PXENVBD_RING Ring,
+ProtocolPrepareRequest(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_SRBEXT SrbExt
)
{
switch (Cdb_OperationEx(SrbExt->Srb)) {
case SCSIOP_READ:
case SCSIOP_WRITE:
- return RingPrepareReadWrite(Ring, SrbExt);
+ return ProtocolPrepareReadWrite(Protocol, SrbExt);
case SCSIOP_SYNCHRONIZE_CACHE:
- return RingPrepareSyncCache(Ring, SrbExt);
+ return ProtocolPrepareSyncCache(Protocol, SrbExt);
case SCSIOP_UNMAP:
- return RingPrepareUnmap(Ring, SrbExt);
+ return ProtocolPrepareUnmap(Protocol, SrbExt);
default:
ASSERT(FALSE);
@@ -958,8 +958,8 @@ RingPrepareRequest(
}
static BOOLEAN
-RingSubmit(
- IN PXENVBD_RING Ring,
+ProtocolSubmit(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_REQUEST Request
)
{
@@ -967,42 +967,42 @@ RingSubmit(
blkif_request_t* req;
BOOLEAN Notify;
- KeAcquireSpinLock(&Ring->Lock, &Irql);
- if (RING_FULL(&Ring->Front)) {
- KeReleaseSpinLock(&Ring->Lock, Irql);
+ KeAcquireSpinLock(&Protocol->Lock, &Irql);
+ if (RING_FULL(&Protocol->Front)) {
+ KeReleaseSpinLock(&Protocol->Lock, Irql);
return FALSE;
}
- req = RING_GET_REQUEST(&Ring->Front, Ring->Front.req_prod_pvt);
- __RingInsert(Ring, Request, req);
+ req = RING_GET_REQUEST(&Protocol->Front, Protocol->Front.req_prod_pvt);
+ __ProtocolInsert(Protocol, Request, req);
KeMemoryBarrier();
- ++Ring->Front.req_prod_pvt;
+ ++Protocol->Front.req_prod_pvt;
- RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&Ring->Front, Notify);
- KeReleaseSpinLock(&Ring->Lock, Irql);
+ RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&Protocol->Front, Notify);
+ KeReleaseSpinLock(&Protocol->Lock, Irql);
if (Notify) {
- if (!Ring->Enabled)
+ if (!Protocol->Enabled)
return TRUE;
XENBUS_EVTCHN(Send,
- &Ring->EvtchnInterface,
- Ring->Channel);
+ &Protocol->EvtchnInterface,
+ Protocol->Channel);
}
return TRUE;
}
static FORCEINLINE BOOLEAN
-RingSubmitRequests(
- IN PXENVBD_RING Ring
+ProtocolSubmitRequests(
+ IN PXENVBD_PROTOCOL Protocol
)
{
- if (!Ring->Enabled) {
- if (QueueCount(&Ring->PreparedReqs))
+ if (!Protocol->Enabled) {
+ if (QueueCount(&Protocol->PreparedReqs))
Warning("Target[%d] : Paused, not submitting new requests (%u)\n",
- FrontendGetTargetId(Ring->Frontend),
- QueueCount(&Ring->PreparedReqs));
+ FrontendGetTargetId(Protocol->Frontend),
+ QueueCount(&Protocol->PreparedReqs));
return FALSE;
}
@@ -1010,49 +1010,49 @@ RingSubmitRequests(
PXENVBD_REQUEST Request;
PLIST_ENTRY ListEntry;
- ListEntry = QueuePop(&Ring->PreparedReqs);
+ ListEntry = QueuePop(&Protocol->PreparedReqs);
if (ListEntry == NULL)
break;
Request = CONTAINING_RECORD(ListEntry, XENVBD_REQUEST, ListEntry);
- QueueAppend(&Ring->SubmittedReqs, &Request->ListEntry);
+ QueueAppend(&Protocol->SubmittedReqs, &Request->ListEntry);
KeMemoryBarrier();
- if (RingSubmit(Ring, Request))
+ if (ProtocolSubmit(Protocol, Request))
continue;
- QueueRemove(&Ring->SubmittedReqs, &Request->ListEntry);
- QueueUnPop(&Ring->PreparedReqs, &Request->ListEntry);
+ QueueRemove(&Protocol->SubmittedReqs, &Request->ListEntry);
+ QueueUnPop(&Protocol->PreparedReqs, &Request->ListEntry);
break;
}
- return QueueCount(&Ring->PreparedReqs) != 0;
+ return QueueCount(&Protocol->PreparedReqs) != 0;
}
static FORCEINLINE VOID
-RingCompleteShutdown(
- IN PXENVBD_RING Ring
+ProtocolCompleteShutdown(
+ IN PXENVBD_PROTOCOL Protocol
)
{
PXENVBD_TARGET Target;
PXENVBD_ADAPTER Adapter;
- if (QueueCount(&Ring->ShutdownSrbs) == 0)
+ if (QueueCount(&Protocol->ShutdownSrbs) == 0)
return;
- if (QueueCount(&Ring->PreparedReqs) ||
- QueueCount(&Ring->SubmittedReqs))
+ if (QueueCount(&Protocol->PreparedReqs) ||
+ QueueCount(&Protocol->SubmittedReqs))
return;
- Target = FrontendGetTarget(Ring->Frontend);
+ Target = FrontendGetTarget(Protocol->Frontend);
Adapter = TargetGetAdapter(Target);
for (;;) {
PXENVBD_SRBEXT SrbExt;
PSCSI_REQUEST_BLOCK Srb;
PLIST_ENTRY ListEntry;
- ListEntry = QueuePop(&Ring->ShutdownSrbs);
+ ListEntry = QueuePop(&Protocol->ShutdownSrbs);
if (ListEntry == NULL)
break;
SrbExt = CONTAINING_RECORD(ListEntry, XENVBD_SRBEXT, ListEntry);
@@ -1081,8 +1081,8 @@ __BlkifOperationName(
}
static VOID
-RingCompleteResponse(
- IN PXENVBD_RING Ring,
+ProtocolCompleteResponse(
+ IN PXENVBD_PROTOCOL Protocol,
IN ULONG64 Id,
IN SHORT Status
)
@@ -1091,7 +1091,7 @@ RingCompleteResponse(
PSCSI_REQUEST_BLOCK Srb;
PXENVBD_SRBEXT SrbExt;
- Request = RingFindRequest(Ring, Id);
+ Request = ProtocolFindRequest(Protocol, Id);
if (Request == NULL)
return;
@@ -1100,12 +1100,12 @@ RingCompleteResponse(
switch (Status) {
case BLKIF_RSP_OKAY:
- RingRequestCopyOutput(Request);
+ ProtocolRequestCopyOutput(Request);
break;
case BLKIF_RSP_EOPNOTSUPP:
// Remove appropriate feature support
- FrontendRemoveFeature(Ring->Frontend, Request->Operation);
+ FrontendRemoveFeature(Protocol->Frontend, Request->Operation);
// Succeed this SRB, subsiquent SRBs will be succeeded instead of
being passed to the backend.
Srb->SrbStatus = SRB_STATUS_SUCCESS;
break;
@@ -1113,18 +1113,18 @@ RingCompleteResponse(
case BLKIF_RSP_ERROR:
default:
Warning("Target[%d] : %s BLKIF_RSP_ERROR (Tag %llx)\n",
- FrontendGetTargetId(Ring->Frontend),
+ FrontendGetTargetId(Protocol->Frontend),
__BlkifOperationName(Request->Operation),
Id);
Srb->SrbStatus = SRB_STATUS_ERROR;
break;
}
- RingPutRequest(Ring, Request);
+ ProtocolPutRequest(Protocol, Request);
// complete srb
if (InterlockedDecrement(&SrbExt->RequestCount) == 0) {
- PXENVBD_TARGET Target = FrontendGetTarget(Ring->Frontend);
+ PXENVBD_TARGET Target = FrontendGetTarget(Protocol->Frontend);
PXENVBD_ADAPTER Adapter = TargetGetAdapter(Target);
if (Srb->SrbStatus == SRB_STATUS_PENDING) {
@@ -1142,18 +1142,18 @@ RingCompleteResponse(
}
static BOOLEAN
-RingPoll(
- IN PXENVBD_RING Ring
+ProtocolPoll(
+ IN PXENVBD_PROTOCOL Protocol
)
{
BOOLEAN Retry = FALSE;
ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
- KeAcquireSpinLockAtDpcLevel(&Ring->Lock);
+ KeAcquireSpinLockAtDpcLevel(&Protocol->Lock);
// Guard against this locked region being called after the
// lock on FrontendSetState
- if (Ring->Enabled == FALSE)
+ if (Protocol->Enabled == FALSE)
goto done;
for (;;) {
@@ -1162,8 +1162,8 @@ RingPoll(
KeMemoryBarrier();
- rsp_prod = Ring->Shared->rsp_prod;
- rsp_cons = Ring->Front.rsp_cons;
+ rsp_prod = Protocol->Shared->rsp_prod;
+ rsp_cons = Protocol->Front.rsp_cons;
KeMemoryBarrier();
@@ -1173,95 +1173,95 @@ RingPoll(
while (rsp_cons != rsp_prod && !Retry) {
blkif_response_t* rsp;
- rsp = RING_GET_RESPONSE(&Ring->Front, rsp_cons);
+ rsp = RING_GET_RESPONSE(&Protocol->Front, rsp_cons);
++rsp_cons;
- ++Ring->Received;
+ ++Protocol->Received;
- RingCompleteResponse(Ring, rsp->id, rsp->status);
+ ProtocolCompleteResponse(Protocol, rsp->id, rsp->status);
RtlZeroMemory(rsp, sizeof(union blkif_sring_entry));
- if (rsp_cons - Ring->Front.rsp_cons > RING_SIZE(&Ring->Front) / 4)
+ if (rsp_cons - Protocol->Front.rsp_cons >
RING_SIZE(&Protocol->Front) / 4)
Retry = TRUE;
}
KeMemoryBarrier();
- Ring->Front.rsp_cons = rsp_cons;
- Ring->Shared->rsp_event = rsp_cons + 1;
+ Protocol->Front.rsp_cons = rsp_cons;
+ Protocol->Shared->rsp_event = rsp_cons + 1;
}
done:
- KeReleaseSpinLockFromDpcLevel(&Ring->Lock);
+ KeReleaseSpinLockFromDpcLevel(&Protocol->Lock);
return Retry;
}
__drv_requiresIRQL(DISPATCH_LEVEL)
static BOOLEAN
-RingNotifyResponses(
- IN PXENVBD_RING Ring
+ProtocolNotifyResponses(
+ IN PXENVBD_PROTOCOL Protocol
)
{
BOOLEAN Retry = FALSE;
- if (!Ring->Enabled)
+ if (!Protocol->Enabled)
return FALSE;
- Retry |= RingPoll(Ring);
- Retry |= RingSubmitRequests(Ring);
+ Retry |= ProtocolPoll(Protocol);
+ Retry |= ProtocolSubmitRequests(Protocol);
- RingCompleteShutdown(Ring);
+ ProtocolCompleteShutdown(Protocol);
return Retry;
}
-KSERVICE_ROUTINE RingInterrupt;
+KSERVICE_ROUTINE ProtocolInterrupt;
BOOLEAN
-RingInterrupt(
+ProtocolInterrupt(
IN PKINTERRUPT Interrupt,
IN PVOID Context
)
{
- PXENVBD_RING Ring = Context;
+ PXENVBD_PROTOCOL Protocol = Context;
UNREFERENCED_PARAMETER(Interrupt);
- ASSERT(Ring != NULL);
+ ASSERT(Protocol != NULL);
- ++Ring->Events;
- if (!Ring->Connected)
+ ++Protocol->Events;
+ if (!Protocol->Connected)
return TRUE;
- if (KeInsertQueueDpc(&Ring->Dpc, NULL, NULL))
- ++Ring->Dpcs;
+ if (KeInsertQueueDpc(&Protocol->Dpc, NULL, NULL))
+ ++Protocol->Dpcs;
return TRUE;
}
-KDEFERRED_ROUTINE RingDpc;
+KDEFERRED_ROUTINE ProtocolDpc;
VOID
-RingDpc(
+ProtocolDpc(
__in PKDPC Dpc,
__in_opt PVOID Context,
__in_opt PVOID Arg1,
__in_opt PVOID Arg2
)
{
- PXENVBD_RING Ring = Context;
+ PXENVBD_PROTOCOL Protocol = Context;
UNREFERENCED_PARAMETER(Dpc);
UNREFERENCED_PARAMETER(Arg1);
UNREFERENCED_PARAMETER(Arg2);
- ASSERT(Ring != NULL);
+ ASSERT(Protocol != NULL);
for (;;) {
KIRQL Irql;
BOOLEAN Retry;
KeRaiseIrql(DISPATCH_LEVEL, &Irql);
- Retry = RingNotifyResponses(Ring);
+ Retry = ProtocolNotifyResponses(Protocol);
KeLowerIrql(Irql);
if (!Retry)
@@ -1269,136 +1269,136 @@ RingDpc(
}
XENBUS_EVTCHN(Unmask,
- &Ring->EvtchnInterface,
- Ring->Channel,
+ &Protocol->EvtchnInterface,
+ Protocol->Channel,
FALSE);
}
static DECLSPEC_NOINLINE VOID
-RingDebugCallback(
+ProtocolDebugCallback(
IN PVOID Argument,
IN BOOLEAN Crashing
)
{
- PXENVBD_RING Ring = Argument;
- PXENVBD_GRANTER Granter = FrontendGetGranter(Ring->Frontend);
+ PXENVBD_PROTOCOL Protocol = Argument;
+ PXENVBD_GRANTER Granter = FrontendGetGranter(Protocol->Frontend);
ULONG Index;
UNREFERENCED_PARAMETER(Crashing);
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"Submitted: %u Received: %u\n",
- Ring->Submitted,
- Ring->Received);
+ Protocol->Submitted,
+ Protocol->Received);
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"Events: %u Dpcs: %u\n",
- Ring->Events,
- Ring->Dpcs);
+ Protocol->Events,
+ Protocol->Dpcs);
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"Shared : 0x%p\n",
- Ring->Shared);
+ Protocol->Shared);
- if (Ring->Shared) {
+ if (Protocol->Shared) {
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"Shared: %d / %d - %d / %d\n",
- Ring->Shared->req_prod,
- Ring->Shared->req_event,
- Ring->Shared->rsp_prod,
- Ring->Shared->rsp_event);
+ Protocol->Shared->req_prod,
+ Protocol->Shared->req_event,
+ Protocol->Shared->rsp_prod,
+ Protocol->Shared->rsp_event);
}
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"Front: %d / %d (%d)\n",
- Ring->Front.req_prod_pvt,
- Ring->Front.rsp_cons,
- Ring->Front.nr_ents);
+ Protocol->Front.req_prod_pvt,
+ Protocol->Front.rsp_cons,
+ Protocol->Front.nr_ents);
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"Order: %d\n",
- Ring->Order);
+ Protocol->Order);
- for (Index = 0; Index < (1ul << Ring->Order); ++Index) {
+ for (Index = 0; Index < (1ul << Protocol->Order); ++Index) {
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"Grants[%-2d]: 0x%p (%u)\n",
Index,
- Ring->Grants[Index],
- GranterReference(Granter, Ring->Grants[Index]));
+ Protocol->Grants[Index],
+ GranterReference(Granter, Protocol->Grants[Index]));
}
- if (Ring->Channel) {
+ if (Protocol->Channel) {
ULONG Port = XENBUS_EVTCHN(GetPort,
- &Ring->EvtchnInterface,
- Ring->Channel);
+ &Protocol->EvtchnInterface,
+ Protocol->Channel);
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"Channel : %p (%d)\n",
- Ring->Channel,
+ Protocol->Channel,
Port);
}
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"BLKIF_OPs: READ=%u WRITE=%u\n",
- Ring->BlkOpRead,
- Ring->BlkOpWrite);
+ Protocol->BlkOpRead,
+ Protocol->BlkOpWrite);
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"BLKIF_OPs: INDIRECT_READ=%u INDIRECT_WRITE=%u\n",
- Ring->BlkOpIndirectRead,
- Ring->BlkOpIndirectWrite);
+ Protocol->BlkOpIndirectRead,
+ Protocol->BlkOpIndirectWrite);
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"BLKIF_OPs: BARRIER=%u DISCARD=%u FLUSH=%u\n",
- Ring->BlkOpBarrier,
- Ring->BlkOpDiscard,
- Ring->BlkOpFlush);
+ Protocol->BlkOpBarrier,
+ Protocol->BlkOpDiscard,
+ Protocol->BlkOpFlush);
XENBUS_DEBUG(Printf,
- &Ring->DebugInterface,
+ &Protocol->DebugInterface,
"Segments Granted=%llu Bounced=%llu\n",
- Ring->SegsGranted,
- Ring->SegsBounced);
+ Protocol->SegsGranted,
+ Protocol->SegsBounced);
- QueueDebugCallback(&Ring->PreparedReqs,
+ QueueDebugCallback(&Protocol->PreparedReqs,
"Prepared ",
- &Ring->DebugInterface);
- QueueDebugCallback(&Ring->SubmittedReqs,
+ &Protocol->DebugInterface);
+ QueueDebugCallback(&Protocol->SubmittedReqs,
"Submitted",
- &Ring->DebugInterface);
- QueueDebugCallback(&Ring->ShutdownSrbs,
+ &Protocol->DebugInterface);
+ QueueDebugCallback(&Protocol->ShutdownSrbs,
"Shutdown ",
- &Ring->DebugInterface);
+ &Protocol->DebugInterface);
}
static DECLSPEC_NOINLINE VOID
-RingAcquireLock(
+ProtocolAcquireLock(
IN PVOID Argument
)
{
- PXENVBD_RING Ring = Argument;
- KeAcquireSpinLockAtDpcLevel(&Ring->Lock);
+ PXENVBD_PROTOCOL Protocol = Argument;
+ KeAcquireSpinLockAtDpcLevel(&Protocol->Lock);
}
static DECLSPEC_NOINLINE VOID
-RingReleaseLock(
+ProtocolReleaseLock(
IN PVOID Argument
)
{
- PXENVBD_RING Ring = Argument;
- KeReleaseSpinLockFromDpcLevel(&Ring->Lock);
+ PXENVBD_PROTOCOL Protocol = Argument;
+ KeReleaseSpinLockFromDpcLevel(&Protocol->Lock);
}
static DECLSPEC_NOINLINE NTSTATUS
-RingRequestCtor(
+ProtocolRequestCtor(
IN PVOID Argument,
IN PVOID Object
)
@@ -1413,7 +1413,7 @@ RingRequestCtor(
}
static DECLSPEC_NOINLINE VOID
-RingRequestDtor(
+ProtocolRequestDtor(
IN PVOID Argument,
IN PVOID Object
)
@@ -1423,7 +1423,7 @@ RingRequestDtor(
}
static DECLSPEC_NOINLINE NTSTATUS
-RingSegmentCtor(
+ProtocolSegmentCtor(
IN PVOID Argument,
IN PVOID Object
)
@@ -1434,7 +1434,7 @@ RingSegmentCtor(
}
static DECLSPEC_NOINLINE VOID
-RingSegmentDtor(
+ProtocolSegmentDtor(
IN PVOID Argument,
IN PVOID Object
)
@@ -1444,7 +1444,7 @@ RingSegmentDtor(
}
static DECLSPEC_NOINLINE NTSTATUS
-RingIndirectCtor(
+ProtocolIndirectCtor(
IN PVOID Argument,
IN PVOID Object
)
@@ -1471,7 +1471,7 @@ fail1:
}
static DECLSPEC_NOINLINE VOID
-RingIndirectDtor(
+ProtocolIndirectDtor(
IN PVOID Argument,
IN PVOID Object
)
@@ -1486,9 +1486,9 @@ RingIndirectDtor(
}
NTSTATUS
-RingCreate(
+ProtocolCreate(
IN PXENVBD_FRONTEND Frontend,
- OUT PXENVBD_RING* Ring
+ OUT PXENVBD_PROTOCOL* Protocol
)
{
PXENVBD_TARGET Target = FrontendGetTarget(Frontend);
@@ -1496,24 +1496,24 @@ RingCreate(
CHAR Name[MAX_NAME_LEN];
NTSTATUS status;
- *Ring = __RingAllocate(sizeof(XENVBD_RING));
+ *Protocol = __ProtocolAllocate(sizeof(XENVBD_PROTOCOL));
status = STATUS_NO_MEMORY;
- if (*Ring == NULL)
+ if (*Protocol == NULL)
goto fail1;
- (*Ring)->Frontend = Frontend;
- KeInitializeSpinLock(&(*Ring)->Lock);
- KeInitializeThreadedDpc(&(*Ring)->Dpc, RingDpc, *Ring);
- KeSetImportanceDpc(&(*Ring)->Dpc, MediumHighImportance);
+ (*Protocol)->Frontend = Frontend;
+ KeInitializeSpinLock(&(*Protocol)->Lock);
+ KeInitializeThreadedDpc(&(*Protocol)->Dpc, ProtocolDpc, *Protocol);
+ KeSetImportanceDpc(&(*Protocol)->Dpc, MediumHighImportance);
- QueueInit(&(*Ring)->PreparedReqs);
- QueueInit(&(*Ring)->SubmittedReqs);
- QueueInit(&(*Ring)->ShutdownSrbs);
+ QueueInit(&(*Protocol)->PreparedReqs);
+ QueueInit(&(*Protocol)->SubmittedReqs);
+ QueueInit(&(*Protocol)->ShutdownSrbs);
- AdapterGetCacheInterface(Adapter, &(*Ring)->CacheInterface);
+ AdapterGetCacheInterface(Adapter, &(*Protocol)->CacheInterface);
- status = XENBUS_CACHE(Acquire, &(*Ring)->CacheInterface);
+ status = XENBUS_CACHE(Acquire, &(*Protocol)->CacheInterface);
if (!NT_SUCCESS(status))
goto fail2;
@@ -1525,16 +1525,16 @@ RingCreate(
goto fail3;
status = XENBUS_CACHE(Create,
- &(*Ring)->CacheInterface,
+ &(*Protocol)->CacheInterface,
Name,
sizeof(XENVBD_REQUEST),
32,
- RingRequestCtor,
- RingRequestDtor,
- RingAcquireLock,
- RingReleaseLock,
- *Ring,
- &(*Ring)->RequestCache);
+ ProtocolRequestCtor,
+ ProtocolRequestDtor,
+ ProtocolAcquireLock,
+ ProtocolReleaseLock,
+ *Protocol,
+ &(*Protocol)->RequestCache);
if (!NT_SUCCESS(status))
goto fail4;
@@ -1546,16 +1546,16 @@ RingCreate(
goto fail5;
status = XENBUS_CACHE(Create,
- &(*Ring)->CacheInterface,
+ &(*Protocol)->CacheInterface,
Name,
sizeof(XENVBD_SEGMENT),
32,
- RingSegmentCtor,
- RingSegmentDtor,
- RingAcquireLock,
- RingReleaseLock,
- *Ring,
- &(*Ring)->SegmentCache);
+ ProtocolSegmentCtor,
+ ProtocolSegmentDtor,
+ ProtocolAcquireLock,
+ ProtocolReleaseLock,
+ *Protocol,
+ &(*Protocol)->SegmentCache);
if (!NT_SUCCESS(status))
goto fail6;
@@ -1567,16 +1567,16 @@ RingCreate(
goto fail7;
status = XENBUS_CACHE(Create,
- &(*Ring)->CacheInterface,
+ &(*Protocol)->CacheInterface,
Name,
sizeof(XENVBD_INDIRECT),
1,
- RingIndirectCtor,
- RingIndirectDtor,
- RingAcquireLock,
- RingReleaseLock,
- *Ring,
- &(*Ring)->IndirectCache);
+ ProtocolIndirectCtor,
+ ProtocolIndirectDtor,
+ ProtocolAcquireLock,
+ ProtocolReleaseLock,
+ *Protocol,
+ &(*Protocol)->IndirectCache);
if (!NT_SUCCESS(status))
goto fail8;
@@ -1587,127 +1587,127 @@ fail8:
fail7:
Error("fail7\n");
XENBUS_CACHE(Destroy,
- &(*Ring)->CacheInterface,
- (*Ring)->SegmentCache);
- (*Ring)->SegmentCache = NULL;
+ &(*Protocol)->CacheInterface,
+ (*Protocol)->SegmentCache);
+ (*Protocol)->SegmentCache = NULL;
fail6:
Error("fail6\n");
fail5:
Error("fail5\n");
XENBUS_CACHE(Destroy,
- &(*Ring)->CacheInterface,
- (*Ring)->RequestCache);
- (*Ring)->RequestCache = NULL;
+ &(*Protocol)->CacheInterface,
+ (*Protocol)->RequestCache);
+ (*Protocol)->RequestCache = NULL;
fail4:
Error("fail4\n");
fail3:
Error("fail3\n");
XENBUS_CACHE(Release,
- &(*Ring)->CacheInterface);
+ &(*Protocol)->CacheInterface);
fail2:
Error("fail2\n");
- RtlZeroMemory(&(*Ring)->CacheInterface,
+ RtlZeroMemory(&(*Protocol)->CacheInterface,
sizeof (XENBUS_CACHE_INTERFACE));
- RtlZeroMemory(&(*Ring)->PreparedReqs, sizeof(XENVBD_QUEUE));
- RtlZeroMemory(&(*Ring)->SubmittedReqs, sizeof(XENVBD_QUEUE));
- RtlZeroMemory(&(*Ring)->ShutdownSrbs, sizeof(XENVBD_QUEUE));
+ RtlZeroMemory(&(*Protocol)->PreparedReqs, sizeof(XENVBD_QUEUE));
+ RtlZeroMemory(&(*Protocol)->SubmittedReqs, sizeof(XENVBD_QUEUE));
+ RtlZeroMemory(&(*Protocol)->ShutdownSrbs, sizeof(XENVBD_QUEUE));
- RtlZeroMemory(&(*Ring)->Dpc, sizeof(KDPC));
- RtlZeroMemory(&(*Ring)->Lock, sizeof(KSPIN_LOCK));
- (*Ring)->Frontend = NULL;
+ RtlZeroMemory(&(*Protocol)->Dpc, sizeof(KDPC));
+ RtlZeroMemory(&(*Protocol)->Lock, sizeof(KSPIN_LOCK));
+ (*Protocol)->Frontend = NULL;
- ASSERT(IsZeroMemory(*Ring, sizeof(XENVBD_RING)));
- __RingFree(*Ring);
- *Ring = NULL;
+ ASSERT(IsZeroMemory(*Protocol, sizeof(XENVBD_PROTOCOL)));
+ __ProtocolFree(*Protocol);
+ *Protocol = NULL;
fail1:
Error("fail1 %08x\n", status);
return status;
}
VOID
-RingDestroy(
- IN PXENVBD_RING Ring
+ProtocolDestroy(
+ IN PXENVBD_PROTOCOL Protocol
)
{
XENBUS_CACHE(Destroy,
- &Ring->CacheInterface,
- Ring->IndirectCache);
- Ring->IndirectCache = NULL;
+ &Protocol->CacheInterface,
+ Protocol->IndirectCache);
+ Protocol->IndirectCache = NULL;
XENBUS_CACHE(Destroy,
- &Ring->CacheInterface,
- Ring->SegmentCache);
- Ring->SegmentCache = NULL;
+ &Protocol->CacheInterface,
+ Protocol->SegmentCache);
+ Protocol->SegmentCache = NULL;
XENBUS_CACHE(Destroy,
- &Ring->CacheInterface,
- Ring->RequestCache);
- Ring->RequestCache = NULL;
+ &Protocol->CacheInterface,
+ Protocol->RequestCache);
+ Protocol->RequestCache = NULL;
XENBUS_CACHE(Release,
- &Ring->CacheInterface);
+ &Protocol->CacheInterface);
- RtlZeroMemory(&Ring->CacheInterface,
+ RtlZeroMemory(&Protocol->CacheInterface,
sizeof (XENBUS_CACHE_INTERFACE));
- RtlZeroMemory(&Ring->PreparedReqs, sizeof(XENVBD_QUEUE));
- RtlZeroMemory(&Ring->SubmittedReqs, sizeof(XENVBD_QUEUE));
- RtlZeroMemory(&Ring->ShutdownSrbs, sizeof(XENVBD_QUEUE));
-
- RtlZeroMemory(&Ring->Dpc, sizeof(KDPC));
- RtlZeroMemory(&Ring->Lock, sizeof(KSPIN_LOCK));
- Ring->Frontend = NULL;
-
- Ring->BlkOpRead = 0;
- Ring->BlkOpWrite = 0;
- Ring->BlkOpIndirectRead = 0;
- Ring->BlkOpIndirectWrite = 0;
- Ring->BlkOpBarrier = 0;
- Ring->BlkOpDiscard = 0;
- Ring->BlkOpFlush = 0;
- Ring->SegsGranted = 0;
- Ring->SegsBounced = 0;
-
- ASSERT(IsZeroMemory(Ring, sizeof(XENVBD_RING)));
- __RingFree(Ring);
+ RtlZeroMemory(&Protocol->PreparedReqs, sizeof(XENVBD_QUEUE));
+ RtlZeroMemory(&Protocol->SubmittedReqs, sizeof(XENVBD_QUEUE));
+ RtlZeroMemory(&Protocol->ShutdownSrbs, sizeof(XENVBD_QUEUE));
+
+ RtlZeroMemory(&Protocol->Dpc, sizeof(KDPC));
+ RtlZeroMemory(&Protocol->Lock, sizeof(KSPIN_LOCK));
+ Protocol->Frontend = NULL;
+
+ Protocol->BlkOpRead = 0;
+ Protocol->BlkOpWrite = 0;
+ Protocol->BlkOpIndirectRead = 0;
+ Protocol->BlkOpIndirectWrite = 0;
+ Protocol->BlkOpBarrier = 0;
+ Protocol->BlkOpDiscard = 0;
+ Protocol->BlkOpFlush = 0;
+ Protocol->SegsGranted = 0;
+ Protocol->SegsBounced = 0;
+
+ ASSERT(IsZeroMemory(Protocol, sizeof(XENVBD_PROTOCOL)));
+ __ProtocolFree(Protocol);
}
NTSTATUS
-RingConnect(
- IN PXENVBD_RING Ring
+ProtocolConnect(
+ IN PXENVBD_PROTOCOL Protocol
)
{
- PXENVBD_TARGET Target = FrontendGetTarget(Ring->Frontend);
+ PXENVBD_TARGET Target = FrontendGetTarget(Protocol->Frontend);
PXENVBD_ADAPTER Adapter = TargetGetAdapter(Target);
- PXENVBD_GRANTER Granter = FrontendGetGranter(Ring->Frontend);
+ PXENVBD_GRANTER Granter = FrontendGetGranter(Protocol->Frontend);
PCHAR Buffer;
ULONG Index;
NTSTATUS status;
- ASSERT(Ring->Connected == FALSE);
+ ASSERT(Protocol->Connected == FALSE);
- AdapterGetStoreInterface(Adapter, &Ring->StoreInterface);
- AdapterGetEvtchnInterface(Adapter, &Ring->EvtchnInterface);
- AdapterGetDebugInterface(Adapter, &Ring->DebugInterface);
+ AdapterGetStoreInterface(Adapter, &Protocol->StoreInterface);
+ AdapterGetEvtchnInterface(Adapter, &Protocol->EvtchnInterface);
+ AdapterGetDebugInterface(Adapter, &Protocol->DebugInterface);
- status = XENBUS_STORE(Acquire, &Ring->StoreInterface);
+ status = XENBUS_STORE(Acquire, &Protocol->StoreInterface);
if (!NT_SUCCESS(status))
goto fail1;
- status = XENBUS_EVTCHN(Acquire, &Ring->EvtchnInterface);
+ status = XENBUS_EVTCHN(Acquire, &Protocol->EvtchnInterface);
if (!NT_SUCCESS(status))
goto fail2;
- status = XENBUS_DEBUG(Acquire, &Ring->DebugInterface);
+ status = XENBUS_DEBUG(Acquire, &Protocol->DebugInterface);
if (!NT_SUCCESS(status))
goto fail3;
status = XENBUS_STORE(Read,
- &Ring->StoreInterface,
+ &Protocol->StoreInterface,
NULL,
- FrontendGetBackendPath(Ring->Frontend),
+ FrontendGetBackendPath(Protocol->Frontend),
"max-ring-page-order",
&Buffer);
if (NT_SUCCESS(status)) {
@@ -1715,156 +1715,156 @@ RingConnect(
if (DriverGetFeatureOverride(FeatureMaxRingPageOrder,
&MaxOrder)) {
- MaxOrder = min(MaxOrder, XENVBD_MAX_RING_PAGE_ORDER);
+ MaxOrder = min(MaxOrder, XENVBD_MAX_PROTOCOL_PAGE_ORDER);
} else {
- MaxOrder = XENVBD_MAX_RING_PAGE_ORDER;
+ MaxOrder = XENVBD_MAX_PROTOCOL_PAGE_ORDER;
}
- Ring->Order = strtoul(Buffer, NULL, 10);
- Ring->Order = min(Ring->Order, MaxOrder);
+ Protocol->Order = strtoul(Buffer, NULL, 10);
+ Protocol->Order = min(Protocol->Order, MaxOrder);
XENBUS_STORE(Free,
- &Ring->StoreInterface,
+ &Protocol->StoreInterface,
Buffer);
} else {
- Ring->Order = 0;
+ Protocol->Order = 0;
}
- Ring->Mdl = __AllocatePages(1 << Ring->Order);
+ Protocol->Mdl = __AllocatePages(1 << Protocol->Order);
status = STATUS_NO_MEMORY;
- if (Ring->Mdl == NULL)
+ if (Protocol->Mdl == NULL)
goto fail4;
- Ring->Shared = MmGetSystemAddressForMdlSafe(Ring->Mdl,
+ Protocol->Shared = MmGetSystemAddressForMdlSafe(Protocol->Mdl,
NormalPagePriority);
- ASSERT(Ring->Shared != NULL);
+ ASSERT(Protocol->Shared != NULL);
#pragma warning(push)
#pragma warning(disable: 4305)
#pragma warning(disable: 4311) // 'type cast' pointer truncation from
'blkif_sring_entry[1]' to 'long'
- SHARED_RING_INIT(Ring->Shared);
- FRONT_RING_INIT(&Ring->Front, Ring->Shared, PAGE_SIZE << Ring->Order);
+ SHARED_RING_INIT(Protocol->Shared);
+ FRONT_RING_INIT(&Protocol->Front, Protocol->Shared, PAGE_SIZE <<
Protocol->Order);
#pragma warning(pop)
- for (Index = 0; Index < (1ul << Ring->Order); ++Index) {
+ for (Index = 0; Index < (1ul << Protocol->Order); ++Index) {
status = GranterGet(Granter,
- MmGetMdlPfnArray(Ring->Mdl)[Index],
+ MmGetMdlPfnArray(Protocol->Mdl)[Index],
FALSE,
- &Ring->Grants[Index]);
+ &Protocol->Grants[Index]);
if (!NT_SUCCESS(status))
goto fail5;
}
- Ring->Channel = XENBUS_EVTCHN(Open,
- &Ring->EvtchnInterface,
+ Protocol->Channel = XENBUS_EVTCHN(Open,
+ &Protocol->EvtchnInterface,
XENBUS_EVTCHN_TYPE_UNBOUND,
- RingInterrupt,
- Ring,
- FrontendGetBackendDomain(Ring->Frontend),
+ ProtocolInterrupt,
+ Protocol,
+ FrontendGetBackendDomain(Protocol->Frontend),
TRUE);
status = STATUS_NO_MEMORY;
- if (Ring->Channel == NULL)
+ if (Protocol->Channel == NULL)
goto fail6;
XENBUS_EVTCHN(Unmask,
- &Ring->EvtchnInterface,
- Ring->Channel,
+ &Protocol->EvtchnInterface,
+ Protocol->Channel,
FALSE);
status = XENBUS_DEBUG(Register,
- &Ring->DebugInterface,
- __MODULE__"|RING",
- RingDebugCallback,
- Ring,
- &Ring->DebugCallback);
+ &Protocol->DebugInterface,
+ __MODULE__"|PROTOCOL",
+ ProtocolDebugCallback,
+ Protocol,
+ &Protocol->DebugCallback);
if (!NT_SUCCESS(status))
goto fail7;
- Ring->Connected = TRUE;
+ Protocol->Connected = TRUE;
return STATUS_SUCCESS;
fail7:
Error("fail7\n");
XENBUS_EVTCHN(Close,
- &Ring->EvtchnInterface,
- Ring->Channel);
- Ring->Channel = NULL;
+ &Protocol->EvtchnInterface,
+ Protocol->Channel);
+ Protocol->Channel = NULL;
fail6:
Error("fail6\n");
fail5:
Error("fail5\n");
- for (Index = 0; Index < (1ul << Ring->Order); ++Index) {
- if (Ring->Grants[Index] == NULL)
+ for (Index = 0; Index < (1ul << Protocol->Order); ++Index) {
+ if (Protocol->Grants[Index] == NULL)
continue;
- GranterPut(Granter, Ring->Grants[Index]);
- Ring->Grants[Index] = NULL;
+ GranterPut(Granter, Protocol->Grants[Index]);
+ Protocol->Grants[Index] = NULL;
}
- RtlZeroMemory(&Ring->Front, sizeof(blkif_front_ring_t));
+ RtlZeroMemory(&Protocol->Front, sizeof(blkif_front_ring_t));
- __FreePages(Ring->Mdl);
- Ring->Shared = NULL;
- Ring->Mdl = NULL;
+ __FreePages(Protocol->Mdl);
+ Protocol->Shared = NULL;
+ Protocol->Mdl = NULL;
- Ring->Order = 0;
+ Protocol->Order = 0;
fail4:
Error("fail4\n");
- XENBUS_DEBUG(Release, &Ring->DebugInterface);
+ XENBUS_DEBUG(Release, &Protocol->DebugInterface);
fail3:
Error("fail3\n");
- XENBUS_EVTCHN(Release, &Ring->EvtchnInterface);
+ XENBUS_EVTCHN(Release, &Protocol->EvtchnInterface);
fail2:
Error("fail2\n");
- XENBUS_STORE(Release, &Ring->StoreInterface);
+ XENBUS_STORE(Release, &Protocol->StoreInterface);
fail1:
Error("fail1 %08x\n", status);
- RtlZeroMemory(&Ring->DebugInterface,
+ RtlZeroMemory(&Protocol->DebugInterface,
sizeof(XENBUS_DEBUG_INTERFACE));
- RtlZeroMemory(&Ring->EvtchnInterface,
+ RtlZeroMemory(&Protocol->EvtchnInterface,
sizeof(XENBUS_EVTCHN_INTERFACE));
- RtlZeroMemory(&Ring->StoreInterface,
+ RtlZeroMemory(&Protocol->StoreInterface,
sizeof(XENBUS_STORE_INTERFACE));
return status;
}
NTSTATUS
-RingStoreWrite(
- IN PXENVBD_RING Ring,
+ProtocolStoreWrite(
+ IN PXENVBD_PROTOCOL Protocol,
IN PVOID Transaction
)
{
- PXENVBD_GRANTER Granter = FrontendGetGranter(Ring->Frontend);
+ PXENVBD_GRANTER Granter = FrontendGetGranter(Protocol->Frontend);
ULONG Port;
NTSTATUS status;
- if (Ring->Order == 0) {
+ if (Protocol->Order == 0) {
status = XENBUS_STORE(Printf,
- &Ring->StoreInterface,
+ &Protocol->StoreInterface,
Transaction,
- FrontendGetFrontendPath(Ring->Frontend),
+ FrontendGetFrontendPath(Protocol->Frontend),
"ring-ref",
"%u",
- GranterReference(Granter, Ring->Grants[0]));
+ GranterReference(Granter, Protocol->Grants[0]));
if (!NT_SUCCESS(status))
return status;
} else {
ULONG Index;
status = XENBUS_STORE(Printf,
- &Ring->StoreInterface,
+ &Protocol->StoreInterface,
Transaction,
- FrontendGetFrontendPath(Ring->Frontend),
+ FrontendGetFrontendPath(Protocol->Frontend),
"ring-page-order",
"%u",
- Ring->Order);
+ Protocol->Order);
if (!NT_SUCCESS(status))
return status;
- for (Index = 0; Index < (1ul << Ring->Order); ++Index) {
+ for (Index = 0; Index < (1ul << Protocol->Order); ++Index) {
CHAR Name[MAX_NAME_LEN+1];
status = RtlStringCchPrintfA(Name,
@@ -1875,34 +1875,34 @@ RingStoreWrite(
return status;
status = XENBUS_STORE(Printf,
- &Ring->StoreInterface,
+ &Protocol->StoreInterface,
Transaction,
- FrontendGetFrontendPath(Ring->Frontend),
+ FrontendGetFrontendPath(Protocol->Frontend),
Name,
"%u",
- GranterReference(Granter,
Ring->Grants[Index]));
+ GranterReference(Granter,
Protocol->Grants[Index]));
if (!NT_SUCCESS(status))
return status;
}
}
status = XENBUS_STORE(Printf,
- &Ring->StoreInterface,
+ &Protocol->StoreInterface,
Transaction,
- FrontendGetFrontendPath(Ring->Frontend),
+ FrontendGetFrontendPath(Protocol->Frontend),
"protocol",
XEN_IO_PROTO_ABI);
if (!NT_SUCCESS(status))
return status;
Port = XENBUS_EVTCHN(GetPort,
- &Ring->EvtchnInterface,
- Ring->Channel);
+ &Protocol->EvtchnInterface,
+ Protocol->Channel);
status = XENBUS_STORE(Printf,
- &Ring->StoreInterface,
+ &Protocol->StoreInterface,
Transaction,
- FrontendGetFrontendPath(Ring->Frontend),
+ FrontendGetFrontendPath(Protocol->Frontend),
"event-channel",
"%u",
Port);
@@ -1913,49 +1913,49 @@ RingStoreWrite(
}
VOID
-RingEnable(
- IN PXENVBD_RING Ring
+ProtocolEnable(
+ IN PXENVBD_PROTOCOL Protocol
)
{
- ASSERT(Ring->Enabled == FALSE);
- Ring->Enabled = TRUE;
+ ASSERT(Protocol->Enabled == FALSE);
+ Protocol->Enabled = TRUE;
XENBUS_EVTCHN(Trigger,
- &Ring->EvtchnInterface,
- Ring->Channel);
+ &Protocol->EvtchnInterface,
+ Protocol->Channel);
}
VOID
-RingDisable(
- IN PXENVBD_RING Ring
+ProtocolDisable(
+ IN PXENVBD_PROTOCOL Protocol
)
{
ULONG Count;
KIRQL Irql;
- PXENVBD_TARGET Target = FrontendGetTarget(Ring->Frontend);
+ PXENVBD_TARGET Target = FrontendGetTarget(Protocol->Frontend);
PXENVBD_ADAPTER Adapter = TargetGetAdapter(Target);
- ASSERT(Ring->Enabled == TRUE);
- Ring->Enabled = FALSE;
+ ASSERT(Protocol->Enabled == TRUE);
+ Protocol->Enabled = FALSE;
// poll ring and send event channel notification every 1ms (for up to 3
minutes)
Count = 0;
- while (QueueCount(&Ring->SubmittedReqs)) {
+ while (QueueCount(&Protocol->SubmittedReqs)) {
if (Count > 180000)
break;
KeRaiseIrql(DISPATCH_LEVEL, &Irql);
- RingPoll(Ring);
+ ProtocolPoll(Protocol);
KeLowerIrql(Irql);
XENBUS_EVTCHN(Send,
- &Ring->EvtchnInterface,
- Ring->Channel);
+ &Protocol->EvtchnInterface,
+ Protocol->Channel);
StorPortStallExecution(1000); // 1000 micro-seconds
++Count;
}
Verbose("Target[%d] : %u Submitted requests left (%u iterrations)\n",
- FrontendGetTargetId(Ring->Frontend),
- QueueCount(&Ring->SubmittedReqs),
+ FrontendGetTargetId(Protocol->Frontend),
+ QueueCount(&Protocol->SubmittedReqs),
Count);
// Fail PreparedReqs
@@ -1965,7 +1965,7 @@ RingDisable(
PXENVBD_REQUEST Request;
PLIST_ENTRY ListEntry;
- ListEntry = QueuePop(&Ring->PreparedReqs);
+ ListEntry = QueuePop(&Protocol->PreparedReqs);
if (ListEntry == NULL)
break;
Request = CONTAINING_RECORD(ListEntry, XENVBD_REQUEST, ListEntry);
@@ -1975,7 +1975,7 @@ RingDisable(
Srb->SrbStatus = SRB_STATUS_ABORTED;
Srb->ScsiStatus = 0x40; // SCSI_ABORTED
- RingPutRequest(Ring, Request);
+ ProtocolPutRequest(Protocol, Request);
if (InterlockedDecrement(&SrbExt->RequestCount) == 0)
AdapterCompleteSrb(Adapter, SrbExt);
@@ -1983,91 +1983,91 @@ RingDisable(
}
VOID
-RingDisconnect(
- IN PXENVBD_RING Ring
+ProtocolDisconnect(
+ IN PXENVBD_PROTOCOL Protocol
)
{
- PXENVBD_GRANTER Granter = FrontendGetGranter(Ring->Frontend);
+ PXENVBD_GRANTER Granter = FrontendGetGranter(Protocol->Frontend);
ULONG Index;
- ASSERT3U(Ring->Submitted, ==, Ring->Received);
- ASSERT(Ring->Connected);
- Ring->Connected = FALSE;
+ ASSERT3U(Protocol->Submitted, ==, Protocol->Received);
+ ASSERT(Protocol->Connected);
+ Protocol->Connected = FALSE;
XENBUS_DEBUG(Deregister,
- &Ring->DebugInterface,
- Ring->DebugCallback);
- Ring->DebugCallback = NULL;
+ &Protocol->DebugInterface,
+ Protocol->DebugCallback);
+ Protocol->DebugCallback = NULL;
XENBUS_EVTCHN(Close,
- &Ring->EvtchnInterface,
- Ring->Channel);
- Ring->Channel = NULL;
+ &Protocol->EvtchnInterface,
+ Protocol->Channel);
+ Protocol->Channel = NULL;
- for (Index = 0; Index < (1ul << Ring->Order); ++Index) {
- if (Ring->Grants[Index] == NULL)
+ for (Index = 0; Index < (1ul << Protocol->Order); ++Index) {
+ if (Protocol->Grants[Index] == NULL)
continue;
- GranterPut(Granter, Ring->Grants[Index]);
- Ring->Grants[Index] = NULL;
+ GranterPut(Granter, Protocol->Grants[Index]);
+ Protocol->Grants[Index] = NULL;
}
- RtlZeroMemory(&Ring->Front, sizeof(blkif_front_ring_t));
+ RtlZeroMemory(&Protocol->Front, sizeof(blkif_front_ring_t));
- __FreePages(Ring->Mdl);
- Ring->Shared = NULL;
- Ring->Mdl = NULL;
+ __FreePages(Protocol->Mdl);
+ Protocol->Shared = NULL;
+ Protocol->Mdl = NULL;
- Ring->Order = 0;
+ Protocol->Order = 0;
- XENBUS_DEBUG(Release, &Ring->DebugInterface);
- XENBUS_EVTCHN(Release, &Ring->EvtchnInterface);
- XENBUS_STORE(Release, &Ring->StoreInterface);
+ XENBUS_DEBUG(Release, &Protocol->DebugInterface);
+ XENBUS_EVTCHN(Release, &Protocol->EvtchnInterface);
+ XENBUS_STORE(Release, &Protocol->StoreInterface);
- RtlZeroMemory(&Ring->DebugInterface,
+ RtlZeroMemory(&Protocol->DebugInterface,
sizeof(XENBUS_DEBUG_INTERFACE));
- RtlZeroMemory(&Ring->EvtchnInterface,
+ RtlZeroMemory(&Protocol->EvtchnInterface,
sizeof(XENBUS_EVTCHN_INTERFACE));
- RtlZeroMemory(&Ring->StoreInterface,
+ RtlZeroMemory(&Protocol->StoreInterface,
sizeof(XENBUS_STORE_INTERFACE));
- Ring->Events = 0;
- Ring->Dpcs = 0;
- Ring->Submitted = 0;
- Ring->Received = 0;
+ Protocol->Events = 0;
+ Protocol->Dpcs = 0;
+ Protocol->Submitted = 0;
+ Protocol->Received = 0;
}
VOID
-RingTrigger(
- IN PXENVBD_RING Ring
+ProtocolTrigger(
+ IN PXENVBD_PROTOCOL Protocol
)
{
- if (!Ring->Enabled)
+ if (!Protocol->Enabled)
return;
XENBUS_EVTCHN(Trigger,
- &Ring->EvtchnInterface,
- Ring->Channel);
+ &Protocol->EvtchnInterface,
+ Protocol->Channel);
}
BOOLEAN
-RingQueueRequest(
- IN PXENVBD_RING Ring,
+ProtocolQueueRequest(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_SRBEXT SrbExt
)
{
PSCSI_REQUEST_BLOCK Srb = SrbExt->Srb;
- if (!Ring->Enabled)
+ if (!Protocol->Enabled)
goto fail1;
- if (!RingPrepareRequest(Ring, SrbExt))
+ if (!ProtocolPrepareRequest(Protocol, SrbExt))
goto fail2;
- if (RingSubmitRequests(Ring)) {
+ if (ProtocolSubmitRequests(Protocol)) {
// more prepared-reqs to submit
- if (KeInsertQueueDpc(&Ring->Dpc, NULL, NULL))
- ++Ring->Dpcs;
+ if (KeInsertQueueDpc(&Protocol->Dpc, NULL, NULL))
+ ++Protocol->Dpcs;
}
return TRUE;
@@ -2079,17 +2079,17 @@ fail1:
}
VOID
-RingQueueShutdown(
- IN PXENVBD_RING Ring,
+ProtocolQueueShutdown(
+ IN PXENVBD_PROTOCOL Protocol,
IN PXENVBD_SRBEXT SrbExt
)
{
- QueueAppend(&Ring->ShutdownSrbs,
+ QueueAppend(&Protocol->ShutdownSrbs,
&SrbExt->ListEntry);
- if (!Ring->Enabled)
+ if (!Protocol->Enabled)
return;
- if (KeInsertQueueDpc(&Ring->Dpc, NULL, NULL))
- ++Ring->Dpcs;
+ if (KeInsertQueueDpc(&Protocol->Dpc, NULL, NULL))
+ ++Protocol->Dpcs;
}
diff --git a/src/xenvbd/ring.h b/src/xenvbd/protocol.h
similarity index 67%
rename from src/xenvbd/ring.h
rename to src/xenvbd/protocol.h
index 9b8a587..3126e19 100644
--- a/src/xenvbd/ring.h
+++ b/src/xenvbd/protocol.h
@@ -29,66 +29,66 @@
* SUCH DAMAGE.
*/
-#ifndef _XENVBD_RING_H
-#define _XENVBD_RING_H
+#ifndef _XENVBD_PROTOCOL_H
+#define _XENVBD_PROTOCOL_H
-typedef struct _XENVBD_RING XENVBD_RING, *PXENVBD_RING;
+typedef struct _XENVBD_PROTOCOL XENVBD_PROTOCOL, *PXENVBD_PROTOCOL;
#include "frontend.h"
#include "srbext.h"
extern NTSTATUS
-RingCreate(
+ProtocolCreate(
IN PXENVBD_FRONTEND Frontend,
- OUT PXENVBD_RING* Ring
+ OUT PXENVBD_PROTOCOL* Protocol
);
extern VOID
-RingDestroy(
- IN PXENVBD_RING Ring
+ProtocolDestroy(
+ IN PXENVBD_PROTOCOL Protocol
);
extern NTSTATUS
-RingConnect(
- IN PXENVBD_RING Ring
+ProtocolConnect(
+ IN PXENVBD_PROTOCOL Protocol
);
extern NTSTATUS
-RingStoreWrite(
- IN PXENVBD_RING Ring,
- IN PVOID Transaction
+ProtocolStoreWrite(
+ IN PXENVBD_PROTOCOL Protocol,
+ IN PVOID Transaction
);
extern VOID
-RingEnable(
- IN PXENVBD_RING Ring
+ProtocolEnable(
+ IN PXENVBD_PROTOCOL Protocol
);
extern VOID
-RingDisable(
- IN PXENVBD_RING Ring
+ProtocolDisable(
+ IN PXENVBD_PROTOCOL Protocol
);
extern VOID
-RingDisconnect(
- IN PXENVBD_RING Ring
+ProtocolDisconnect(
+ IN PXENVBD_PROTOCOL Protocol
);
extern VOID
-RingTrigger(
- IN PXENVBD_RING Ring
+ProtocolTrigger(
+ IN PXENVBD_PROTOCOL Protocol
);
extern BOOLEAN
-RingQueueRequest(
- IN PXENVBD_RING Ring,
- IN PXENVBD_SRBEXT SrbExt
+ProtocolQueueRequest(
+ IN PXENVBD_PROTOCOL Protocol,
+ IN PXENVBD_SRBEXT SrbExt
);
extern VOID
-RingQueueShutdown(
- IN PXENVBD_RING Ring,
- IN PXENVBD_SRBEXT SrbExt
+ProtocolQueueShutdown(
+ IN PXENVBD_PROTOCOL Protocol,
+ IN PXENVBD_SRBEXT SrbExt
);
-#endif // _XENVBD_RING_H
+#endif // _XENVBD_PROTOCOL_H
diff --git a/src/xenvbd/target.c b/src/xenvbd/target.c
index 54ffb93..f6519e3 100644
--- a/src/xenvbd/target.c
+++ b/src/xenvbd/target.c
@@ -217,7 +217,7 @@ TargetReadWrite(
{
PXENVBD_SRBEXT SrbExt = Srb->SrbExtension;
PXENVBD_FRONTEND Frontend = Target->Frontend;
- PXENVBD_RING Ring = FrontendGetRing(Frontend);
+ PXENVBD_PROTOCOL Protocol = FrontendGetProtocol(Frontend);
ULONG64 SectorCount;
ULONG64 SectorStart;
ULONG NumSectors;
@@ -242,7 +242,7 @@ TargetReadWrite(
goto fail4;
Srb->SrbStatus = SRB_STATUS_PENDING;
- return RingQueueRequest(Ring, SrbExt);
+ return ProtocolQueueRequest(Protocol, SrbExt);
fail4:
Error("fail4\n");
@@ -263,7 +263,7 @@ TargetSyncCache(
{
PXENVBD_SRBEXT SrbExt = Srb->SrbExtension;
PXENVBD_FRONTEND Frontend = Target->Frontend;
- PXENVBD_RING Ring = FrontendGetRing(Frontend);
+ PXENVBD_PROTOCOL Protocol = FrontendGetProtocol(Frontend);
Srb->SrbStatus = SRB_STATUS_ERROR;
if (!FrontendGetConnected(Frontend))
@@ -278,7 +278,7 @@ TargetSyncCache(
goto succeed;
Srb->SrbStatus = SRB_STATUS_PENDING;
- return RingQueueRequest(Ring, SrbExt);
+ return ProtocolQueueRequest(Protocol, SrbExt);
succeed:
Srb->SrbStatus = SRB_STATUS_SUCCESS;
@@ -299,7 +299,7 @@ TargetUnmap(
{
PXENVBD_SRBEXT SrbExt = Srb->SrbExtension;
PXENVBD_FRONTEND Frontend = Target->Frontend;
- PXENVBD_RING Ring = FrontendGetRing(Frontend);
+ PXENVBD_PROTOCOL Protocol = FrontendGetProtocol(Frontend);
Srb->SrbStatus = SRB_STATUS_ERROR;
if (!FrontendGetConnected(Frontend))
@@ -312,7 +312,7 @@ TargetUnmap(
goto succeed;
Srb->SrbStatus = SRB_STATUS_PENDING;
- return RingQueueRequest(Ring, SrbExt);
+ return ProtocolQueueRequest(Protocol, SrbExt);
succeed:
Srb->SrbStatus = SRB_STATUS_SUCCESS;
@@ -980,7 +980,11 @@ TargetFlush(
IN PXENVBD_SRBEXT SrbExt
)
{
- RingQueueShutdown(FrontendGetRing(Target->Frontend), SrbExt);
+ PXENVBD_PROTOCOL Protocol;
+
+ Protocol = FrontendGetProtocol(Target->Frontend);
+ ProtocolQueueShutdown(Protocol,
+ SrbExt);
}
VOID
@@ -989,7 +993,11 @@ TargetShutdown(
IN PXENVBD_SRBEXT SrbExt
)
{
- RingQueueShutdown(FrontendGetRing(Target->Frontend), SrbExt);
+ PXENVBD_PROTOCOL Protocol;
+
+ Protocol = FrontendGetProtocol(Target->Frontend);
+ ProtocolQueueShutdown(Protocol,
+ SrbExt);
}
VOID
diff --git a/vs2015/xenvbd/xenvbd.vcxproj b/vs2015/xenvbd/xenvbd.vcxproj
index a85e65b..0939769 100644
--- a/vs2015/xenvbd/xenvbd.vcxproj
+++ b/vs2015/xenvbd/xenvbd.vcxproj
@@ -72,7 +72,7 @@
<ClCompile Include="../../src/xenvbd/base64.c" />
<ClCompile Include="../../src/xenvbd/queue.c" />
<ClCompile Include="../../src/xenvbd/thread.c" />
- <ClCompile Include="../../src/xenvbd/ring.c" />
+ <ClCompile Include="../../src/xenvbd/protocol.c" />
<ClCompile Include="../../src/xenvbd/granter.c" />
</ItemGroup>
<ItemGroup>
diff --git a/vs2017/xenvbd/xenvbd.vcxproj b/vs2017/xenvbd/xenvbd.vcxproj
index 74af5fc..79e7c28 100644
--- a/vs2017/xenvbd/xenvbd.vcxproj
+++ b/vs2017/xenvbd/xenvbd.vcxproj
@@ -80,7 +80,7 @@
<ClCompile Include="../../src/xenvbd/base64.c" />
<ClCompile Include="../../src/xenvbd/queue.c" />
<ClCompile Include="../../src/xenvbd/thread.c" />
- <ClCompile Include="../../src/xenvbd/ring.c" />
+ <ClCompile Include="../../src/xenvbd/protocol.c" />
<ClCompile Include="../../src/xenvbd/granter.c" />
</ItemGroup>
<ItemGroup>
--
2.16.2.windows.1
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |