Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Why does mass storage send a 16k data packet into multiple data packets? #406

Open
junxiaojun opened this issue Nov 23, 2023 · 3 comments
Open

Comments

@junxiaojun
Copy link

Problem

private fun transferOneCommand(command: CommandBlockWrapper, inBuffer: ByteBuffer): Int

I have a 16k data packet. Why is it divided into 5 reads? Can I read 16k data packets at once? Instead of subcontracting to read

Expected behavior

Actual behavior

Stacktrace of Excpetion

(if exists)

Code where problem occurs

@junxiaojun
Copy link
Author

@magnusja

@magnusja
Copy link
Owner

Depends on the flash drive. Oftentimes, some support larger ones, some do not.

But anyways, the ScsiWrite and Read commands currently only support some smaller chunk sizes.
See here, https://github.com/magnusja/libaums/blob/develop/libaum
Screenshot 2023-11-24 at 21 37 49
s/src/main/java/me/jahnen/libaums/core/driver/scsi/commands/ScsiRead10.kt

Currently, there is a read command 32, which probably speeds up transfer by a lot if usb drive supports it. See here: https://www.seagate.com/files/staticfiles/support/docs/manual/Interface%20manuals/100293068j.pdf
Screenshot 2023-11-24 at 21 39 03

I am happy to take a PR. But as the USB spec is complex, it is hard to support each of these flawlessly.

@junxiaojun
Copy link
Author

@magnusja
Thank you. I am very happy to see your reply. The problem has been solved. Thank you very much.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants