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

index a906e8b..a88d4e3 100644 (file)
@@ -171,6 +171,4 @@ extern WVL_M_LIB VOID disk__guess_geometry(
 extern WVL_M_LIB VOID STDCALL WvDiskInit(IN WV_SP_DISK_T);
 extern WVL_M_LIB WV_SP_DISK_T disk__create(void);
 
-extern NTSTATUS disk__module_init(void);
-
 #endif  /* WV_M_DISK_H_ */
index 3c91671..aef8d28 100644 (file)
@@ -58,8 +58,6 @@ static WV_F_DISK_INIT WvDiskDefaultInit_;
 static WV_F_DISK_CLOSE WvDiskDefaultClose_;
 
 /* Globals. */
-static LIST_ENTRY WvDiskList_;
-static KSPIN_LOCK WvDiskListLock_;
 BOOLEAN WvDiskIsRemovable[WvlDiskMediaTypes] = { TRUE, FALSE, TRUE };
 PWCHAR WvDiskCompatIds[WvlDiskMediaTypes] = {
     L"GenSFloppy",
@@ -373,13 +371,6 @@ WVL_M_LIB WV_SP_DISK_T disk__create(void) {
     dev = disk->Dev;
     WvDevInit(dev);
 
-    /* Track the new disk in our global list. */
-    ExInterlockedInsertTailList(
-        &WvDiskList_,
-        &disk->tracking,
-        &WvDiskListLock_
-      );
-
     /* Initialize with defaults. */
     WvDiskInit(disk);
     dev->Ops.Close = WvDiskDevClose_;
@@ -396,19 +387,6 @@ WVL_M_LIB WV_SP_DISK_T disk__create(void) {
     return NULL;
   }
 
-/**
- * Initialize the global, disk-common environment.
- *
- * @ret ntstatus        STATUS_SUCCESS or the NTSTATUS for a failure.
- */
-NTSTATUS disk__module_init(void) {
-    /* Initialize the global list of disks. */
-    InitializeListHead(&WvDiskList_);
-    KeInitializeSpinLock(&WvDiskListLock_);
-
-    return STATUS_SUCCESS;
-  }
-
 /**
  * Default disk deletion operation.
  *
@@ -417,13 +395,6 @@ NTSTATUS disk__module_init(void) {
 static VOID STDCALL WvDiskDevFree_(IN WV_SP_DEV_T dev) {
     WV_SP_DISK_T disk = disk__get_ptr(dev);
 
-    /*
-     * Track the disk deletion in our global list.  Unfortunately,
-     * for now we have faith that a disk won't be deleted twice and
-     * result in a race condition.  Something to keep in mind...
-     */
-    ExInterlockedRemoveHeadList(disk->tracking.Blink, &WvDiskListLock_);
-
     wv_free(disk);
   }
 
index a417441..75e1386 100644 (file)
@@ -190,7 +190,6 @@ NTSTATUS STDCALL DriverEntry(
     /* Set the driver AddDevice callback. */
     DriverObject->DriverExtension->AddDevice = WvAttachFdo;
     /* Initialize various modules. */
-    disk__module_init();        /* TODO: Check for error. */
     WvFilediskModuleInit();     /* TODO: Check for error. */
     ramdisk__module_init();     /* TODO: Check for error. */