Index: /trunk/src/VBox/Devices/Storage/VmdkHDDCore.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/VmdkHDDCore.cpp	(revision 27475)
+++ /trunk/src/VBox/Devices/Storage/VmdkHDDCore.cpp	(revision 27476)
@@ -579,4 +579,6 @@
     }
     pVmdkFile->fOpen = fOpen;
+
+#ifndef VBOX_WITH_NEW_IO_CODE
     if ((pImage->uOpenFlags & VD_OPEN_FLAGS_ASYNC_IO) && (fAsyncIO))
     {
@@ -596,4 +598,14 @@
         pVmdkFile->fAsyncIO = false;
     }
+#else
+    rc = pImage->pInterfaceAsyncIOCallbacks->pfnOpen(pImage->pInterfaceAsyncIO->pvUser,
+                                                        pszFilename,
+                                                        pImage->uOpenFlags & VD_OPEN_FLAGS_READONLY
+                                                        ? VD_INTERFACEASYNCIO_OPEN_FLAGS_READONLY
+                                                        : 0,
+                                                        NULL,
+                                                        pImage->pVDIfsDisk,
+                                                        &pVmdkFile->pStorage);
+#endif
     if (RT_SUCCESS(rc))
     {
@@ -645,4 +657,5 @@
             pImage->pFiles = pNext;
 
+#ifndef VBOX_WITH_NEW_IO_CODE
         if (pVmdkFile->fAsyncIO)
         {
@@ -654,4 +667,8 @@
             rc = RTFileClose(pVmdkFile->File);
         }
+#else
+        rc = pImage->pInterfaceAsyncIOCallbacks->pfnClose(pImage->pInterfaceAsyncIO->pvUser,
+                                                          pVmdkFile->pStorage);
+#endif
         if (RT_SUCCESS(rc) && pVmdkFile->fDelete)
             rc = RTFileDelete(pVmdkFile->pszFilename);
@@ -673,4 +690,5 @@
     PVMDKIMAGE pImage = pVmdkFile->pImage;
 
+#ifndef VBOX_WITH_NEW_IO_CODE
     if (pVmdkFile->fAsyncIO)
         return pImage->pInterfaceAsyncIOCallbacks->pfnReadSync(pImage->pInterfaceAsyncIO->pvUser,
@@ -679,4 +697,9 @@
     else
         return RTFileReadAt(pVmdkFile->File, uOffset, pvBuf, cbToRead, pcbRead);
+#else
+    return pImage->pInterfaceAsyncIOCallbacks->pfnReadSync(pImage->pInterfaceAsyncIO->pvUser,
+                                                               pVmdkFile->pStorage, uOffset,
+                                                               cbToRead, pvBuf, pcbRead);
+#endif
 }
 
@@ -690,4 +713,5 @@
     PVMDKIMAGE pImage = pVmdkFile->pImage;
 
+#ifndef VBOX_WITH_NEW_IO_CODE
     if (pVmdkFile->fAsyncIO)
         return pImage->pInterfaceAsyncIOCallbacks->pfnWriteSync(pImage->pInterfaceAsyncIO->pvUser,
@@ -696,4 +720,9 @@
     else
         return RTFileWriteAt(pVmdkFile->File, uOffset, pvBuf, cbToWrite, pcbWritten);
+#else
+        return pImage->pInterfaceAsyncIOCallbacks->pfnWriteSync(pImage->pInterfaceAsyncIO->pvUser,
+                                                                pVmdkFile->pStorage, uOffset,
+                                                                cbToWrite, pvBuf, pcbWritten);
+#endif
 }
 
@@ -705,4 +734,5 @@
     PVMDKIMAGE pImage = pVmdkFile->pImage;
 
+#ifndef VBOX_WITH_NEW_IO_CODE
     if (pVmdkFile->fAsyncIO)
     {
@@ -713,4 +743,9 @@
     else
         return RTFileGetSize(pVmdkFile->File, pcbSize);
+#else
+    return pImage->pInterfaceAsyncIOCallbacks->pfnGetSize(pImage->pInterfaceAsyncIO->pvUser,
+                                                            pVmdkFile->pStorage,
+                                                            pcbSize);
+#endif
 }
 
@@ -722,4 +757,5 @@
     PVMDKIMAGE pImage = pVmdkFile->pImage;
 
+#ifndef VBOX_WITH_NEW_IO_CODE
     if (pVmdkFile->fAsyncIO)
     {
@@ -730,4 +766,9 @@
     else
         return RTFileSetSize(pVmdkFile->File, cbSize);
+#else
+    return pImage->pInterfaceAsyncIOCallbacks->pfnSetSize(pImage->pInterfaceAsyncIO->pvUser,
+                                                          pVmdkFile->pStorage,
+                                                          cbSize);
+#endif
 }
 
@@ -739,4 +780,5 @@
     PVMDKIMAGE pImage = pVmdkFile->pImage;
 
+#ifndef VBOX_WITH_NEW_IO_CODE
     if (pVmdkFile->fAsyncIO)
         return pImage->pInterfaceAsyncIOCallbacks->pfnFlushSync(pImage->pInterfaceAsyncIO->pvUser,
@@ -744,4 +786,8 @@
     else
         return RTFileFlush(pVmdkFile->File);
+#else
+    return pImage->pInterfaceAsyncIOCallbacks->pfnFlushSync(pImage->pInterfaceAsyncIO->pvUser,
+                                                            pVmdkFile->pStorage);
+#endif
 }
 
