VirtualBox

Ignore:
Timestamp:
Aug 19, 2023 2:57:05 AM (18 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
158845
Message:

IPRT,Storage,Puel: Changed the pfnRead and pfnWrite VFS methods and the RTVfsIoStrmSgRead, RTVfsIoStrmSgWrite, RTVfsFileSgRead and RTVfsFileSgWrite APIs to advance pSgBuf and respect the incoming position just like RTFileSgRead & RTFileSgWrite.

Location:
trunk/src/VBox/Runtime/common/fs
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/fs/extvfs.cpp

    r99739 r100908  
    17161716 * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
    17171717 */
    1718 static DECLCALLBACK(int) rtFsExtFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
     1718static DECLCALLBACK(int) rtFsExtFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
    17191719{
    17201720    PRTFSEXTFILE pThis = (PRTFSEXTFILE)pvThis;
     
    17331733        rc = rtFsExtInode_Read(pThis->pVol, pThis->pInode, (uint64_t)off, pSgBuf->paSegs[0].pvSeg, cbRead, NULL);
    17341734        if (RT_SUCCESS(rc))
     1735        {
    17351736            pThis->offFile = off + cbRead;
     1737            RTSgBufAdvance(pSgBuf, cbRead);
     1738        }
    17361739        Log6(("rtFsExtFile_Read: off=%#RX64 cbSeg=%#x -> %Rrc\n", off, pSgBuf->paSegs[0].cbSeg, rc));
    17371740    }
     
    17601763                pThis->offFile = off + cbRead;
    17611764                *pcbRead = cbRead;
     1765                RTSgBufAdvance(pSgBuf, cbRead);
    17621766            }
    17631767            else
     
    17741778 * @interface_method_impl{RTVFSIOSTREAMOPS,pfnWrite}
    17751779 */
    1776 static DECLCALLBACK(int) rtFsExtFile_Write(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
     1780static DECLCALLBACK(int) rtFsExtFile_Write(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
    17771781{
    17781782    RT_NOREF(pvThis, off, pSgBuf, fBlocking, pcbWritten);
  • trunk/src/VBox/Runtime/common/fs/fatvfs.cpp

    r98103 r100908  
    21652165 * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
    21662166 */
    2167 static DECLCALLBACK(int) rtFsFatFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
     2167static DECLCALLBACK(int) rtFsFatFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
    21682168{
    21692169    PRTFSFATFILE     pThis   = (PRTFSFATFILE)pvThis;
     
    22302230    if (pcbRead)
    22312231        *pcbRead = cbRead;
     2232    RTSgBufAdvance(pSgBuf, cbRead);
    22322233    return rc;
    22332234}
     
    23272328 * @interface_method_impl{RTVFSIOSTREAMOPS,pfnWrite}
    23282329 */
    2329 static DECLCALLBACK(int) rtFsFatFile_Write(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
     2330static DECLCALLBACK(int) rtFsFatFile_Write(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
    23302331{
    23312332    PRTFSFATFILE     pThis   = (PRTFSFATFILE)pvThis;
     
    24012402    if (pcbWritten)
    24022403        *pcbWritten = cbWritten;
     2404    RTSgBufAdvance(pSgBuf, cbWritten);
    24032405    return rc;
    24042406}
  • trunk/src/VBox/Runtime/common/fs/isomaker.cpp

    r98103 r100908  
    72807280 * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
    72817281 */
    7282 static DECLCALLBACK(int) rtFsIsoMakerOutFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
     7282static DECLCALLBACK(int) rtFsIsoMakerOutFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
    72837283{
    72847284    PRTFSISOMAKEROUTPUTFILE pThis     = (PRTFSISOMAKEROUTPUTFILE)pvThis;
     
    73967396    if (pcbRead)
    73977397        *pcbRead = cbRead;
     7398    RTSgBufAdvance(pSgBuf, cbRead);
    73987399    return rc;
    73997400}
  • trunk/src/VBox/Runtime/common/fs/isovfs.cpp

    r98103 r100908  
    21192119 * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
    21202120 */
    2121 static DECLCALLBACK(int) rtFsIsoFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
     2121static DECLCALLBACK(int) rtFsIsoFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
    21222122{
    21232123    PRTFSISOFILEOBJ  pThis   = (PRTFSISOFILEOBJ)pvThis;
     
    21402140    /* Update the file position and return. */
    21412141    pThis->offFile = off + offDelta;
     2142    RTSgBufAdvance(pSgBuf, offDelta);
     2143
    21422144    return rc;
    21432145#else
  • trunk/src/VBox/Runtime/common/fs/ntfsvfs.cpp

    r98103 r100908  
    23742374 * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
    23752375 */
    2376 static DECLCALLBACK(int) rtFsNtfsFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
     2376static DECLCALLBACK(int) rtFsNtfsFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
    23772377{
    23782378    PRTFSNTFSFILE pThis = (PRTFSNTFSFILE)pvThis;
     
    23912391        rc = rtFsNtfsAttr_Read(pThis->pShared->pData, off, pSgBuf->paSegs[0].pvSeg, cbRead);
    23922392        if (RT_SUCCESS(rc))
     2393        {
    23932394            pThis->offFile = off + cbRead;
     2395            RTSgBufAdvance(pSgBuf, cbRead);
     2396        }
    23942397        Log6(("rtFsNtfsFile_Read: off=%#RX64 cbSeg=%#x -> %Rrc\n", off, pSgBuf->paSegs[0].cbSeg, rc));
    23952398    }
     
    24182421                pThis->offFile = off + cbRead;
    24192422                *pcbRead = cbRead;
     2423                RTSgBufAdvance(pSgBuf, cbRead);
    24202424            }
    24212425            else
     
    24322436 * @interface_method_impl{RTVFSIOSTREAMOPS,pfnWrite}
    24332437 */
    2434 static DECLCALLBACK(int) rtFsNtfsFile_Write(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
     2438static DECLCALLBACK(int) rtFsNtfsFile_Write(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
    24352439{
    24362440    PRTFSNTFSFILE pThis = (PRTFSNTFSFILE)pvThis;
     
    24512455        Log6(("rtFsNtfsFile_Write: off=%#RX64 cbToWrite=%#zx -> %Rrc\n", off, cbToWrite, rc));
    24522456        if (RT_SUCCESS(rc))
     2457        {
    24532458            pThis->offFile = off + cbToWrite;
     2459            RTSgBufAdvance(pSgBuf, cbToWrite);
     2460        }
    24542461        if (pcbWritten)
    24552462            *pcbWritten = RT_SUCCESS(rc) ? cbToWrite : 0;
     
    24662473            if (pcbWritten)
    24672474                *pcbWritten = cbWritten;
     2475            RTSgBufAdvance(pSgBuf, cbWritten);
    24682476            rc = VERR_EOF;
    24692477        }
  • trunk/src/VBox/Runtime/common/fs/xfsvfs.cpp

    r99739 r100908  
    14741474 * @interface_method_impl{RTVFSIOSTREAMOPS,pfnRead}
    14751475 */
    1476 static DECLCALLBACK(int) rtFsXfsFile_Read(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
     1476static DECLCALLBACK(int) rtFsXfsFile_Read(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbRead)
    14771477{
    14781478    PRTFSXFSFILE pThis = (PRTFSXFSFILE)pvThis;
     
    14911491        rc = rtFsXfsInode_Read(pThis->pVol, pThis->pInode, (uint64_t)off, pSgBuf->paSegs[0].pvSeg, cbRead, NULL);
    14921492        if (RT_SUCCESS(rc))
     1493        {
    14931494            pThis->offFile = off + cbRead;
     1495            RTSgBufAdvance(pSgBuf, cbRead);
     1496        }
    14941497        Log6(("rtFsXfsFile_Read: off=%#RX64 cbSeg=%#x -> %Rrc\n", off, pSgBuf->paSegs[0].cbSeg, rc));
    14951498    }
     
    15181521                pThis->offFile = off + cbRead;
    15191522                *pcbRead = cbRead;
     1523                RTSgBufAdvance(pSgBuf, cbRead);
    15201524            }
    15211525            else
     
    15321536 * @interface_method_impl{RTVFSIOSTREAMOPS,pfnWrite}
    15331537 */
    1534 static DECLCALLBACK(int) rtFsXfsFile_Write(void *pvThis, RTFOFF off, PCRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
     1538static DECLCALLBACK(int) rtFsXfsFile_Write(void *pvThis, RTFOFF off, PRTSGBUF pSgBuf, bool fBlocking, size_t *pcbWritten)
    15351539{
    15361540    RT_NOREF(pvThis, off, pSgBuf, fBlocking, pcbWritten);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette