I'm trying to implement USB mass storage class in user mode so I could build upon that to experiment with proprietary SCSI CDBs. Reading seems to work well, except that when a write request is less than the maximum possible amount (usually out_aio_blocks_per_endpoint * out_aio_blocks_max_packet_count but when both are 1 it's somehow 1024 bytes instead of 512 when working under high speed mode) the EndpointOUTFile.onComplete callback will not get called.
I don't think EndpointOUTFile has any complex logic in it on its own so maybe this is an issue in libaio or an issue caused by some misconfiguration of libaio?
Some background: This is over USB HighSpeed with 512 bytes max packet size, default out_aio_blocks_per_endpoint and out_aio_blocks_max_packet_count, and with a custom build of libaio 0.3.113 targeting glibc 2.34.
Also all the CBWs seem to arrive just fine. It's only the data that got truncated.
I'm trying to implement USB mass storage class in user mode so I could build upon that to experiment with proprietary SCSI CDBs. Reading seems to work well, except that when a write request is less than the maximum possible amount (usually
out_aio_blocks_per_endpoint * out_aio_blocks_max_packet_countbut when both are 1 it's somehow 1024 bytes instead of 512 when working under high speed mode) theEndpointOUTFile.onCompletecallback will not get called.I don't think
EndpointOUTFilehas any complex logic in it on its own so maybe this is an issue in libaio or an issue caused by some misconfiguration of libaio?Some background: This is over USB HighSpeed with 512 bytes max packet size, default
out_aio_blocks_per_endpointandout_aio_blocks_max_packet_count, and with a custom build of libaio 0.3.113 targeting glibc 2.34.Also all the CBWs seem to arrive just fine. It's only the data that got truncated.