[aoe/bus] Don't use AoeBusPdo global
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Fri, 7 Jan 2011 14:56:51 +0000 (09:56 -0500)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Fri, 7 Jan 2011 15:00:13 +0000 (10:00 -0500)
Use the WVL_S_BUS_T::Pdo, instead.

We don't demand that we are associated with a PDO on the
WinVBlock bus any more.

src/aoe/bus.c
src/aoe/driver.c

index 0c4253d..6606a36 100644 (file)
@@ -54,7 +54,6 @@ VOID AoeBusFree(void);
 
 /* Globals. */
 WVL_S_BUS_T AoeBusMain = {0};
-PDEVICE_OBJECT AoeBusPdo = NULL;
 static UNICODE_STRING AoeBusName_ = {
     sizeof AOE_M_BUS_NAME_ - sizeof (WCHAR),
     sizeof AOE_M_BUS_NAME_ - sizeof (WCHAR),
@@ -142,9 +141,7 @@ VOID AoeBusFree(void) {
     IoDeleteSymbolicLink(&AoeBusDosname_);
     if (AoeBusMain.Fdo)
       IoDeleteDevice(AoeBusMain.Fdo);
-    if (AoeBusPdo)
-      WvDummyRemove(AoeBusPdo);
-    AoeBusPdo = NULL;
+    WvlBusClear(&AoeBusMain);
     return;
   }
 
@@ -255,12 +252,6 @@ NTSTATUS STDCALL AoeBusAttachFdo(
         status = STATUS_NOT_SUPPORTED;
         goto err_already_established;
       }
-    /* Is this the PDO we requested from the WinVBlock bus? */
-    if (pdo != AoeBusPdo) {
-        DBG("PDO is not on the WinVBlock bus.\n");
-        status = STATUS_NOT_SUPPORTED;
-        goto err_invalid_pdo;
-      }
     /* Set associations for the bus, FDO, PDO. */
     AoeBusMain.Pdo = pdo;
     /* Attach the FDO to the PDO. */
@@ -280,8 +271,6 @@ NTSTATUS STDCALL AoeBusAttachFdo(
 
     err_attach:
 
-    err_invalid_pdo:
-
     err_already_established:
 
     DBG("Exit with failure\n");
@@ -341,6 +330,7 @@ static NTSTATUS AoeBusCreatePdo_(void) {
  */
 NTSTATUS AoeBusCreate(IN PDRIVER_OBJECT driver_obj) {
     NTSTATUS status;
+    KIRQL irql;
 
     /* Do we already have our main bus? */
     if (AoeBusMain.Fdo) {
@@ -396,8 +386,7 @@ NTSTATUS AoeBusCreate(IN PDRIVER_OBJECT driver_obj) {
     IoDeleteDevice(AoeBusMain.Fdo);
     err_fdo:
 
-    /* TODO: Remove dummy PDO. */
-    AoeBusPdo = NULL;
+    /* Difficult to remova the PDO if we don't know what it is... */
     err_pdo:
 
     DBG("Exit with failure\n");
index c7cf1d8..01c5ae2 100644 (file)
@@ -48,7 +48,6 @@
 
 /* From aoe/bus.c */
 extern WVL_S_BUS_T AoeBusMain;
-extern PDEVICE_OBJECT AoeBusPdo;
 extern NTSTATUS AoeBusCreate(IN PDRIVER_OBJECT);
 extern VOID AoeBusFree(void);
 extern NTSTATUS STDCALL AoeBusDevCtl(IN PIRP, IN ULONG POINTER_ALIGNMENT);
@@ -1936,14 +1935,8 @@ static NTSTATUS AoeIrpPnp(
 
     WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
-    if (dev_obj == AoeBusMain.Fdo) {
-        NTSTATUS status;
-
-        status = WvlBusPnp(&AoeBusMain, irp);
-        if (NT_SUCCESS(status) && (code == IRP_MN_REMOVE_DEVICE))
-          AoeBusPdo = NULL;
-        return status;
-      }
+    if (dev_obj == AoeBusMain.Fdo)
+      return WvlBusPnp(&AoeBusMain, irp);
     /* WvDevFromDevObj() checks for a NULL dev_obj */
     dev = WvDevFromDevObj(dev_obj);
     /* Check that the device exists. */