[ramdisk] Don't track RAM disks globally
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Sat, 8 Jan 2011 23:50:57 +0000 (18:50 -0500)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Sat, 8 Jan 2011 23:50:57 +0000 (18:50 -0500)
src/include/ramdisk.h
src/winvblock/driver.c
src/winvblock/ramdisk/ramdisk.c

index f2fc540..6a179ab 100644 (file)
@@ -33,8 +33,6 @@ typedef struct WV_RAMDISK_T {
     LIST_ENTRY tracking;
   } WV_S_RAMDISK_T, * WV_SP_RAMDISK_T;
 
-extern NTSTATUS ramdisk__module_init(void);
-
 /**
  * Create a new RAM disk
  *
index b85e2ba..cfd20ed 100644 (file)
@@ -189,8 +189,6 @@ NTSTATUS STDCALL DriverEntry(
     DriverObject->DriverUnload = WvUnload;
     /* Set the driver AddDevice callback. */
     DriverObject->DriverExtension->AddDevice = WvAttachFdo;
-    /* Initialize various modules. */
-    ramdisk__module_init();     /* TODO: Check for error. */
 
     /* Establish the bus PDO. */
     status = WvBusEstablish(RegistryPath);
index 0250219..0b599a1 100644 (file)
 #define ramdisk_get_ptr( dev_ptr ) \
   ( ( WV_SP_RAMDISK_T ) ( disk__get_ptr ( dev_ptr ) )->ext )
 
-/* Globals. */
-static LIST_ENTRY ramdisk_list;
-static KSPIN_LOCK ramdisk_list_lock;
-
-/* Forward declarations. */
+/** Private. */
 static WV_F_DEV_FREE free_ramdisk;
 static WV_F_DISK_IO io;
 
@@ -180,11 +176,6 @@ WV_SP_RAMDISK_T ramdisk__create(void) {
   ramdisk_ptr = wv_mallocz(sizeof *ramdisk_ptr);
   if ( ramdisk_ptr == NULL )
     goto err_noramdisk;
-  /*
-   * Track the new RAM disk in our global list
-   */
-  ExInterlockedInsertTailList ( &ramdisk_list, &ramdisk_ptr->tracking,
-                               &ramdisk_list_lock );
   /*
    * Populate non-zero device defaults
    */
@@ -206,19 +197,6 @@ err_nodisk:
   return NULL;
 }
 
-/**
- * Initialize the global, RAM disk-common environment.
- *
- * @ret ntstatus        STATUS_SUCCESS or the NTSTATUS for a failure.
- */
-NTSTATUS ramdisk__module_init(void) {
-    /* Initialize the global list of RAM disks. */
-    InitializeListHead(&ramdisk_list);
-    KeInitializeSpinLock(&ramdisk_list_lock);
-
-    return STATUS_SUCCESS;
-  }
-
 /**
  * Default RAM disk deletion operation.
  *
@@ -229,15 +207,6 @@ static VOID STDCALL free_ramdisk(IN WV_SP_DEV_T dev_ptr) {
     WV_SP_RAMDISK_T ramdisk_ptr = ramdisk_get_ptr(dev_ptr);
     /* Free the "inherited class". */
     ramdisk_ptr->prev_free(dev_ptr);
-    /*
-     * Track the RAM disk deletion in our global list.  Unfortunately,
-     * for now we have faith that a RAM disk won't be deleted twice and
-     * result in a race condition.  Something to keep in mind...
-     */
-    ExInterlockedRemoveHeadList(
-        ramdisk_ptr->tracking.Blink,
-                       &ramdisk_list_lock
-      );
   
     wv_free(ramdisk_ptr);
   }