Potential Data Loss Because of Lack of Shutdown Notification (286733)



The information in this article applies to:

  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional

This article was previously published under Q286733

SYMPTOMS

Typically, for a volume with a basic disk signature, Scsiport.sys sends a hwStartIo SRB_FUNCTION_SHUTDOWN event to the SCSI miniport (for each volume). This allows the miniport to initiate any shutdown processing.

For a volume with a dynamic disk signature, the expected hwStartIo SRB_FUNCTION_SHUTDOWN event does not occur for any of the dynamic-formatted volumes if PORT_CONFIGURATION_INFORMATION CachesData=TRUE has been specified.

This causes a potential for data loss. If you build a caching controller that is based on the Microsoft specification that says that the controller will be notified before a shutdown event, you could possibly build in a reliance on that command for proper operation of the cache or other internal operations.

CAUSE

In the case of a RAID controller adapter, there are three issues that may occur:
  • The controller relies on the shutdown IRP to clear the write-back cache that is enabled on the disk. When a cache flush command is issued to a volume, it simply flushes the controller cache. Only when it receives a shutdown command from the operating system does it flush any disk cache that may have been enabled.
  • The controller relies on the shutdown IRP to clear the controller cache. This is less of an issue because the operating system still sends cache flush commands, but there is the possibility that any data that is written after the last cache flush before power is removed could be lost. The shutdown needs to be the last command sent by the operating system.
  • Because the described shutdown event does not get signaled, the final volume cleanup and shutdown does not occur. So, if you are using a dynamic signature on a RAID5 volume, it will most likely always reinitialize the RAID5 volume on a restart because of a method that is used to ensure parity coherency.
This behavior is really a result of relying on the shutdown command that the Windows 2000 code is supposed to send. The re-initialization of a RAID volume could take hours, significantly affecting performance, and potentially causing data loss. The situation is usually recoverable by reactivating the failed volume and running chkdsk against the effected volume(s).

RESOLUTION

To resolve this problem, obtain the latest service pack for Windows 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

260910 How to Obtain the Latest Windows 2000 Service Pack

The English version of this fix should have the following file attributes or later:
   Date        Time    Version          Size     File name
   -------------------------------------------------------
   3/7/2001    03:21p  2195.3333.297.3  137,936  Dmio.sys 
				

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Windows 2000 Service Pack 3.

MORE INFORMATION

For additional information about how to obtain a hotfix for Windows 2000 Datacenter Server, click the article number below to view the article in the Microsoft Knowledge Base:

265173 The Datacenter Program and Windows 2000 Datacenter Server Product

For additional information about how to install multiple hotfixes with only one reboot, click the article number below to view the article in the Microsoft Knowledge Base:

296861 Use QChain.exe to Install Multiple Hotfixes with One Reboot

For additional information about how to install Windows 2000 and Windows 2000 hotfixes at the same time, click the article number below to view the article in the Microsoft Knowledge Base:

249149 Installing Microsoft Windows 2000 and Windows 2000 Hotfixes


Modification Type:MinorLast Reviewed:9/26/2005
Keywords:kbHotfixServer kbQFE kbbug kbfix kbOSWin2000fix kbWin2000PreSP3Fix kbWin2000sp3fix KB286733