[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[win-pv-devel] [PATCH 1/7] Make interface exposure explicit



Add pass-through query for XenBus's Cache interface and
account for interface versions when determining the revision(s).
Do not pass through any other queries, as the revision is not
accounted for.

Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
 src/xenvif/pdo.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/xenvif/pdo.c b/src/xenvif/pdo.c
index c07c66e..90c08e9 100644
--- a/src/xenvif/pdo.c
+++ b/src/xenvif/pdo.c
@@ -547,7 +547,7 @@ __PdoSetRevisions(
     IN  PXENVIF_PDO Pdo
     )
 {
-    ULONG           Vif;
+    ULONG           Cache;
     ULONG           Revision;
     NTSTATUS        status;
 
@@ -559,15 +559,20 @@ __PdoSetRevisions(
     // even when a particular combination of interface versions becomes
     // unsupported. (See README.md for API versioning policy).
 
-    for (Vif = 1; Vif <= XENVIF_VIF_INTERFACE_VERSION_MAX; Vif++) {
-        Revision++;
+    for (Cache = 1; Cache <= XENBUS_CACHE_INTERFACE_VERSION_MAX; Cache++) {
+        ULONG       Vif;
 
-        if (Vif >= XENVIF_VIF_INTERFACE_VERSION_MIN) {
-            status = __PdoAddRevision(Pdo, Revision);
-            if (!NT_SUCCESS(status))
-                goto fail1;
+        for (Vif = 1; Vif <= XENVIF_VIF_INTERFACE_VERSION_MAX; Vif++) {
+            Revision++;
+
+            if (Vif >= XENVIF_VIF_INTERFACE_VERSION_MIN &&
+                Cache >= XENBUS_CACHE_INTERFACE_VERSION_MIN) {
+                status = __PdoAddRevision(Pdo, Revision);
+                if (!NT_SUCCESS(status))
+                    goto fail1;
+            }
         }
-    }                             
+    }
 
     ASSERT(Pdo->Count > 0);
     return STATUS_SUCCESS;
@@ -1543,6 +1548,7 @@ struct _INTERFACE_ENTRY {
 struct _INTERFACE_ENTRY PdoInterfaceTable[] = {
     { &GUID_BUS_INTERFACE_STANDARD, "BUS_INTERFACE", PdoQueryBusInterface },
     { &GUID_XENVIF_VIF_INTERFACE, "VIF_INTERFACE", PdoQueryVifInterface },
+    { &GUID_XENBUS_CACHE_INTERFACE, "CACHE_INTERFACE", __PdoDelegateIrp },
     { NULL, NULL, NULL }
 };
 
@@ -1578,8 +1584,6 @@ PdoQueryInterface(
         }
     }
 
-    status = __PdoDelegateIrp(Pdo, Irp);
-
 done:
     Irp->IoStatus.Status = status;
     IoCompleteRequest(Irp, IO_NO_INCREMENT);
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.