Index: /trunk/src/VBox/VMM/PDMAsyncCompletionFileCache.cpp
===================================================================
--- /trunk/src/VBox/VMM/PDMAsyncCompletionFileCache.cpp	(revision 27523)
+++ /trunk/src/VBox/VMM/PDMAsyncCompletionFileCache.cpp	(revision 27524)
@@ -1873,5 +1873,4 @@
             }
             else
-#endif
             {
                 /*
@@ -1879,5 +1878,5 @@
                  * Pass the request directly to the I/O manager.
                  */
-                //LogFlow(("Couldn't evict %u bytes from the cache. Remaining request will be passed through\n", cbToRead));
+                LogFlow(("Couldn't evict %u bytes from the cache. Remaining request will be passed through\n", cbToRead));
 
                 pdmacFileEpCacheRequestPassthrough(pEndpoint, pTask,
@@ -1885,4 +1884,25 @@
                                                    PDMACTASKFILETRANSFER_READ);
             }
+#else
+            /* Clip read size if neccessary. */
+            PPDMACFILECACHEENTRY pEntryAbove;
+            pdmacFileEpCacheGetCacheBestFitEntryByOffset(pEndpointCache, off,
+                                                         &pEntryAbove, NULL);
+
+            if (pEntryAbove)
+            {
+                if (off + (RTFOFF)cbRead > pEntryAbove->Core.Key)
+                    cbToRead = pEntryAbove->Core.Key - off;
+                else
+                    cbToRead = cbRead;
+
+                pdmacFileEpCacheEntryRelease(pEntryAbove);
+            }
+
+            cbRead -= cbToRead;
+            pdmacFileEpCacheRequestPassthrough(pEndpoint, pTask,
+                                                &IoMemCtx, off, cbToRead,
+                                                PDMACTASKFILETRANSFER_READ);
+#endif
         }
         off += cbToRead;
