Dmio reports Event ID 30 with status of 0xC000009A (329075)



The information in this article applies to:

  • Microsoft Windows 2000 Server SP1
  • Microsoft Windows 2000 Server SP3
  • Microsoft Windows 2000 Server SP2
  • Microsoft Windows 2000 Advanced Server SP1
  • Microsoft Windows 2000 Advanced Server SP2
  • Microsoft Windows 2000 Advanced Server SP3

This article was previously published under Q329075
Important This article contains information about how to modify the registry. Make sure to back up the registry before you modify it. Make sure that you know how to restore the registry if a problem occurs. For more information about how to back up, restore, and modify the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows registry

SYMPTOMS

When you use dynamic disks, you may receive the following Dmio event log entries, which may lead to data corruption, database corruption, or file system corruption on one or more dynamic disk volumes, or may cause application failures:

Event Type:	Information
Event Source:	dmio
Event Category:	None
Event ID:	29
Date:		MM/DD/YYYY
Time:		HH:MM:SS AM/PM
User:		N/A
Computer:       Computer_Name
Description:
dmio: Harddisk9 read error at block 445136247: status 0xC000009A 


Event Type:	Warning
Event Source:	dmio
Event Category:	None
Event ID:	35
Date:		MM/DD/YYYY
Time:		HH:MM:SS AM/PM
User:		N/A
Computer:       Computer_Name
Description:
dmio: Disk Harddisk9 block 445136247 (mountpoint F:): Uncorrectable read error 


Event Type:	Information
Event Source:	dmio
Event Category:	None
Event ID:	30
Date:		MM/DD/YYYY
Time:		HH:MM:SS AM/PM
User:		N/A
Computer:       Computer_Name
Description:
dmio: Harddisk2 write error at block 411779656: status 0xC000009A
				

NOTES
  • The Status code is always 0xC000009A - STATUS_INSUFFICIENT_RESOURCES, and the block numbers vary.
  • Although Ftdisk.sys is used for basic disks, Windows 2000 does not report similar events under the same circumstances, so lack of PTE resources may also cause volume corruption or data corruption on basic disks.

CAUSE

This problem occurs because of a combination of conditions or factors, which include:
  • The computer uses the /3GB setting in the Boot.ini file. This setting substantially reduces the total number of Page Table Entries (PTEs) that are available to the kernel.
  • The computer uses a storage adapter that can handle many simultaneous requests (up to 0xFF - 255 decimal).
  • The storage adapter driver must map a buffer for each request that the SCSI miniport dispatches. When the SCSI miniport dispatches a high number of large requests, the system runs out of PTEs.
  • The storage stack on Windows 2000 does not guarantee forward progress under memory pressure.
The failures occur after the following sequence:
  1. An application sends the adapter a very large I/O request.
  2. The class driver splits up this request based on the maximum transfers the adapter can handle.
  3. For each piece of the request that the class driver sends to the port driver, the class driver sends an I/O request packet (IRP) by using the original MDL that represents the whole buffer.
  4. The port driver maps the whole buffer for each of these pieces.
  5. Because the adapter can handle many requests and also maps redundant copies of these large buffers, the system eventually runs out of PTE resources.

RESOLUTION

To resolve this problem, use one of the following methods:

Method 1: Modify the Registry

Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall your operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.
Reduce the concurrent I/O requests that are permitted by the mass storage controller. To do this, follow these steps:
  1. Start Registry Editor.
  2. Locate and then click the following registry entry, where Storage_Driver_Name is the name of the miniport driver, such as AIC78xx:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Storage_Driver_Name\Parameters\Device\NumberOfRequests

  3. Modify the REG_DWORD value for the NumberOfRequests entry. To do this, reduce the number to between 16 and 255 decimal. This number represents the maximum number of outstanding requests on a bus. Use this adjustment sparingly because the per-request storage allocations consume non-paged memory.

    Note None of the drivers that are included with Windows 2000 use that key, and if the key is not present, the number of simultaneous requests defaults to 0x10 (16 decimal).
For more information about modifying this registry key, click the following article number to view the article in the Microsoft Knowledge Base:

240314 INFO: Restriction on the Number of Concurrent I/O Requests Setting

Method 2: Modify the Boot.ini File

Remove the /3GB switch from the Boot.ini file, and then restart the computer.

Method 3: Use the /USERVA Switch in the Boot.ini File (Windows 2003 only)

For more information about how to use the /USERVA switch in the Boot.ini file, click the following article number to view the article in the Microsoft Knowledge Base:

316739 How to Use the /USERVA Switch in the Boot.ini File to Tune /3GB Configurations

The following Windows 2003 fix may also impact PTE usage and help eliminate the errors:

831899 You receive a "stop 0x000000DA" error message on a blue screen after you enable PTE tracking on a Windows Server 2003-based node

MORE INFORMATION

For more information, click the following article numbers to view the articles in the Microsoft Knowledge Base:

247904 How to Configure the Paged Address Pool and System Page Table Entry Memory Areas

274750 HOW TO: Configure Memory for More Than 2 GB in SQL Server


Modification Type:MajorLast Reviewed:7/5/2005
Keywords:kbprb KB329075