VirtualBox

Changeset 24213 in vbox


Ignore:
Timestamp:
Oct 30, 2009 5:51:30 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
54161
Message:

ISCSIHDDCore.cpp: another bugfix for the SCSI_SERVICE_ACTION_IN_16/SCSI_SVC_ACTION_IN_READ_CAPACITY_16 request. zero the output buffer for the capacity reads. log errors. right format types.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/ISCSIHDDCore.cpp

    r24178 r24213  
    490490                                                   pszFormat, va);
    491491    va_end(va);
     492
     493#ifdef LOG_ENABLED
     494    va_start(va, pszFormat);
     495    Log(("iscsiError(%d/%s): %N\n", iLine, pszFunction, pszFormat, &va));
     496    va_end(va);
     497#endif
    492498    return rc;
    493499}
     
    25962602    uint8_t cdb_cap[16];
    25972603
    2598     memset(cdb_cap, '\0', sizeof(cdb_cap));
     2604    RT_ZERO(data12);
     2605    RT_ZERO(cdb_cap);
    25992606    cdb_cap[0] = SCSI_SERVICE_ACTION_IN_16;
    26002607    cdb_cap[1] = SCSI_SVC_ACTION_IN_READ_CAPACITY_16;   /* subcommand */
     2608    cdb_cap[10+3] = sizeof(data12);                     /* allocation length (dword) */
    26012609
    26022610    sr.enmXfer = SCSIXFER_FROM_TARGET;
     
    26182626        pImage->cbSector = RT_BE2H_U32(*(uint32_t *)&data12[8]);
    26192627        pImage->cbSize = pImage->cVolume * pImage->cbSector;
    2620         if (pImage->cVolume == 0 || pImage->cbSector == 0)
     2628        if (pImage->cVolume == 0 || pImage->cbSector != 512 || pImage->cbSize < pImage->cVolume)
    26212629        {
    26222630            rc = iscsiError(pImage, VERR_VD_ISCSI_INVALID_TYPE,
    2623                             RT_SRC_POS, N_("iSCSI: target address %s, target name %s, SCSI LUN %lld reports media sector count=%lu sector size=%lu"),
     2631                            RT_SRC_POS, N_("iSCSI: target address %s, target name %s, SCSI LUN %lld reports media sector count=%llu sector size=%u"),
    26242632                            pImage->pszTargetAddress, pImage->pszTargetName,
    26252633                            pImage->LUN, pImage->cVolume, pImage->cbSector);
     
    26302638        uint8_t cdb_capfb[10];
    26312639
     2640        RT_ZERO(data8);
    26322641        cdb_capfb[0] = SCSI_READ_CAPACITY;
    26332642        cdb_capfb[1] = 0;   /* reserved */
     
    26582667            pImage->cbSector = (data8[4] << 24) | (data8[5] << 16) | (data8[6] << 8) | data8[7];
    26592668            pImage->cbSize = pImage->cVolume * pImage->cbSector;
    2660             if (pImage->cVolume == 0 || pImage->cbSector == 0)
     2669            if (pImage->cVolume == 0 || pImage->cbSector != 512)
    26612670            {
    26622671                rc = iscsiError(pImage, VERR_VD_ISCSI_INVALID_TYPE,
    2663                                 RT_SRC_POS, N_("iSCSI: fallback capacity detectio for target address %s, target name %s, SCSI LUN %lld reports media sector count=%lu sector size=%lu"),
     2672                                RT_SRC_POS, N_("iSCSI: fallback capacity detectio for target address %s, target name %s, SCSI LUN %lld reports media sector count=%llu sector size=%u"),
    26642673                                pImage->pszTargetAddress, pImage->pszTargetName,
    26652674                                pImage->LUN, pImage->cVolume, pImage->cbSector);
Note: See TracChangeset for help on using the changeset viewer.

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