https://bugzilla.kernel.org/show_bug.cgi?id=219027 Bug ID: 219027 Summary: The SCSI can't adjust Max xfer length (blocks) with different storage device Product: SCSI Drivers Version: 2.5 Hardware: All OS: Linux Status: NEW Severity: high Priority: P3 Component: Other Assignee: scsi_drivers-other@xxxxxxxxxxxxxxxxxxxx Reporter: 983292588@xxxxxx Regression: No My storage device CPU has a 64kB (limited by hardware) buffer used to cache reads/writes which means it can only cache up to 128 blocks(512Byte) of memory. But the Linux source code says that for USB2.0, the default max_sectors=240 blocks. So the SCSI Write-10 and Read-10 command has a total-blocks field that can be up to 240 blocks (120KB) for USB2.0. When originally testing the product on Windows 11 it never writes more than 128 blocks at a time. However, when tested on Linux it sometimes writes more than 128 blocks(240 blocks as setting above), which causes the usb storage device to crash. Is there a way to tell the Linux host OS not to request more than 128 blocks? My storage device's firmware has implemented block limit VPD page (page = 0xB0), and it works well on Windows 10/11. I even set the block limit to be 64 blocks, it's OK too. Because before the data transfer, the windows host issue an SCSI inquiry order with the VPD PAGE CODE = 0xB0, so the device could transmit the block limits information to the host. And then the windows host could adjust the amount of data transferred. However, on Linux or MacOS, the host does not appear to be running the block limits command. So maybe the host doesn't know what is the block limits. Then the write/read blocks number beyond the buffer size. -- You may reply to this email to add a comment. You are receiving this mail because: You are watching the assignee of the bug.