Spanned Virtual Disk Initialization via Dynamic Controller Counting
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing information handling systems face challenges in initializing spanned virtual disks with a dynamic number of storage controllers, leading to potential boot failures and data loss due to uncertainties in determining the number of physical storage devices available for virtual disk creation.
Innovation Solution
Implementing a filter driver that enumerates a PCI/PCIe device tree to count supported storage controllers, using a serial number for unique identification, and maintaining an ignore list to adjust for driver installations/uninstallations, ensuring accurate determination of physical storage devices before virtual disk creation.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If the system attempts to initialize a spanned virtual disk before determining the exact number of storage controllers, then the initialization process can start earlier, but the system may encounter boot failures and data loss due to uncertainty in the number of physical storage devices
Solution Approach 1:
The filter driver performs preliminary actions by enumerating the PCI/PCIe device tree and counting storage controllers before the spanned virtual disk initialization process begins. This preliminary counting ensures that the initialization waits for all storage devices to be available, preventing boot failures while still enabling early startup once the count is confirmed.
Solution Approach 2:
The filter driver acts as an intermediary between the storage miniport driver and the physical storage devices. It intercepts the initialization process, performs the device tree enumeration and controller counting, and only then allows the virtual disk initialization to proceed. This intermediary role resolves the contradiction by mediating between early initialization desires and reliability requirements.
2Device complexity
If the system uses a fixed method to count storage controllers without accounting for driver installations/uninstallations, then the counting process is simpler, but the count may be inaccurate leading to initialization failures
Solution Approach 1:
The filter driver implements feedback by monitoring the installation and uninstallation of storage miniport drivers. When a driver is installed or uninstalled, the filter driver receives notification and recalculates the count of storage controllers by re-enumerating the device tree. This feedback mechanism ensures the count remains accurate without requiring complex manual intervention.
Solution Approach 2:
The filter driver performs self-service by automatically detecting driver installation/uninstallation events and adjusting the storage controller count accordingly. It maintains an internal state of the device tree and autonomously updates its counting logic without external intervention, balancing simplicity with accuracy.
3Measurement precision
If the system enumerates the entire PCI/PCIe device tree to count storage controllers, then the count is accurate, but the process takes more time and consumes more resources
Solution Approach 1:
The filter driver performs the device tree enumeration as a preliminary action during system startup, before the spanned virtual disk initialization begins. By completing the enumeration early and caching the results, the system achieves accurate counting without delaying the subsequent initialization process, thus reducing perceived initialization time while maintaining precision.
Solution Approach 2:
The filter driver performs a complete device tree enumeration (excessive action) initially to ensure accuracy, but then uses cached results for subsequent counting operations. This approach accepts the one-time resource cost of full enumeration while avoiding repeated expensive operations, effectively reducing overall initialization time while maintaining measurement precision.
Data Source
AI summary
An information handling system generates a tree of peripheral component interconnect devices of the information handling system, and determines a count of storage controllers supported by a storage miniport driver based on the tree of the peripheral component interconnect devices. If a list of uninstalled miniport drivers is not empty, then the system deducts a number of the uninstalled miniport drivers in the list from the count of the storage controllers resulting in a final count of the storage controllers that are supported by the storage miniport driver.


