From: Michael McMaster Date: Tue, 12 Oct 2021 11:44:51 +0000 (+1000) Subject: Fix for writes with sector sizes larger than 512 bytes X-Git-Tag: v6.4.13~4 X-Git-Url: http://git.codesrc.com/gitweb.cgi?a=commitdiff_plain;h=2ba69bc812aabcc14e5cba7ddea74fbaea2ee235;p=SCSI2SD-V6.git Fix for writes with sector sizes larger than 512 bytes --- diff --git a/CHANGELOG b/CHANGELOG index 9b37972e..7971604f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +? 6.4.13 + - Fix SCSI writes with sector sizes larger than 512. + + 20210810 6.4.12 - Fix USB disconnect issue when no SD card is installed. diff --git a/src/firmware/config.c b/src/firmware/config.c index 2efb7ff2..451ad623 100755 --- a/src/firmware/config.c +++ b/src/firmware/config.c @@ -36,7 +36,7 @@ #include -static const uint16_t FIRMWARE_VERSION = 0x064C; +static const uint16_t FIRMWARE_VERSION = 0x064D; // Optional static config extern uint8_t* __fixed_config; diff --git a/src/firmware/disk.c b/src/firmware/disk.c index 45b18aa0..43c58e55 100755 --- a/src/firmware/disk.c +++ b/src/firmware/disk.c @@ -893,11 +893,21 @@ void scsiDiskPoll() // use sg_dd from sg_utils3 tools to test. uint32_t rem = totalSDSectors - i; - uint32_t sectors = rem < maxSectors ? rem : maxSectors; + uint32_t sectors; + if (rem <= maxSectors) + { + sectors = rem; + } + else + { + sectors = maxSectors; + while (sectors % sdPerScsi) sectors--; + } + if (useSlowDataCount) { - scsiSetDataCount(sectors * bytesPerSector); + scsiSetDataCount((sectors / sdPerScsi) * bytesPerSector); } for (int scsiSector = i; scsiSector < i + sectors; ++scsiSector)