Index: trunk/src/VBox/Runtime/common/fs/extvfs.cpp
===================================================================
--- trunk/src/VBox/Runtime/common/fs/extvfs.cpp	(revision 99739)
+++ trunk/src/VBox/Runtime/common/fs/extvfs.cpp	(revision 100908)
@@ -1716,5 +1716,5 @@
  * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
  */
-static DECLCALLBACK(int) rtFsExtFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
+static DECLCALLBACK(int) rtFsExtFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
 {
     PRTFSEXTFILE pThis = (PRTFSEXTFILE)pvThis;
@@ -1733,5 +1733,8 @@
         rc = rtFsExtInode_Read(pThis->pVol, pThis->pInode, (uint64_t)off, pSgBuf->paSegs[0].pvSeg, cbRead, NULL);
         if (RT_SUCCESS(rc))
+        {
             pThis->offFile = off + cbRead;
+            RTSgBufAdvance(pSgBuf, cbRead);
+        }
         Log6(("rtFsExtFile_Read: off=%#RX64 cbSeg=%#x -> %Rrc\n", off, pSgBuf->paSegs[0].cbSeg, rc));
     }
@@ -1760,4 +1763,5 @@
                 pThis->offFile = off + cbRead;
                 *pcbRead = cbRead;
+                RTSgBufAdvance(pSgBuf, cbRead);
             }
             else
@@ -1774,5 +1778,5 @@
  * @interface_method_impl{RTVFSIOSTREAMOPS,pfnWrite}
  */
