Disable flushing if the device doesn't support it or if it isn't enabled.
Modified: trunk/reactos/drivers/storage/atapi/atapi.c

Modified: trunk/reactos/drivers/storage/atapi/atapi.c
--- trunk/reactos/drivers/storage/atapi/atapi.c	2005-09-28 18:56:01 UTC (rev 18138)
+++ trunk/reactos/drivers/storage/atapi/atapi.c	2005-09-28 19:34:07 UTC (rev 18139)
@@ -1171,6 +1171,11 @@
 		  DeviceExtension->DeviceFlags[UnitNumber] |= DEVICE_DMA_CMD;
 		}
 #endif
+              if (!(DeviceExtension->DeviceParams[UnitNumber].SupportedFeatures83 & 0x1000) ||
+		  !(DeviceExtension->DeviceParams[UnitNumber].EnabledFeatures86 & 0x1000))
+                {
+                  DeviceExtension->DeviceFlags[UnitNumber] |= DEVICE_NO_FLUSH;                      
+                }
 	      DeviceFound = TRUE;
 	    }
 	  else
@@ -1212,6 +1217,22 @@
 		  DeviceExtension->DeviceFlags[UnitNumber] |= DEVICE_DMA_CMD;
 		}
 #endif
+              if (DeviceExtension->DeviceFlags[UnitNumber] & DEVICE_48BIT_ADDRESS)
+                {
+                  if (!(DeviceExtension->DeviceParams[UnitNumber].SupportedFeatures83 & 0x2000) ||
+		      !(DeviceExtension->DeviceParams[UnitNumber].EnabledFeatures86 & 0x2000))
+                    {
+                      DeviceExtension->DeviceFlags[UnitNumber] |= DEVICE_NO_FLUSH;                      
+                    }
+                }
+              else
+                {
+                  if (!(DeviceExtension->DeviceParams[UnitNumber].SupportedFeatures83 & 0x1000) ||
+		      !(DeviceExtension->DeviceParams[UnitNumber].EnabledFeatures86 & 0x1000))
+                    {
+                      DeviceExtension->DeviceFlags[UnitNumber] |= DEVICE_NO_FLUSH;                      
+                    }
+                }
 	      DeviceFound = TRUE;
 	    }
 	  else
@@ -2311,12 +2332,8 @@
        * it doesn't make sense to flush cache on devices we don't
        * write to.
        */
-      return SRB_STATUS_INVALID_REQUEST;
-    }
-
-  if (!(DeviceExtension->DeviceParams[Srb->TargetId].SupportedFeatures83 & 0x1000))
-    {
-      /* The device states it doesn't support the command */
+       
+      /* The device states it doesn't support the command or it is disabled */      
       DPRINT("The drive doesn't support FLUSH_CACHE\n");
       return SRB_STATUS_INVALID_REQUEST;
     }