Skip to content

v1.4 build 1070

Choose a tag to compare

@derfsss derfsss released this 24 Feb 14:41

What's New in v1.4

Build 1067 — READ CAPACITY (16) for disks >= 2TB

READ CAPACITY (10) returns a 32-bit last LBA capped at 0xFFFFFFFF (~2TB). ensure_geometry_cached() now falls back automatically to READ CAPACITY (16) when it detects the sentinel, obtaining the true 64-bit last LBA. total_blocks is now uint64 throughout. dg_TotalSectors in TD_GETGEOMETRY is clamped to 0xFFFFFFFF for compatibility with the 32-bit DriveGeometry field.

Build 1068 — Accurate SCSI Error -> io_Error Mapping

All non-GOOD SCSI completions previously mapped to the generic HFERR_BadStatus (45), losing sense-key information that filesystems use for error recovery. A new map_scsi_error() helper decodes the fixed-format sense key and returns the appropriate AmigaOS error code: TDERR_WriteProt, TDERR_DiskChanged, TDERR_BadSecHdr, TDERR_BadDriveType, IOERR_NOCMD, etc. Applied at all four completion sites in Harvest and DoIO.

Build 1069 — SCSI INQUIRY VPD Pages

Standard INQUIRY (EVPD=0) still passes through to VirtIO unchanged. For EVPD=1 (Vital Product Data), three pages are now synthesised locally:

  • Page 0x00 — Supported VPD Pages list (0x00, 0x80, 0x83)
  • Page 0x80 — Unit Serial Number: VIRTIOSCSI-T
  • Page 0x83 — Device Identification: T10 vendor designation

Unsupported EVPD page codes return CHECK CONDITION ILLEGAL REQUEST / INVALID FIELD IN CDB (ASC 0x24).

Build 1070 — MAX_INFLIGHT Increased to 16

MAX_INFLIGHT increased from 8 to 16, doubling concurrent block I/O requests each unit task can sustain. Memory overhead is approximately 34 KB additional MEMF_SHARED per unit (~68 KB total for two units). No code changes required beyond the single #define.


Full changelog: https://github.com/derfsss/VirtualSCSIDevice/blob/master/HISTORY.md