-static DECLCALLBACK(int) rtFsExtFile_Write(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
+static DECLCALLBACK(int) rtFsExtFile_Write(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
 {
     RT_NOREF(pvThis, off, pSgBuf, fBlocking, pcbWritten);
Index: trunk/src/VBox/Runtime/common/fs/fatvfs.cpp
===================================================================
--- trunk/src/VBox/Runtime/common/fs/fatvfs.cpp	(revision 99739)
+++ trunk/src/VBox/Runtime/common/fs/fatvfs.cpp	(revision 100908)
@@ -2165,5 +2165,5 @@
  * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
  */
-static DECLCALLBACK(int) rtFsFatFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
+static DECLCALLBACK(int) rtFsFatFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
 {
     PRTFSFATFILE     pThis   = (PRTFSFATFILE)pvThis;
@@ -2230,4 +2230,5 @@
     if (pcbRead)
         *pcbRead = cbRead;
+    RTSgBufAdvance(pSgBuf, cbRead);
     return rc;
 }
@@ -2327,5 +2328,5 @@
  * @interface_method_impl{RTVFSIOSTREAMOPS,pfnWrite}
  */
-static DECLCALLBACK(int) rtFsFatFile_Write(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
+static DECLCALLBACK(int) rtFsFatFile_Write(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
 {
     PRTFSFATFILE     pThis   = (PRTFSFATFILE)pvThis;
@@ -2401,4 +2402,5 @@
     if (pcbWritten)
         *pcbWritten = cbWritten;
+    RTSgBufAdvance(pSgBuf, cbWritten);
     return rc;
 }
Index: trunk/src/VBox/Runtime/common/fs/isomaker.cpp
===================================================================
--- trunk/src/VBox/Runtime/common/fs/isomaker.cpp	(revision 99739)
+++ trunk/src/VBox/Runtime/common/fs/isomaker.cpp	(revision 100908)
@@ -7280,5 +7280,5 @@
  * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
  */
-static DECLCALLBACK(int) rtFsIsoMakerOutFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
+static DECLCALLBACK(int) rtFsIsoMakerOutFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
 {
     PRTFSISOMAKEROUTPUTFILE pThis     = (PRTFSISOMAKEROUTPUTFILE)pvThis;
@@ -7396,4 +7396,5 @@
     if (pcbRead)
         *pcbRead = cbRead;
+    RTSgBufAdvance(pSgBuf, cbRead);
     return rc;
 }
Index: trunk/src/VBox/Runtime/common/fs/isovfs.cpp
===================================================================
--- trunk/src/VBox/Runtime/common/fs/isovfs.cpp	(revision 99739)
+++ trunk/src/VBox/Runtime/common/fs/isovfs.cpp	(revision 100908)
@@ -2119,5 +2119,5 @@
  * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
  */
-static DECLCALLBACK(int) rtFsIsoFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
+static DECLCALLBACK(int) rtFsIsoFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
 {
     PRTFSISOFILEOBJ  pThis   = (PRTFSISOFILEOBJ)pvThis;
@@ -2140,4 +2140,6 @@
     /* Update the file position and return. */
     pThis->offFile = off + offDelta;
+    RTSgBufAdvance(pSgBuf, offDelta);
+
     return rc;
 #else
Index: trunk/src/VBox/Runtime/common/fs/ntfsvfs.cpp
===================================================================
--- trunk/src/VBox/Runtime/common/fs/ntfsvfs.cpp	(revision 99739)
+++ trunk/src/VBox/Runtime/common/fs/ntfsvfs.cpp	(revision 100908)
@@ -2374,5 +2374,5 @@
  * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
  */
-static DECLCALLBACK(int) rtFsNtfsFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
+static DECLCALLBACK(int) rtFsNtfsFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
 {
     PRTFSNTFSFILE pThis = (PRTFSNTFSFILE)pvThis;
@@ -2391,5 +2391,8 @@
         rc = rtFsNtfsAttr_Read(pThis->pShared->pData, off, pSgBuf->paSegs[0].pvSeg, cbRead);
         if (RT_SUCCESS(rc))
+        {
             pThis->offFile = off + cbRead;
+            RTSgBufAdvance(pSgBuf, cbRead);
+        }
         Log6(("rtFsNtfsFile_Read: off=%#RX64 cbSeg=%#x -> %Rrc\n", off, pSgBuf->paSegs[0].cbSeg, rc));
     }
@@ -2418,4 +2421,5 @@
                 pThis->offFile = off + cbRead;
                 *pcbRead = cbRead;
+                RTSgBufAdvance(pSgBuf, cbRead);
             }
             else
@@ -2432,5 +2436,5 @@
  * @interface_method_impl{RTVFSIOSTREAMOPS,pfnWrite}
  */
-static DECLCALLBACK(int) rtFsNtfsFile_Write(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
+static DECLCALLBACK(int) rtFsNtfsFile_Write(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
 {
     PRTFSNTFSFILE pThis = (PRTFSNTFSFILE)pvThis;
@@ -2451,5 +2455,8 @@
         Log6(("rtFsNtfsFile_Write: off=%#RX64 cbToWrite=%#zx -> %Rrc\n", off, cbToWrite, rc));
         if (RT_SUCCESS(rc))
+        {
             pThis->offFile = off + cbToWrite;
+            RTSgBufAdvance(pSgBuf, cbToWrite);
+        }
         if (pcbWritten)
             *pcbWritten = RT_SUCCESS(rc) ? cbToWrite : 0;
@@ -2466,4 +2473,5 @@
             if (pcbWritten)
                 *pcbWritten = cbWritten;
+            RTSgBufAdvance(pSgBuf, cbWritten);
             rc = VERR_EOF;
         }
Index: trunk/src/VBox/Runtime/common/fs/xfsvfs.cpp
===================================================================
--- trunk/src/VBox/Runtime/common/fs/xfsvfs.cpp	(revision 99739)
+++ trunk/src/VBox/Runtime/common/fs/xfsvfs.cpp	(revision 100908)
@@ -1474,5 +1474,5 @@
  * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
  */
-static DECLCALLBACK(int) rtFsXfsFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
+static DECLCALLBACK(int) rtFsXfsFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
 {
     PRTFSXFSFILE pThis = (PRTFSXFSFILE)pvThis;
@@ -1491,5 +1491,8 @@
         rc = rtFsXfsInode_Read(pThis->pVol, pThis->pInode, (uint64_t)off, pSgBuf->paSegs[0].pvSeg, cbRead, NULL);
         if (RT_SUCCESS(rc))
+        {
             pThis->offFile = off + cbRead;
+            RTSgBufAdvance(pSgBuf, cbRead);
+        }
         Log6(("rtFsXfsFile_Read: off=%#RX64 cbSeg=%#x -> %Rrc\n", off, pSgBuf->paSegs[0].cbSeg, rc));
     }
@@ -1518,4 +1521,5 @@
                 pThis->offFile = off + cbRead;
                 *pcbRead = cbRead;
+                RTSgBufAdvance(pSgBuf, cbRead);
             }
             else
@@ -1532,5 +1536,5 @@
  * @interface_method_impl{RTVFSIOSTREAMOPS,pfnWrite}
  */
-static DECLCALLBACK(int) rtFsXfsFile_Write(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
+static DECLCALLBACK(int) rtFsXfsFile_Write(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
 {
     RT_NOREF(pvThis, off, pSgBuf, fBlocking, pcbWritten);
